Coding got faster.
Managing agents didn't.
octomux is a local dashboard for Claude Code and Cursor agents. Run agents that keep going without you — looping until tests pass, waking on a cron, dispatching each other. Then read every diff in one place and decide what merges.
On your machine, on the Claude or Cursor subscription you already pay for. Reach it from your desk, Slack, or your phone.
$ npm install -g octomux && octomux init
cd your-repo && octomux start → localhost:7777
More agents isn’t the upgrade.
Owning the merge is.
Spinning up parallel work got easy. Knowing what five agents did while you were in a meeting did not.
They don’t stop at the first error
Give a task a verify command and it re-runs itself in fresh context until that command passes. Put it on a cron and it does that at 3am.
One inbox, not ten tabs
Every “allow this?” lands in one place. Reply once and the agent keeps going. The tab title tells you when something is waiting.
Review is a workstation, not a rubber stamp
An agent drafts a walkthrough and inline comments against the real diff. You read it in-app and decide. Nothing reaches GitHub until you say so.
It’s wherever you are
Desk, Slack, Telegram, or your phone over Tailscale. Same fleet, same inbox, no cloud in the middle.
Dispatch it. Let it run. Own the merge.
The same three beats whether you have one agent going or fifteen.
Describe the task. Pick Claude or Cursor.
Type what you want, paste a Jira or Linear link, or drop in a whole list and get one agent per line. Every task gets its own git worktree and branch, so five agents can edit auth.ts at once without touching your working tree.
The whole fleet on one wall.
Every running agent’s live terminal, tiled. Spot the stuck one instantly. Permission prompts collect in a single inbox instead of scattering across panes — answer once and everyone keeps moving.
Told what matters, before you read a line.
A review agent opens with a verdict, a risk and effort read, and a short ranked list of things to actually look at — each one linked to the exact line, grounded on the real diff. Start from there, drop into the full diff where it matters, and publish as one batched GitHub review when you accept it. octomux spots the PR by branch and closes the task when it merges.
It keeps going
when you don’t.
An agent that stops at the first red test is a chore. These two turn a prompt into work that finishes on its own — and leaves a record of what it did.
Work that shows up on its own.
Put a task on a cron and stop remembering to kick it off. Overnight log triage that opens a fix PR by breakfast. A doc-drift sweep that catches the README lying about a flag. A Friday digest of everything that merged.
- Trigger builder, timezone, model, and timeout — every knob in the UI, no YAML
- Give it a
verifycommand and it loops until that command exits 0 - Override the prompt per schedule; export any of it as JSON
One prompt becomes an epic.
Hand an agent a goal and it writes the spec, splits it into independent tasks, and dispatches each into its own worktree. You watch the parent plan and the children code from one view — and nothing starts until you approve the plan.
- Each child task arrives as a plan with the exact files it intends to touch
- Approve, amend, or reject before a single line gets written
- Dependencies are respected — independent work fans out immediately
Every firing — scheduled, looped, or orchestrated — lands in one Runs feed with a one-sentence result, so catching up is scrolling a list instead of opening ten terminals.
Your fleet isn’t stuck at your desk.
It runs on one machine you own. You reach it from whatever you happen to be holding.
On your machine
- macOS and Linux via the npm CLI
- A macOS desktop app if you'd rather not keep a terminal open
- Nothing leaves the host — no cloud sync, no telemetry, your
.envstays put
From your phone
- Host it on a box, join it to a Tailscale tailnet, open it anywhere
- The dashboard is built for a phone screen, terminals included
- Only tailnet devices can reach the port, and a token gates the rest
From chat
- A Slack app and a Telegram bot that talk to the same fleet
- Kick off work, answer a permission prompt, or ask what shipped
- Keep long-lived agents with their own system prompt on their own channel
Two commands and you're running.
$ npm install -g octomux && octomux init
Against the alternatives.
| vibe-kanban | Conductor | Emdash | octomux | |
|---|---|---|---|---|
| License | MIT (community*) | Closed | Open source | MIT, open source |
| Fully local, no cloud | Now local* | Cloud account | Yes | Yes |
| One permission inbox | No | No | No | Yes |
| Monitor grid | No | No | No | Yes |
| Self-verifying loops | No | No | No | Yes |
| Cron schedules | No | No | No | Yes |
| Review + human-gated publish | Partial | Partial | No | Yes |
| Recursive orchestration | No | No | No | Yes |
| Reach it from your phone | No | No | Partial (SSH) | Yes (tailnet) |
| Claude Code + Cursor | Yes (10+) | Yes | Yes (20+) | Yes |
| Platform | macOS/Linux/Win | macOS only | macOS/Linux/Win | macOS + Linux |
* Bloop, the company behind vibe-kanban, wound down in early 2026; it continues as a community project.
Verified 2 Aug 2026 against each project’s own docs. Something out of date? Open an issue and we’ll fix the row.
Common questions.
I already run parallel agents — why try octomux?
Starting agents is solved. Everything after isn’t. octomux is the layer for what happens once they’re running: one permission inbox, the whole fleet on one grid, loops that re-run until your verify command passes, cron schedules, and a review workstation you go through before anything merges.
What does it cost to run?
Nothing beyond what you already pay. octomux is MIT licensed and adds no inference cost of its own — it drives the Claude Code or Cursor subscription you already have.
What exactly is a “loop”?
A task with a verify command attached. The agent works, octomux runs the command, and if it exits non-zero the agent restarts in fresh context holding just the failure. It repeats until the command passes, the iteration cap is hit, or it stops making progress. /loops shows the ledger: what each pass changed, whether verify went green, what it cost.
Can it run work on a schedule?
Yes. Put a task on a cron from the Schedules page — nightly log triage, a doc-drift sweep, a Friday digest — and read what came out of it in the Runs feed. No YAML to hand-write.
Does it run on Linux?
Yes — the CLI runs on macOS and Linux. There’s also a macOS desktop app if you’d rather not keep a terminal open.
Can I use it from my phone?
Yes. Host it on a box, put both devices on a Tailscale tailnet, and start with octomux start --bind 0.0.0.0. The dashboard is built for a phone screen, terminals included. You can also drive the same fleet from Slack or Telegram.
Does it work with Cursor?
Yes, per task. Putting Cursor on a branch Claude wrote is a cheap second opinion — a different model reads the diff without inheriting the first one’s assumptions.
What if two agents need the same file?
They can’t collide. Each task runs in its own git worktree on its own branch, so five agents can edit auth.ts at once and your working tree never moves.
Does an agent post to GitHub without me?
No. Review comments are drafted locally against the real diff and sit there until you accept them. When you do, they publish as one batched review. Reject a comment with a reason and it remembers for next time.
Does my code leave my machine?
No. Everything runs locally. No cloud sync, no telemetry.
What if my laptop reboots?
Run octomux start. Tasks, branches, terminals, and review progress all come back.
Walk away.
It keeps going.
Loops keep looping and schedules keep firing for as long as the host is up — put it on a spare Mac mini or a Linux box and check in from your phone. Reboot the host and octomux start brings every task, branch and review back.
$ npm install -g octomux && octomux init