Let your coding agent delegate to other coding agents.
Ask Claude Code to get a review from Codex, or have Codex hand a bug to Grok in Cursor. agentctl launches the other agent's CLI, tracks the run, and brings the answer back, even if the agent that asked has moved on or lost its context.
You, in Claude Code:
> Have Codex review this branch, then send its findings back and ask it to fix them.
What Claude runs:
$ agentctl delegate --request-file review.json --prompt-file review.md --wait --content
exec-snack-need-scrap-group-correct-marriage state=completed harness=codex
<Codex's review>
$ agentctl continue exec-snack-need-scrap-group-correct-marriage \
--request-key fix-01 --prompt-file fix.md --wait --content
<the same Codex session, now applying its fixes>
You talk to your agent in plain language. agentctl ships a skill that teaches the agent these commands, so you never write the JSON yourself.
Pre-1.0: commands, JSON output, and config formats may still change.
- Ask for a model by name. "codex", "grok", or "claude" resolves to the right CLI, model, and flags from your config. Your agent doesn't need to know any other CLI's flags.
- Set it up once, use it on every machine. Keep your agent and model choices in one Git repository. Each machine pulls the same config, and the installer adds the agentctl skill to every agent CLI it finds.
- Work can outlive its parent.
delegate --detachreturns a tracked execution ID while an independent native owner runs the task. Collect once withawait <id> --content. See the lifecycle contract for recovery and authority limits. - Answers don't get lost. Every run gets an ID and a stored result. If the
asking agent times out, crashes, or starts a new session,
agentctl inboxshows what finished andagentctl resultreturns the answer. Retrying with the same request key returns the original run instead of starting a second one.
agentctl doesn't replace your agent CLIs, proxy model APIs, or store your credentials or transcripts. Each CLI keeps its own login, permissions, and sessions.
agentctl children discovers retained attributed work for the current caller.
Its completeness claim covers stable membership of that retained index; mutations
between pages fail closed. Lost remote receipts still
require identical-key recovery, and existing parent-graph retention remains in
force. See child work and its coverage boundaries.
| Agent | Executable |
|---|---|
| Claude Code | claude |
| Codex | codex |
| Cursor | cursor-agent |
| Devin | devin |
| Hermes | hermes |
| ZCode | zcode |
| OMP | omp |
| OpenClaw | openclaw |
| OpenCode | opencode |
| Any CLI with structured output | configured |
Follow-up turns and steering depend on what each CLI supports;
agentctl capabilities <agent> reports the current answer. agentctl can also
dispatch work to Multica agents on other
machines.
Download the archive for your platform and SHA256SUMS from the
latest release,
verify it, and run the bundled installer:
grep " agentctl_<version>_darwin_arm64.tar.gz\$" SHA256SUMS | shasum -a 256 -c -
tar -xzf agentctl_<version>_darwin_arm64.tar.gz
cd agentctl_<version>_darwin_arm64
scripts/install.sh --binary "$PWD/agentctl"
agentctl doctorReleases are built for macOS and Linux on arm64 and amd64. The binary goes in
~/.local/bin, and the installer adds the agentctl skill to each agent CLI it
detects. agentctl updates itself once a day; agentctl update policy notify
or off changes that.
To build from source instead, you need Go:
git clone https://github.com/Git-on-my-level/agentctl.git
cd agentctl
make ci
go build -o build/agentctl ./cmd/agentctlList the agents and models you want to delegate to in
~/.config/agentctl/config.json. Only listed entries can be launched by name,
and default breaks ties when a name matches more than one entry:
{
"schema_version": 1,
"default_profile": "local",
"profiles": {
"local": {
"agent_preferences": {
"mode": "advisory",
"preferred": [
{"agent": "codex", "family": "gpt", "model": "<codex model>", "speed": "regular", "default": true},
{"agent": "cursor", "family": "grok", "model": "<cursor model>", "speed": "regular"},
{"agent": "claude-code", "family": "claude", "model": "<claude model>"}
]
}
}
}
}agentctl config doctorTo share this across machines, commit the same JSON as config-bundle.json in
a Git repository and point each machine at it:
agentctl config source init --remote git@github.com:you/agentctl-config.git
agentctl config source update # pull later changesagentctl adds flags that skip an agent's approvals or sandbox only when your config grants it. See Structured delegation for permissions, workspace trust, and matching rules, and Configuration for everything else.
agentctl help lists every command; agentctl help <command> explains one.
- Structured delegation
- Follow-up turns and steering
- Running several agents at once
- Adapters
- Architecture
- State, security, and privacy
- Roadmap
To contribute, see Contributing. Report vulnerabilities as described in Security.
Apache License 2.0. Third-party notices are in NOTICE.
Caller attribution and bounded read-only child discovery: child work.