Agents & statuses

BeSwarm recognizes the coding agent running in each tab and tracks its status. Agent commands act on the recognized agent currently in a tab.

Supported agents

beswarm agent kinds lists the agents your build recognizes:

KindExecutableKindExecutable
pipicopilotcopilot
claudeclaudekimikimi
codexcodexkirokiro-cli
geminigeminidroiddroid
cursorcursor-agentampamp
devindevingrokgrok
agyagyhermeshermes
clineclinekilokilo
ompompqodercliqodercli
mastracodemastracodeqwenqwen
opencodeopencodemakimaki
musemusemcodemcode

Any other program still runs in a tab — it just isn't tracked as an agent.

Statuses

StatusMeaning
workingMid-turn.
doneFinished, and nobody has acknowledged it yet. Ready for input.
idleWaiting for input, and you've seen it.
blockedA permission prompt or chooser is up. agent prompt refuses a blocked agent; answer it with agent send-keys.
unknownAn agent is present but detection can't classify it. It doesn't prove completion.

How detection works

Each agent has a detection manifest: a set of rules that read the agent's screen and terminal title for spinners, permission prompts and idle prompts. Inspect them with:

beswarm agent manifests                  # the active manifest per agent
beswarm agent explain claude --file screen.txt
beswarm agent explain --target api       # run detection on a live agent

explain prints every rule's verdict, which is the fastest way to see why an agent shows the status it does.

Override a manifest

Put your own manifest at ~/.config/beswarm/agent-detection/<agent>.toml. The menu's "reload config" applies it without a restart.

Names and ids

  • A terminal id looks like 18d47dc212160d20-1 and is printed by status and agent list.
  • An agent name matches [a-z][a-z0-9_-]{0,31} and is unique within a session. Set it with agent start --name or agent rename.
  • Always address agents by name or terminal id — never by kind. claude resolves until a second Claude tab exists, and then a script that worked yesterday prompts the wrong agent.