Repository navigation
v0.4.0
AgentBus 0.4 gives agents and people one clear API, the same for every vendor.
What you can do now
- Run a shell command from the chat. A message that starts with
!runs in the session's copy,
on its runner, with no model call. The output is in the conversation, and the next turn sees it. - Start a session in any folder you type. No
-folderflags and no restarts. The connector
checks the folder and keeps it. - codex and agy on runners that hold no secrets. Connect codex (ChatGPT) or agy (Google) once on
control, as with claude. Control renews the sign-ins. Runners never hold one. - agy (Google's Antigravity, Gemini) is a harness, beside claude and codex.
- Each conversation gets a home of its own on a runner. A turn sees none of the runner user's
settings, memory or transcripts, and none of another conversation's. - Every agent gets the folder's
AGENTS.md, whatever its harness, once. - Agents can use the API as tools (MCP), off by default. Set
[agent_api] tools = trueand a
claude or codex turn getslist_agents,ask_agent,review_turn,apply_turnand the rest. - See your runners.
GET /api/v0/runnerslists runners and connectors, online or not, with
the harnesses each one found. - See what AgentBus added to a turn. The
context.addedevent lists the instructions, the
folder'sAGENTS.md, who asked, and the tool server's text. - A failed turn says why, even when the agent gave no reason: the refusal of its last model
call. - Closed sessions read as closed and are never offered to continue.
Changes to the API
The API is now three nouns: agent, session and turn. Every action is on a turn. The old routes are
removed with no alias. The full list is "What 0.4 changes after 0.3" in docs/CLIENT_API.md.
POST /api/v0/turnsanswers{session, turn, state, ...}at once. A turn can bequeued.- Turn states:
queued,running,finished,failed,stopped. POST /api/v0/turns/<id>/stopreplaces cancel.POST /api/v0/turns/<id>/reviewstarts a
review turn.- Model calls:
GET /api/v0/turns/<id>/calls/<call>. Events by page:
GET /api/v0/sessions/<id>/events?turn=. - New:
GET /api/v0/sessions/<id>,PATCH /api/v0/sessions/<id>withclosed: true,
POST /api/v0/sessions/<id>/commands,GET /api/v0/runners,POST /api/v0/mcp. - New events:
command.queued,command.started,command.ran,command.failed,
context.added,tools.listed. - Gone from the client API:
/api/v0/jobs,/api/v0/attempts,/api/v0/workspaces,
/api/v0/calls,/api/v0/turns/<id>/events. - The runner protocol moved to
/api/v0/runner/(protocol 2), with its own doc. Upgrade
control, connectors and runners together: a 0.3 runner cannot talk to 0.4 control. - A connect's view gains
paste. An ended connect keeps no link or code. /docs/llms.txtis short, for an agent to read in one go. The long reference is
/docs/reference.md.
Known limits
- A
!command works only after a session's first turn has ended. The agent does not answer a
command by itself: it sees the output with your next message. A later release changes both. - A session stays on one runner. Its copy lives there.
- agy on a runner is not yet checked with a real turn. claude and codex on a runner were.
- agy gets no instructions of AgentBus's own and no MCP tools. A turn with
forbidset, or with
subagents = false, is refused on agy. - agy's Google sign-in on runners is your own risk with Google (its terms, clause 6). It is off
unless you setsubscriptions_on_runners = "own". - OpenRouter turns show a cost of $0.
- Copies on shared or network disks are slow. Keep the data folder on the machine's own disk.
- Network control is Linux only, and off by default.
- Not yet tested on a real Ubuntu 24.04 machine. CI runs the gate on
ubuntu-latest. - The
v0API may still change.
Upgrading from 0.3
- Read "What 0.4 changes after 0.3" in
docs/CLIENT_API.md. A 0.3 client needs changes. - Back up control's data folder first. Copies made by 0.3 stay where they are and still work.
Install
brew install staysup/tap/agentbus, orcurl -fsSL https://raw.githubusercontent.com/staysup/agentbus/main/install.sh | sh
AgentBus is open code under FSL-1.1-ALv2. Each release becomes Apache 2.0 two years after it is
published.