Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
116 commits
Select commit Hold shift + click to select a range
1cd30e9
Codex: record the effective profile with each seat (#1504)
fujibee Sep 29, 2026
f2e134d
agmsgd beta: skeleton (schema, owner/lifecycle, control socket, statu…
fujibee Sep 29, 2026
db2a9a3
feat(install): operation lock and completion manifest for agmsgd beta…
fujibee Sep 29, 2026
8e7ebbe
Restore the Codex profile recording lost in the install-lock squash (…
fujibee Sep 29, 2026
78c3fd4
feat: one agmsg command (npm entry dispatches to the runtime, install…
fujibee Sep 29, 2026
c8e2ae9
fix(agmsgd): recheck install state before ownership claim (#1514)
fujibee Sep 29, 2026
cc16cae
tests: keep install cancellation children from holding Bats pipes (#1…
fujibee Sep 29, 2026
96b43b5
Add Codex queue delivery and seat status (#1520)
fujibee Sep 29, 2026
20b71f8
Add daemon beta switching and recovery guidance (#1523)
fujibee Sep 30, 2026
fc84a85
Merge main into integration/agmsgd-beta
fujibee Sep 30, 2026
0ba7bec
Merge main into integration/agmsgd-beta (#1528)
fujibee Sep 30, 2026
815eb2a
fix: handle database readers and immediate stops during daemon startu…
fujibee Sep 30, 2026
55e3cb6
Merge main into integration/agmsgd-beta
fujibee Oct 1, 2026
fb00588
Merge main into integration/agmsgd-beta (#1538)
fujibee Oct 1, 2026
38d54c1
Merge main into integration/agmsgd-beta
fujibee Oct 1, 2026
3a2c88b
Merge main into integration/agmsgd-beta (#1545)
fujibee Oct 1, 2026
2a1aa62
test: wait for lock holder acknowledgement in launcher fixture (#1547)
fujibee Oct 1, 2026
d01c329
feat: allow the measured Windows Codex queue release (#1548)
fujibee Oct 1, 2026
cd05d3b
Merge main into integration/agmsgd-beta
fujibee Oct 2, 2026
f57b32d
Merge main into integration/agmsgd-beta (#1557)
fujibee Oct 2, 2026
06735c0
Merge main into integration/agmsgd-beta (5)
fujibee Oct 3, 2026
5ffb2a9
Merge pull request #1567 from fujibee/sync/main-into-agmsgd-beta-5
fujibee Oct 3, 2026
6581135
Allow Windows Codex queue from the measured minimum release (#1573)
fujibee Oct 5, 2026
91cbd5c
Merge main into integration/agmsgd-beta (6)
fujibee Oct 5, 2026
645eef6
Merge pull request #1576 from fujibee/sync/main-into-agmsgd-beta-6
fujibee Oct 5, 2026
81433b8
fix: skip shared launcher for custom command installs (#1578)
fujibee Oct 5, 2026
5cd0f6d
feat(agmsgd): deliver inbox notices to Claude Code seats through the …
fujibee Oct 5, 2026
4f5d9b6
Merge main into integration/agmsgd-beta (7)
fujibee Oct 6, 2026
1d8f920
Merge pull request #1582 from fujibee/sync/main-into-agmsgd-beta-7
fujibee Oct 6, 2026
8d11674
README: document the Claude Code native delivery path (#1577) (#1588)
fujibee Oct 13, 2026
54d6e24
release: 1.6.0-rc.1 (#1583)
fujibee Oct 14, 2026
15892e4
fix: persist Codex executable and expire failed queue starts (#1595)
fujibee Oct 14, 2026
8c86a4c
fix: present readable daemon status without duplicate seat rows (#1600)
fujibee Oct 15, 2026
7ab801d
daemon: explain and stop when systemd user services are unavailable (…
fujibee Oct 15, 2026
4e53e85
claude-code session start: pick the delivery seat from registered pai…
fujibee Oct 15, 2026
82d30b7
Claude channel: keep one inbox nudge until the seat or socket changes…
fujibee Oct 15, 2026
c01af83
test(codex): wait for the detached launcher before cleanup (#1603)
fujibee Oct 15, 2026
aab4b50
fix(status): exclude never-recorded seats from older destinations (#1…
fujibee Oct 15, 2026
8a00134
Drop a placement record whose team is gone instead of warning on ever…
fujibee Oct 15, 2026
92394d4
daemon: use kern.bootsessionuuid as the macOS boot id (#1601)
fujibee Oct 15, 2026
95a2bf2
fix(daemon): bring an existing install.db up to schema.sql on --updat…
fujibee Oct 15, 2026
8debf46
Codex SessionStart: rebind a restarted session to its seat when the s…
fujibee Oct 15, 2026
c912279
daemon disable: commit the intent before stopping the service so the …
fujibee Oct 15, 2026
fc26a0b
release: 1.6.0-rc.2 (#1611)
fujibee Oct 15, 2026
b8568d4
fix(agmsgd): confirm a Claude Code nudge absorbed mid-turn (#1615) [s…
fujibee Oct 15, 2026
631bdde
fix(agmsgd): release a Codex pending only on proof its writers are go…
fujibee Oct 15, 2026
80a8079
fix(agmsgd): find a Claude Code transcript by session id when the pro…
fujibee Oct 15, 2026
03969b2
fix(agmsgd): get Windows enable through generation, lock and task reg…
fujibee Oct 15, 2026
546a552
daemon start: find and record Node when none is recorded (#1620) [ski…
fujibee Oct 15, 2026
8694c78
install --update: restart an enabled agmsgd and backfill the Codex pa…
fujibee Oct 15, 2026
dd36826
release: 1.6.0-rc.3 (#1623)
fujibee Oct 15, 2026
d9bcb7e
Stop two false warnings in the Codex app (#1632)
fujibee Oct 16, 2026
801b641
watch.sh: stop re-arming once this seat's delivery is native (#1633)
fujibee Oct 16, 2026
91951c1
watch.sh: validate full native destination record before stopping (#1…
fujibee Oct 16, 2026
7b93a71
Start agmsgd on Windows: run Git Bash by full path and listen on a na…
fujibee Oct 16, 2026
01432fe
Do not warn that agmsgd is stopped while an update is restarting it (…
fujibee Oct 16, 2026
ddcf83f
Show a recorded Codex destination neutrally unless a notice failed to…
fujibee Oct 16, 2026
69a728c
Show agmsgd delivery for Codex projects without a hooks file (#1638) …
fujibee Oct 16, 2026
1e49fca
Rebind a Codex seat after /clear from the SessionStart hook (#1639)
fujibee Oct 16, 2026
3fb012a
release: 1.6.0-rc.4 (#1640)
fujibee Oct 16, 2026
71f7f8e
Stop queueing nudges for a seat whose recorded socket is gone (#1650)
fujibee Oct 17, 2026
04ef6e1
Keep agmsgd running through a busy database and log any other poll fa…
fujibee Oct 17, 2026
9ffdd6d
Codex: record the profile the TUI runs in, and name a missing rollout…
fujibee Oct 17, 2026
c85fd10
Prove the /clear rebind from the Codex seat's own record (#1659)
fujibee Oct 20, 2026
1a5b659
Confirm a Claude Code notice from the transcript position recorded be…
fujibee Oct 20, 2026
0bb5956
Harden the Claude Code transcript position check and heal stuck pendi…
fujibee Oct 20, 2026
60b2921
Send Claude Code nudges with the session token and no claimed permiss…
fujibee Oct 20, 2026
bbb904d
release: 1.6.0-rc.5 (#1667)
fujibee Oct 20, 2026
5c6a31e
[skip ci] daemon: strip CRLF from sqlite3's answers in the enable/sta…
fujibee Oct 20, 2026
c6a10ee
[skip ci] install manifest: don't reject a Windows-shaped TMPDIR prob…
fujibee Oct 20, 2026
bbac0d6
Name bypass mode in nudges to bypass-mode Claude Code seats, retry a …
fujibee Oct 20, 2026
f1b1944
[skip ci] agmsgd: record why a start attempt failed, so status can sh…
fujibee Oct 20, 2026
112fce1
[skip ci] herdr: retry a rename that only failed because detection la…
fujibee Oct 20, 2026
f8e1f7f
[skip ci] codex: stop moving a seat onto the new thread after /clear …
fujibee Oct 20, 2026
ac9ce6a
release: 1.6.0-rc.6 (#1678)
fujibee Oct 20, 2026
0522c8e
Pin that a permission-mode transcript row decides the mode a nudge is…
fujibee Oct 20, 2026
f268d7c
[skip ci] codex: do not carry a dead owner into the next seat record …
fujibee Oct 21, 2026
3cf5336
[skip ci] codex: choose a seat after SessionStart only when the proje…
fujibee Oct 21, 2026
426b7f5
[skip ci] placement: do not read a Codex claimant as gone from herdr'…
fujibee Oct 21, 2026
ed09164
[skip ci] docs: agmsgd bypass-mode delivery and 1.5.x upgrade notes (…
fujibee Oct 21, 2026
558303b
Spawn the sync engine's children with windowsHide so they survive the…
fujibee Oct 21, 2026
e034911
Deliver agmsgd's nudges to Claude Code seats on native Windows (#1687)
fujibee Oct 21, 2026
d90e990
Wait out a store SQLite could not open for a moment instead of lettin…
fujibee Oct 21, 2026
e3e5738
Check agmsgd's liveness from Git Bash with the daemon's own judgement…
fujibee Oct 21, 2026
923a826
Survive a power loss: flush roster state, set aside an unreadable cop…
fujibee Oct 21, 2026
b069b31
Give the lock-holding driver its input by shell redirect on Windows, …
fujibee Oct 21, 2026
05c15e2
Restart a sync engine that stood down for an update, from the updated…
fujibee Oct 21, 2026
580945e
Report a set-aside roster state in the engine log (#1694)
fujibee Oct 21, 2026
e9ec389
release: 1.6.0-rc.7
fujibee Oct 21, 2026
d74f96c
Merge pull request #1695 from fujibee/release/1.6.0-rc.7
fujibee Oct 21, 2026
4e542e9
Fix the Codex startup test for the sole-seat rule (#1696) [skip ci]
fujibee Oct 21, 2026
6f0b4d0
ci: run the full suite on the 1.6.0-rc.7 head
fujibee Oct 21, 2026
3e1606c
setup.sh: stop exporting its working directory as TMP (#1697)
fujibee Oct 21, 2026
99472ba
Merge remote-tracking branch 'origin/main' into sync/main-into-agmsgd…
fujibee Oct 21, 2026
72be735
fix(hooks): preserve unread messages when stdout is closed (#1698)
fujibee Oct 21, 2026
a2745e2
fix(storage): require exclusive ownership inside directory locks (#1701)
fujibee Oct 21, 2026
3f0962a
Merge remote-tracking branch 'origin/integration/agmsgd-beta' into sy…
fujibee Oct 22, 2026
301db8f
[skip ci] Sync main into integration/agmsgd-beta (8) (#1699)
fujibee Oct 22, 2026
df0930b
fix(sync): arbitrate autostart cleanup with exclusive ownership (#1704)
fujibee Oct 22, 2026
638afc0
fix(storage): print a usable timeout remedy for marker locks (#1705)
fujibee Oct 22, 2026
6527ada
release: 1.6.0-rc.8
fujibee Oct 22, 2026
113eb9c
Merge pull request #1706 from fujibee/release/1.6.0-rc.8
fujibee Oct 22, 2026
db0c453
Find the Windows Claude Code pid from a hook (#1708) [skip ci]
fujibee Oct 22, 2026
141ebed
Report seat_pid_unresolved when a hook cannot publish a destination (…
fujibee Oct 22, 2026
c0d57d5
Exit 0 when agmsgd steps aside for an update (#1711) [skip ci]
fujibee Oct 22, 2026
6c8be9c
release: 1.6.0-rc.9
fujibee Oct 22, 2026
e25e6aa
Merge pull request #1712 from fujibee/release/1.6.0-rc.9
fujibee Oct 22, 2026
b2c1f88
README: agmsgd Windows Claude Code notes; installer: point at agmsgd …
fujibee Oct 22, 2026
3dd9711
session-start: introduce agmsgd once to an install that has not turne…
fujibee Oct 22, 2026
524af9d
Offer agmsgd as the recommended delivery choice; add agmsg delivery (…
fujibee Oct 22, 2026
e8d3702
Make monitor (legacy) a real opt-out from agmsgd for the project (#17…
fujibee Oct 22, 2026
801d666
docs/design: note what changed in 1.6.0 at the top of the agmsgd reco…
fujibee Oct 22, 2026
039ad28
docs: align wording on Monitor, agmsgd and the daemon; fix stale deta…
fujibee Oct 22, 2026
ac17b03
README.ja.md: translate the missing sections and fix stale wording (#…
fujibee Oct 22, 2026
f8ecb39
Explain the Monitor instruction when agmsgd is chosen (#1724) [skip ci]
fujibee Oct 22, 2026
bbecc0b
Say agmsgd takes over once it confirms the session's destination (#17…
fujibee Oct 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "agmsg",
"description": "Cross-agent messaging via SQLite. Send messages between CLI AI agents. No daemon, no network.",
"version": "1.5.3",
"version": "1.6.0-rc.9",
"author": {
"name": "fujibee"
},
Expand Down
2 changes: 1 addition & 1 deletion .github/enforced-assertions-baseline
Original file line number Diff line number Diff line change
@@ -1 +1 @@
621
612
1 change: 1 addition & 0 deletions .github/scripts/bats-file-seconds.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -163,3 +163,4 @@ test_watch_process_count.bats 17
test_watch_stuck_map.bats 4
test_watch.bats 216
test_where.bats 3
test_agmsgd_switch.bats 10
22 changes: 13 additions & 9 deletions ARCHITECTURE.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,24 @@

## ゴール

Claude Code、Codex、Gemini CLI、Antigravity、そして将来登場するエージェントランタイムの、あらゆる組み合わせの間で動作するクロスエージェントメッセージングのプリミティブ — デーモンなし、ネットワークなし、共有クラウドなし。メッセージは単一マシン上のローカルファイルを通じて移動し、受信側はホストランタイムが提供するフックやストリーミング機構を通じて通知を受ける。
Claude Code、Codex、Gemini CLI、Antigravity、そして将来登場するエージェントランタイムの、あらゆる組み合わせの間で動作するクロスエージェントメッセージングのプリミティブ — 必須のデーモンなし、ネットワークなし、共有クラウドなし。agmsg 本体はデーモンなしで動く。任意の agmsgd(1.6.0 beta)は、ユーザーが選んだときだけ入る常駐サービスである。メッセージは単一マシン上のローカルファイルを通じて移動し、受信側はホストランタイムが提供するフックやストリーミング機構を通じて通知を受ける。

デフォルトのインストールは **bash + sqlite3 のみ**で動作しなければならない。それを超える機能はすべてオプトインであり、ユーザーが同意した場合に限り追加の依存関係を要求してよい。

## 3軸ドライバーモデル
## 4軸ドライバーモデル

agmsg は3つの直交する軸を中心に構築されており、各軸には常にちょうど1つの**ドライバー (driver)** がアクティブになる。ドライバーとは、固定されたプロトコルの背後にある差し替え可能な実装である。
agmsg は4つの直交する軸を中心に構築されており、各軸には常にちょうど1つの**ドライバー (driver)** がアクティブになる(terminal 軸はメンバーごと。下記参照)。ドライバーとは、固定されたプロトコルの背後にある差し替え可能な実装である。

| 軸 | 抽象化する対象 | バンドルされているドライバー |
|---|---|---|
| **storage(ストレージ)** | メッセージとチームの状態がどこに存在し、どのようにクエリされるか | `sqlite`(デフォルト)、`jsonl-duckdb` |
| **agent(エージェント)** | ランタイムごとの差異(フック形式、設定ファイルの場所、monitor ツールの有無) | `claude-code`、`codex`、`gemini`、`antigravity`、`copilot` |
| **delivery(配信)** | 受信者にメッセージの到着をどう通知するか | `monitor`、`turn`、`both`、`off` |
| **storage(ストレージ)** | メッセージとチームの状態がどこに存在し、どのようにクエリされるか | `sqlite`(デフォルト)、`jsonl`、`sqlite-sync` |
| **agent(エージェント)** | ランタイムごとの差異(フック形式、設定ファイルの場所、monitor ツールの有無) | `claude-code`、`codex`、`gemini`、`antigravity`、`copilot`、`opencode`、`grok-build`、`cursor`、`devin`、`hermes`(CLI でないメンバー用に `agmsg-app` と `ext-tool`) |
| **delivery(配信)** | 受信者にメッセージの到着をどう通知するか | `monitor`(legacy)、`turn`、`both`、`off`。どれに対応するかは agent タイプごとに決まる(`type.conf` の `delivery_modes=`)。任意の agmsgd デーモンは、Claude Code と Codex のセッションに直接届ける別の手段である |
| **terminal(ターミナル)** | メンバーのホストエージェント CLI が動くペイン、ウィンドウ、プロセスと、その作成・読み取り・信号送信の方法 | `herdr`、`tmux`、`plain`、`orca`、`claude-desktop`、`codex-app` |

3つの軸は独立している。どの storage ドライバーも、どの agent ドライバー・どの delivery モードとも組み合わせ可能である。これらは共通の discovery/config/dependency-check プロトコル(仕様参照)を共有しつつ、軸ごとに固有の操作を公開する。
3つの設定用の軸は独立している。どの storage ドライバーも、どの agent ドライバーとも、その agent ドライバーが対応する delivery モードとも組み合わせ可能である。これらは共通の discovery/config/dependency-check プロトコル(仕様参照)を共有しつつ、軸ごとに固有の操作を公開する。

**terminal は設定ではなく検出される** — セッションは、自分がどの terminal ドライバーの下で動いているかを(どれにも一致しなければ最後の手段である `plain` に落ちて)、指示されるのではなく自分で判断する。それ以外は同じ種類のドライバーであり、固定されたプロトコル(`terminal_*` 関数。[`docs/spec/driver-interface.md`](docs/spec/driver-interface.md) §6 参照)の背後で `herdr`、`tmux`、`orca`、通常の OS ターミナルが交換可能であり、他の3軸と同じ discovery/trust プロトコルを共有する。他の軸と違って、メンバーは terminal の機能が一切なくても機能する — `plain` は「アドレス指定できるペインなし」に縮退するだけで、メッセージングは続く。terminal が加えるのは、他のメンバーのペインを探し、読み、入力する能力だけである。

## ドライバー (driver) と プラグイン (plugin)

Expand All @@ -29,7 +32,7 @@ agmsg は3つの直交する軸を中心に構築されており、各軸には

バンドルされたドライバーは `scripts/drivers/<axis>/` 配下に存在する。`scripts/` の中では、トップレベルの `.sh` ファイルは直接実行可能なコマンドであり、サブディレクトリは実装コードをカテゴリ別にグループ化する(軸ドライバー用の `drivers/`、共有ヘルパー用の `lib/`)。

プラグインパス(`~/.agents/agmsg/plugins/<axis>/<name>/`)は将来の拡張のために予約されており、v1 では未実装である。具体的な外部ドライバーが必要になるまでは、すべてのドライバーがバンドル形式で提供される。いずれも同じプロトコルを通じて発見・ロードされる。
外部ドライバーは `<skill>/plugins/<axis>/<name>/`、または `$AGMSG_PLUGIN_DIRS` に列挙したディレクトリに置く。ユーザーが `agmsg plugin trust <axis>/<name>` でオプトインするまでは無視される。現時点で外部ドライバーを読み込めるのは `types` 軸だけである。バンドルされたドライバーも外部ドライバーも同じプロトコルで発見・ロードされる。[`docs/plugins.md`](docs/plugins.md) と [ADR 0002](docs/adr/0002-driver-discovery-and-plugin-opt-in.md) を参照。

agmsg では *backend*、*extension*、*provider*、*adapter* という用語は使用しない。ユーザー向けドキュメントや CLI において `storage` は「storage driver(ストレージドライバー)」の同義語として書かれる。

Expand All @@ -44,7 +47,7 @@ agmsg では *backend*、*extension*、*provider*、*adapter* という用語は

これにより agmsg 自体は最小限かつプラットフォームに依存しない状態を保てる。ホストエージェントはすでにファイルアクセスやシェルアクセスを信頼されているため、依存関係のインストールはホストエージェントの責務とするのが自然である。

同じ `AGMSG-DIRECTIVE` の仕組みは、他のホストエージェント連携アクション(例: delivery モードが `monitor` に設定されたときに Claude Code に Monitor ツールを呼び出すよう伝える、など)にも使われる。
同じ `AGMSG-DIRECTIVE` の仕組みは、他のホストエージェント連携アクション(例: delivery モードが monitor (legacy) に設定されたときに Claude Code に Monitor ツールを呼び出すよう伝える、など。agmsgd が直接届けるセッションにはこのディレクティブは要らない)にも使われる。

## 失敗時の挙動 (Failure semantics)

Expand Down Expand Up @@ -72,6 +75,7 @@ sqlite ドライバーは、インライン `read` カラムを持つレガシ
| **storage(ストレージ)** | ユーザー向けの文脈における storage 軸、またはそのアクティブなドライバー |
| **AGMSG-DIRECTIVE** | ホストエージェントに特定のアクションを取るよう指示するために stdout に出力される JSON 行 |
| **host agent(ホストエージェント)** | agmsg スクリプトを呼び出すランタイム(Claude Code、Codex、Gemini CLI、Antigravity、…) |
| **placement(配置)** | 1 人のメンバーのペイン/ウィンドウへの `<terminal>:<id>` 参照(例: `tmux:/path/to/socket:%3`) |
| **event log(イベントログ)** | バンドルされた storage ドライバーがクエリの射影元とする、メッセージのライフサイクルイベントの追記専用記録 |

## 関連ドキュメント
Expand Down
16 changes: 8 additions & 8 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ This document describes the internal shape of agmsg — the mental model a contr

## Goal

A cross-agent messaging primitive that works between any combination of Claude Code, Codex, Gemini CLI, Antigravity, and future agent runtimes — with no daemon, no network, no shared cloud. Messages move through local files on a single machine; receivers are notified through whatever hook or streaming mechanism their host runtime provides.
A cross-agent messaging primitive that works between any combination of Claude Code, Codex, Gemini CLI, Antigravity, and future agent runtimes — with no required daemon, no network, no shared cloud. agmsg itself runs without a daemon; the optional agmsgd (1.6.0 beta) is a resident service that is installed only when the user picks it. Messages move through local files on a single machine; receivers are notified through whatever hook or streaming mechanism their host runtime provides.

The default install must work with **bash + sqlite3 only**. Any feature beyond that is opt-in and may require additional dependencies that the user agrees to install.

Expand All @@ -16,12 +16,12 @@ agmsg is built around four orthogonal axes, each of which has exactly one **driv

| Axis | What it abstracts | Bundled drivers |
|---|---|---|
| **storage** | Where messages and team state live, and how they are queried | `sqlite` (default), `jsonl-duckdb` |
| **agent** | Per-runtime differences (hook formats, settings file locations, monitor tool availability) | `claude-code`, `codex`, `gemini`, `antigravity`, `copilot` |
| **delivery** | How a recipient is notified that a message arrived | `monitor`, `turn`, `both`, `off` |
| **terminal** | The pane, window, or process a member's host-agent CLI runs under, and how to create, read, and signal it | `herdr`, `tmux`, `plain`, `orca` |
| **storage** | Where messages and team state live, and how they are queried | `sqlite` (default), `jsonl`, `sqlite-sync` |
| **agent** | Per-runtime differences (hook formats, settings file locations, monitor tool availability) | `claude-code`, `codex`, `gemini`, `antigravity`, `copilot`, `opencode`, `grok-build`, `cursor`, `devin`, `hermes` (plus `agmsg-app` and `ext-tool` for non-CLI members) |
| **delivery** | How a recipient is notified that a message arrived | `monitor` (legacy), `turn`, `both`, `off`; each agent type declares which of these it supports (`delivery_modes=` in its `type.conf`). The optional agmsgd daemon is a further way to deliver to Claude Code and Codex sessions |
| **terminal** | The pane, window, or process a member's host-agent CLI runs under, and how to create, read, and signal it | `herdr`, `tmux`, `plain`, `orca`, `claude-desktop`, `codex-app` |

The three configuration axes are independent: any storage driver can be paired with any agent driver and any delivery mode. They share a common discovery/config/dependency-check protocol (see the spec) but expose axis-specific operations.
The three configuration axes are independent: any storage driver can be paired with any agent driver and any delivery mode that agent driver supports. They share a common discovery/config/dependency-check protocol (see the spec) but expose axis-specific operations.

**terminal is detected, not configured** — a session determines which terminal driver it is running under (or falls back to `plain`, the driver of last resort, if none matches) rather than being told. It is otherwise the same kind of driver: a fixed protocol (`terminal_*` functions, see [`docs/spec/driver-interface.md`](docs/spec/driver-interface.md) §6) behind which `herdr`, `tmux`, `orca`, and a plain OS terminal are interchangeable, and it shares the same discovery/trust protocol as the other three. Unlike them, a member can function with no terminal capability at all — `plain` degrades to "no addressable pane," and messaging keeps working; terminal only adds the ability to locate, read, or type into another member's pane.

Expand All @@ -32,7 +32,7 @@ The three configuration axes are independent: any storage driver can be paired w

Bundled drivers live under `scripts/drivers/<axis>/`. Inside `scripts/`, the top-level `.sh` files are directly-invokable commands; subdirectories group implementation code by category (`drivers/` for axis drivers, `lib/` for shared helpers).

The plugin path (`~/.agents/agmsg/plugins/<axis>/<name>/`) is reserved for a future enhancement and is not implemented in v1. Until a concrete external driver is wanted, all drivers ship bundled. Both are discovered and loaded through the same protocol.
External drivers are dropped into `<skill>/plugins/<axis>/<name>/` or into a directory listed in `$AGMSG_PLUGIN_DIRS`, and are ignored until the user opts in with `agmsg plugin trust <axis>/<name>`. Today only the `types` axis loads external drivers. Bundled and external drivers are discovered and loaded through the same protocol; see [`docs/plugins.md`](docs/plugins.md) and [ADR 0002](docs/adr/0002-driver-discovery-and-plugin-opt-in.md).

agmsg does not use the terms *backend*, *extension*, *provider*, or *adapter*. `storage`, when written in user-facing documentation and CLI, is a synonym for "storage driver".

Expand All @@ -47,7 +47,7 @@ Drivers may require external tools (e.g. the `jsonl-duckdb` storage driver needs

This keeps agmsg itself minimal and platform-agnostic. The host agent is already trusted with file and shell access, so dependency installation is naturally its responsibility.

The same `AGMSG-DIRECTIVE` mechanism is used for other host-agent-coordinated actions (e.g. telling Claude Code to invoke its Monitor tool when delivery mode is set to `monitor`).
The same `AGMSG-DIRECTIVE` mechanism is used for other host-agent-coordinated actions (e.g. telling Claude Code to invoke its Monitor tool when delivery mode is set to monitor (legacy); a session that agmsgd delivers to directly needs no such directive).

## Failure semantics

Expand Down
8 changes: 4 additions & 4 deletions CONTRIBUTING.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
## まず読むもの

- agmsg が何をするものか、どうインストールするかは [`README.md`](README.md) を読むこと。
- メンタルモデル(3軸ドライバ、用語、依存関係管理の考え方)は [`ARCHITECTURE.md`](ARCHITECTURE.md) を読むこと。
- メンタルモデル(4軸ドライバ、用語、依存関係管理の考え方)は [`ARCHITECTURE.md`](ARCHITECTURE.md) を読むこと。
- 設計判断の経緯は [`docs/adr/`](docs/adr/) を眺めること — *なぜ*今の形になっているかが分かる。
- [`docs/spec/`](docs/spec/) ディレクトリには正式な契約(コントラクト)がある。ドライバを実装・拡張する際はこれを参照すること。

## バグ報告と機能要望

[`fujibee/agmsg`](https://github.com/fujibee/agmsg/issues) に issue を立てる。agmsg のバージョン、ホストエージェント(Claude Code / Codex / Gemini CLI / Antigravity)、可能なら最小の再現手順を含めること。
[`fujibee/agmsg`](https://github.com/fujibee/agmsg/issues) に issue を立てる。agmsg のバージョン、ホストエージェント(Claude Code、Codex、Gemini CLI、Antigravity、Copilot CLI、OpenCode、Cursor、Grok Build、Devin、Hermes)、可能なら最小の再現手順を含めること。

## プルリクエスト

Expand All @@ -26,7 +26,7 @@

## リリース

[`RELEASING.md`](RELEASING.md) を参照。手短に言うと: [`VERSION`](VERSION) を上げ、`./scripts/release/sync-version.sh` を実行し、コミットし、`v$(cat VERSION)` としてタグを打ち、push する。あとは CI がやってくれる。
[`RELEASING.md`](RELEASING.md) を参照。手短に言うと: `scripts/release/cut-release.sh <version>` を実行するとリリース PR が用意される。PR とタグの push はそれぞれメンテナーの承認が要り、タグのあとに CI が公開する。

## Architecture Decision Records

Expand Down Expand Up @@ -58,7 +58,7 @@ agmsg は重要な設計判断を記録するために ADR([Architecture Decisio

## ドライバの追加

バンドルされているドライバは `scripts/drivers/<axis>/<name>.sh` にある。(`scripts/` 直下の `.sh` ファイルは直接実行可能なコマンドであり、サブディレクトリは実装コードをまとめたもの。)サードパーティのプラグインドライバは `~/.agents/agmsg/plugins/<axis>/<name>/` にある。どちらも [`docs/spec/driver-interface.md`](docs/spec/driver-interface.md) にある契約を実装する必要がある。
バンドルされているドライバは `scripts/drivers/<axis>/` 配下にある(storage は `<name>.sh`、agent タイプと terminal はマニフェストを含む `<name>/` ディレクトリ)。`scripts/` 直下の `.sh` ファイルは直接実行可能なコマンドであり、サブディレクトリは実装コードをまとめたもの。サードパーティのプラグインドライバは `<skill>/plugins/<axis>/<name>/` か `$AGMSG_PLUGIN_DIRS` のディレクトリにあり、`agmsg plugin trust` したあとにだけ動く([`docs/plugins.md`](docs/plugins.md) 参照)。どちらも [`docs/spec/driver-interface.md`](docs/spec/driver-interface.md) にある契約を実装する必要がある。

新しいバンドルドライバには以下が揃っていることが望ましい:

Expand Down
Loading