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
View on GitHub →
BeSwarm [default] - 412 MB ⠋
● 1 ● 2 3 +

~/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.

~/code/payments
$ beswarm session start --name payments
# …quit, close the laptop, go home
$ beswarm session attach --name payments
reattached · 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.

~/code/api
$ beswarm worktree add --name feat-auth --workspace api
$ beswarm worktree add --name fix-rate-limit --workspace api
$ beswarm worktree list --workspace api
feat-auth 2 terminals .worktrees/feat-auth
fix-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 list
$ beswarm agent list
api claude working
tests codex blocked ← permission prompt
ui gemini done
research 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.

orchestrator
$ 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

beswarmtmux + scriptsIDE 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✓manualvaries
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