One CLI for every coding agent. Pin, swap, rotate, parallel.
also available as ag.
Run agents
01Run any model through any CLI
Keep Claude Code's interface, swap in Kimi K2.5, MiniMax M2.5, GLM 5, Qwen3 Coder, or DeepSeek through OpenRouter. One key in your Keychain, every preset wired up. Run the model you want at the price you want.
$ agents profiles add kimi $ agents run kimi "refactor the queue worker"
Rotate across accounts — never hit a usage limit
Have multiple Claude logins? --rotate picks the least-used one automatically. agents usage shows the rate-limit gauge per agent so you can plan ahead. One subscription, multiple windows, zero wasted quota.
$ agents run claude --rotate "run the full test suite" $ agents usage
Chain agents in a pipeline
Unix pipe composition across different models. Each agent resolves to the project-pinned version, with the right skills and MCP servers already synced. Chain by strength, swap one for another, script them in CI — the interface stays the same.
$ agents run claude "Find auth vulnerabilities in src/" \ | agents run codex "Fix the issues Claude found" \ | agents run gemini "Write regression tests for the fixes"
Pin versions per project
cd into the project and every agents call resolves to those versions automatically. Like .nvmrc, but for AI. Nobody else does this.
# agents.yaml
agents:
claude: "2.1.113"
codex: "0.116.0"Run them in parallel
02Parallel agents, one command
DAG dependencies (--after), isolated worktrees per teammate, live status. Spawn five Claudes and two Codex on the same task, wind them down with agents teams disband.
$ agents teams create pricing $ agents teams add pricing claude "rewrite endpoint" -n be $ agents teams add pricing codex "build route" -n fe $ agents teams add pricing claude "run tests" -n qa --after be,fe $ agents teams start pricing --watch
grep your AI history
Every transcript from every agent, indexed and searchable. Find that fix from Tuesday — doesn't matter which CLI wrote it. Replay as markdown, filter by project, stream live with sessions tail.
$ agents sessions "stripe webhook signature" $ agents sessions a7f3e2c1 --markdown
Configure once
03Install once, sync everywhere
Skills, MCP servers, slash commands, hooks, permissions — installed once, synced to every active agent version. No more claude mcp add then codex mcp add then editing Gemini's config file by hand.
$ agents skills add gh:yourname/python-expert $ agents install mcp:com.notion/mcp $ agents commands add gh:yourname/commands
Your agent memory, on every machine
rsync your sessions and config between laptop, desktop, and server. attach points ~/.claude/ (and friends) at the synced location so sessions write directly to the shared drive.
$ agents drive remote you@desktop.local $ agents drive push $ agents drive attach
One config repo, every harness
~/.agents/ is the canonical config source. Write your commands as markdown, your rules as AGENTS.md, your hooks as scripts — and agents-cli syncs them into each harness's native format: markdown for Claude and Gemini, TOML for Codex, .cursorrules for Cursor. Fork it and push your own via agents repo push.
$ tree ~/.agents ~/.agents/ ├── commands/ # slash commands ├── skills/ # reusable knowledge packs ├── mcp/ # MCP server definitions ├── hooks/ # lifecycle hooks ├── memory/ # agent instructions (AGENTS.md) └── permissions/
Run them in the background
04A browser your agents can drive
Full Chrome DevTools Protocol — navigate, click, type, screenshot, read console + network, record video. Hook it into any agent run. Replaces a cloud browser service with a local one you already have logged in.
$ agents browser start work $ agents browser navigate https://example.com $ agents browser click ref_3 $ agents browser screenshot $ agents browser console
Schedule agents on a cron
Recurring background work, plus one-shot --at "14:30". Scheduler auto-starts on first add. Standups, weekly digests, nightly audits — your agents working while you sleep.
$ agents routines add standup \ --schedule "0 9 * * 1-5" \ --agent claude \ --prompt "Draft a standup from yesterday's git log"
Keychain-backed secrets
No plaintext .env files, no leaked tokens in shell history. Bundles live in macOS Keychain, iCloud-synced across your machines, injected as env vars only at run time.
$ agents secrets create prod $ agents secrets add prod STRIPE_API_KEY $ agents run claude "deploy the worker" --secrets prod
Why
- You use multiple coding agents and their configs drift
- You want a skill, MCP server, or slash command installed everywhere at once
- You want to pin agent versions per project like
.nvmrc - You want to chain agents in scripts, CI, or cron jobs
- You want it open, local, and yours — not a cloud SaaS
vs every other way to run agents
Most tools give you one piece. agents gives you all of them.
| Capability | agents-cli | Claude Code alone | Cursor | Run CLIs by hand | OpenCode |
|---|---|---|---|---|---|
| Pin versions per project (.nvmrc-style) | ✓ | — | — | — | — |
| Run multiple agents (Claude + Codex + Gemini) from one CLI | ✓ | — | — | ~ | — |
| Swap underlying model (Kimi, GLM, DeepSeek via OpenRouter) | ✓ | — | ~ | — | ✓ |
| Rotate across multiple accounts to dodge rate limits | ✓ | — | — | — | — |
| Parallel teams with DAG dependencies | ✓ | — | — | — | — |
| Local browser via CDP (drive any site) | ✓ | — | — | — | — |
| Cross-agent session search & replay | ✓ | ~ | — | — | ~ |
| Cron / scheduled routines | ✓ | — | — | ~ | — |
| Keychain-backed secrets (no .env files) | ✓ | — | — | — | — |
| Sync skills/MCP/commands across all installed agents | ✓ | ~ | — | — | ~ |
| 100% local, open-source, no cloud SaaS | ✓ | — | — | ✓ | ✓ |
- agents-cli✓
- Claude Code alone—
- Cursor—
- Run CLIs by hand—
- OpenCode—
- agents-cli✓
- Claude Code alone—
- Cursor—
- Run CLIs by hand~
- OpenCode—
- agents-cli✓
- Claude Code alone—
- Cursor~
- Run CLIs by hand—
- OpenCode✓
- agents-cli✓
- Claude Code alone—
- Cursor—
- Run CLIs by hand—
- OpenCode—
- agents-cli✓
- Claude Code alone—
- Cursor—
- Run CLIs by hand—
- OpenCode—
- agents-cli✓
- Claude Code alone—
- Cursor—
- Run CLIs by hand—
- OpenCode—
- agents-cli✓
- Claude Code alone~
- Cursor—
- Run CLIs by hand—
- OpenCode~
- agents-cli✓
- Claude Code alone—
- Cursor—
- Run CLIs by hand~
- OpenCode—
- agents-cli✓
- Claude Code alone—
- Cursor—
- Run CLIs by hand—
- OpenCode—
- agents-cli✓
- Claude Code alone~
- Cursor—
- Run CLIs by hand—
- OpenCode~
- agents-cli✓
- Claude Code alone—
- Cursor—
- Run CLIs by hand✓
- OpenCode✓
Supported agents
Install
# via curl $ curl -fsSL agents-cli.sh | sh # via bun $ bun install -g @phnx-labs/agents-cli # via npm $ npm install -g @phnx-labs/agents-cli