Agents and responsibilities
Roles describe responsibility and authority. A declared role is not a running process, and a reachable agent is not a working one.
Who is who
Mushegh is the head: he plans, delegates, decides, and manages the day. He does not do engineering. Everything development goes to Bagadata, who is the senior of a council of coding CLIs.
| Agent | Responsibility | Implementation |
|---|---|---|
| M.U.S.H.E.G.H. The head of the system. Plans, decomposes, delegates, decides, and manages the day. | src/mushegh/brain/agent.py | |
| Bagadata The development agent. Every kind of engineering work; expands the brief, runs the council, compiles the master plan, assigns it and follows it through. | fleet/Bagadata/bagadata/pipeline.py | |
| Hugh Custody of the physical house. The interlock is checked at the actuator, a ceiling is refused rather than assumed, and the E-Stop cannot be cleared in software. | fleet/Hugh/hugh/interlock.py | |
| Artaxias The protocol desk. Seventy-four protocols, each gated by a password challenge, audited and drillable. | fleet/Artaxias/artaxias/protocols.py | |
| Hasan-Jalal The authorisation plane. Whether an action is allowed, decided before it happens, for every actor including Mushegh. | fleet/Hasan-Jalal/hasan_jalal/policy.py | |
| RUBEN Finance-related role; declared authority remains subject to policy. | fleet/connectors/ruben.py |
The four residents — Bagadata, Hasan-Jalal, Hugh and Artaxias — live in their own folders under fleet/ and are reached by an in-process call. The three connectors beside them reach the agents that are not in this process. How the fleet works.
External worker roster
18 workers have declared domain ownership. Availability, assignments and receipts need separate transport evidence; a domain is not a running process.
| Worker | Declared domain | Declared host |
|---|---|---|
| Goharik | Inbox | hermes |
| Felo | Editorial and performance | hermes |
| Arsen | Media production | openclaw |
| Lika | Projects and meeting execution | hermes |
| Tatev | Personal operations | hermes |
| Tamara | Business and vendor operations | hermes |
| Hrach | Sales and partnerships | hermes |
| Sergey | Customer support and onboarding | openclaw |
| Gagas | Community | openclaw |
| Zara | Security analysis | openclaw |
| Ishkhan | External intelligence | hermes |
| Margo | Infrastructure operations | openclaw |
| Kamo | Knowledge and research | hermes |
| Tigran | Calendar and travel | openclaw |
| Yana | People operations | hermes |
| Mane | Legal obligations | openclaw |
| Davit | Reputation monitoring | openclaw |
| Arin | Independent quality reviewer | openclaw |
Council seats
20 declared seats, each with a measured capability and a role. Capability is a property of the CLI; answering is a property of the credential and the provider. Both are listed so neither is mistaken for the other.
measured 15
The CLI is installed and its one-shot contract was verified against that binary's own help, top-level and subcommand. Installed is not the same as able to answer: a seat still needs its own provider credential, and the table below says which key each one needs.
| Seat | Role | Measured capability |
|---|---|---|
claude-code | deep repo comprehension; large multi-file changes; the default seat | non-interactive, output-format, json |
mcode | this vendor's own model; fastest local iteration | exec, run |
vibe | quick independent read on a diff before it is written | -p/--prompt for headless, --output text/json/streaming, --max-turns, --agent, --workdir/--worktree |
codex | second opinion on architecture; independent reasoning path | exec, non-interactive, print, run |
qwen-code | independent model family, so not a re-run of the others | headless, json, exec, --prompt, --yolo |
opencode | alternative implementation; broad tool-use surface | run, --format json, -m/--model provider/model; MiniMax M plan provider configured |
stagehand | browser/UI verification - the only seat that can SEE a rendered page | exec, json, print, run, stdin |
gemini | very large context; whole-repo questions | installed and `--help` advertises exec, headless, json, non-interactive, output-format, stdin. NOT on the owner's list of nineteen: an extra, declared as one |
antigravity | Google's agent; independent vendor and model family | non-interactive, --print, --prompt, exec, json |
devin | Cognition's terminal agent; strong at whole-change implementation | non-interactive, --print, --prompt, exec, json |
cline | autonomous agent with its own browser use | json, run, stdin, --yolo |
openhands | headless-capable agent with an explicit --headless mode | --headless, --json, --always-approve |
swe-agent | research-bench agent; disciplined about the task spec | run |
qodo-cover | code review and PR handling, not implementation | --json-output |
greptile | code review from the terminal; a review seat | run |
not-drivable 3
Installed, but it cannot be driven unattended on this host. The reason is recorded per seat rather than dropped, so a tool that stops working is visible instead of quietly missing.
| Seat | Role | Measured capability |
|---|---|---|
opendesign | design files; a design seat, not an implementation seat | CORRECTED 2026-10-18 - this row previously read `measured` with argv `opendesign run {task}` and the evidence 'installed and `--help` advertises run'. MEASURED, that is false: `opendesign --help` lists exactly four subcommands - help, open, convert, embed-fonts - and `opendesign run <task>` exits 1 with 'Unkown subcommand run'. The bundle contains no provider, no model and no API-key reference of any kind, so there is no credential that could make it answer a prompt: it converts design files to .octopus and opens them. It is a genuinely useful tool for the owner's frontend work, and it is NOT a council seat. The earlier row was the exact failure this module's own docstring warns about - a row built from `--help` that looks measured and dies on first use - except that the probe recorded a signal the help never showed. |
aider | pair programming; would be a good review seat if it ran | the upstream packaging bug is FIXED on this host: aider 0.86.2 imports `pydub` -> `audioop`, which Python 3.13 removed from the stdlib, and `pyaudioop` (pydub's fallback) does not exist on PyPI at all (404, verified). Installing `audioop-lts` into aider's own tool environment restores the name pydub tries first, and the CLI now starts. It still cannot ANSWER here: with an Anthropic-backed model it returns 'credit balance is too low', and it EXITS 0 while doing so, so its exit code cannot be trusted as a success signal. Blocked on Anthropic credit, not on installation. |
goose | Block's agent; TUI-first, so it belongs to a person not a council | installed from the official Windows release (v1.55.0, Goose-win32-x64.zip), but it exits with a Windows breakpoint code on --help in a headless shell: it is a TUI/desktop application, not a non-interactive CLI. Driving it unattended needs a different surface. |
uninstallable 2
The real tool cannot be installed here at all. The row is kept so the gap is a fact rather than a surprise.
| Seat | Role | Measured capability |
|---|---|---|
plandex | plan-first: writes a plan for another seat to execute | the real Plandex CLI ships no Windows binary - every recent release (cli/v2.2.1 and back) carries darwin assets only. The `plandex` npm package is explicitly a 'security holding package' placeholder, so installing it would install a decoy. Needs WSL, or a Windows build from the vendor. |
r2ai | radare2 reverse engineering; not a coding agent at all | its sdist fails to build here: `ImportError: cannot import name 'list_files_info' from 'huggingface_hub'` - a pre-0.1.0 project incompatible with the current hub API. Separately it is a radare2 reverse-engineering assistant, not a coding agent, so it would not have been a useful seat even if it built. |
fleet/Bagadata/bagadata/u_credentials.py.