Single TUI · 24 agents · macOS & Linux
Run a swarm of AI agents from one terminal
BeSwarm is a terminal workspace manager for AI agents. Run Claude Code, Codex, Gemini and 21 more side by side in persistent sessions, each on its own git worktree.
curl -fsSL https://beswarm.sh/install.sh | sh~/code/api on feat/auth · claude ⠋ working
> Add rate limiting to /login
⏺ Read(src/routes/login.ts)
⏺ Update(src/middleware/rate-limit.ts)
⎿ Added 42 lines, removed 3 lines
⏺ Bash(bun test rate-limit)
⎿ 12 pass, 0 fail
⏺ Rate limiting added: 5 attempts per minute per IP on /login.
⠋ Working… (esc to interrupt)
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
⏵⏵ auto mode on (shift+tab to cycle)
Workflow
Your dev loop, swarmed
Sessions, worktrees and agent status — the three things that break first when you run more than one agent.
Sessions that outlive the window
Every tab is a detached helper process that owns its PTY. Quit the TUI, close the lid, reattach tomorrow — your agents never stopped.
$ beswarm session start --name payments# …quit, close the laptop, go home$ beswarm session attach --name paymentsreattached · 4 agents still running
One worktree per task
Cut a git worktree on its own branch for each task. Each one shows up in the sidebar with its own tab bar, so five agents never share a checkout.
$ beswarm worktree add --name feat-auth --workspace api$ beswarm worktree add --name fix-rate-limit --workspace api$ beswarm worktree list --workspace apifeat-auth 2 terminals .worktrees/feat-authfix-rate-limit 1 terminal .worktrees/fix-rate-limit
Know which agent needs you
beswarm reads each agent's screen and tracks it as working, done, blocked or idle. When one finishes or stops at a permission prompt, you hear it.
$ beswarm agent listapi claude workingtests codex blocked ← permission promptui gemini doneresearch pi idle
Bring your own agent
24 agents, detected on sight
Launch any of them in a tab and beswarm recognizes it — no plugin, no wrapper.
- pi
- claude
- codex
- gemini
- cursor
- devin
- agy
- cline
- omp
- mastracode
- opencode
- copilot
- kimi
- kiro
- droid
- amp
- grok
- hermes
- kilo
- qodercli
- qwen
- maki
- muse
- mcode
Everything in one pane
Built for agents, not bolted on
Skills
Browse skill folders in a panel and hand one to any agent at launch with --skill.
Prompts
Keep reusable prompts in a panel and send them by id with --prompt-id.
MCP tools
See every MCP server your agents can reach in the Tools panel.
Artifacts
Files your agents produce, listed per directory and one click from your file manager.
21 themes
Catppuccin, Dracula, Gruvbox, Nord, Tokyo Night, Solarized and more — dark and light.
Named sessions
Keep one session per project and switch with session attach --name.
Scriptable with --json
list, get and explain print JSON, and exit codes separate failures from usage errors.
Sound alerts
Pick bundled chimes, beeps or buzzers for when an agent finishes or gets blocked.
Use cases
What people run with BeSwarm
Parallel feature work
Give each task its own worktree and agent. Ship an auth feature, a rate-limit fix and a refactor at once without agents trampling one checkout.
Compare agents on one task
Run Claude Code, Codex and Gemini side by side on the same problem, each on its own branch, and keep the best result.
Long-running jobs overnight
Start a session, close the laptop, reattach tomorrow. Agents keep working in detached processes while you are away.
Babysit fewer prompts
Work on something else and get a sound alert when an agent finishes or stops at a permission prompt.
Repeatable team workflows
Hand agents the same skills and saved prompts at launch with --skill and --prompt-id so every run starts the same way.
Script your swarm
Drive sessions, worktrees and agents from scripts or CI with --json output and exit codes that separate failures from usage errors.
beswarm CLI
Agents that drive agents
Every tab can talk to the session. An orchestrator agent can start workers, wait for them, read their output and close them when the job is done.
$ beswarm agent start --name api --agent claude --group build \--prompt "Add rate limiting to /login" --wait$ beswarm agent start --name tests --agent codex --group build \--prompt "Write tests for the rate limiter" --wait$ beswarm agent wait tests --until done,blocked --timeout 600$ beswarm agent read --name tests --source recent-unwrapped --lines 40$ beswarm agent close --group build
Compare
Made for running many agents at once
| beswarm | tmux + scripts | IDE agent panels | |
|---|---|---|---|
| Agents keep running after you close the UI | ✓ | ✓ | — |
| Knows when each agent is working, done or blocked | ✓ | — | partial |
| Git worktree per task, built in | ✓ | manual | varies |
| Works with any CLI agent | ✓ | ✓ | — |
| Drive agents from a CLI with ‑‑json output | ✓ | manual | — |
| Sound alerts on finish or blocked | ✓ | — | varies |
| Runs in any terminal, including over SSH | ✓ | ✓ | — |
FAQ
Questions
What is beswarm?+
A terminal workspace manager for AI coding agents. It organizes terminals into sessions, workspaces, worktrees and tabs, recognizes the coding agent in each tab, and lets you — or another agent — drive them through the beswarm CLI.
Which agents does it support?+
24 today, including claude, codex, gemini, cursor, copilot, grok, opencode and pi. Run beswarm agent kinds for the full list. Any other program still runs in a tab; it just isn't tracked as an agent.
What happens to my agents when I quit?+
They keep running. Each tab is a detached helper process that owns its PTY. Run beswarm again and you reattach to the same session.
How does it know an agent is blocked?+
Each agent has a detection manifest that reads its screen and terminal title for spinners, permission prompts and idle prompts. Statuses are idle, done, working, blocked and unknown.
Can agents control other agents?+
Yes. Any tab can run beswarm agent start, prompt, wait and read, so an orchestrating agent can launch workers, wait on them and read their results.
Which platforms does it run on?+
macOS and Linux on x86_64 and arm64. Update in place with beswarm update.
Let the swarm out.
One command on macOS or Linux. Update later with beswarm update.
curl -fsSL https://beswarm.sh/install.sh | sh