A desktop cockpit for running many parallel Claude Code sessions, each in its own terminal pane, across selectable workspace folders. One app, two platforms: on Windows agents run inside WSL, on macOS they run natively.
No accounts, no backend, no telemetry. SwarmEye rides entirely on your existing Claude Code login; the usage widget reads Claude Code's own OAuth token read-only and talks to nothing but api.anthropic.com.
📖 Full documentation — features, the task board, skills, every option, shortcuts and troubleshooting.
- Workspaces — each folder is a tile in the left rail; the selected one decides where new agents start.
- Agent panes — launch as many agents as you want, a terminal each, auto-arranged into a grid you can resize and rearrange (or place by hand with auto-organize off), with search, transcript export, dictation and drag-and-drop file paths.
- Live agent state — panes read Claude Code's hooks, not output timing: working (naming the tool), waiting on you, or done.
- Branch switcher — each pane's git chip shows the workspace branch; click it to list local and remote branches, check one out, or create a new one.
- Task board — queue work ahead of time with a model, permission mode, effort, priority and category; start it now, on a usage budget, or at the next session window.
- Skills — install Claude Code skills from GitHub, and see the ones your agents wrote themselves.
- Sessions survive restarts — agents live in a dedicated tmux server, so quitting only detaches them.
- Usage widget — the real 5-hour and weekly limits from Claude's own OAuth usage API.
Both platforms need Node.js 20+, Claude Code installed and logged in with claude on the PATH, and tmux (strongly recommended — it's what lets agents survive an app restart; without it, quitting kills every running agent).
| Windows | macOS | |
|---|---|---|
| Where agents run | Inside WSL2 | Natively |
claude must be installed |
inside WSL | on the Mac |
| tmux | inside WSL | brew install tmux |
Node for npm install |
Windows Node, not WSL's | any |
| Python (dictation only) | inside WSL | xcode-select --install provides it |
-
Install WSL2 and a Linux distro, if you haven't:
wsl --install -
Install Claude Code inside WSL and log in. From a WSL shell:
claudeclaudemust be on the PATH inside WSL — SwarmEye launches agents there, not on the Windows side. -
Install tmux inside WSL (recommended):
sudo apt install -y tmux -
Clone and install.
npm installmust run with Windows Node — from PowerShell orcmd.exe, not from a WSL shell:git clone https://github.com/TimBreaksStuff/SwarmEye.git cd SwarmEye npm installFrom WSL, prefix it:
cmd.exe /c "npm install".No Visual Studio build tools are needed —
node-ptyships prebuilt binaries and the native rebuild step is disabled. -
Run — double-click
SwarmEye.bat, or:npm start
-
Install Claude Code and log in:
claude -
Install tmux (recommended):
brew install tmux -
Clone and install:
git clone https://github.com/TimBreaksStuff/SwarmEye.git cd SwarmEye npm install -
Run — or double-click
SwarmEye.command(chmod +x SwarmEye.commandonce first):npm start
macOS asks for microphone permission the first time you use dictation. The app is unsigned — if Gatekeeper blocks a built .app, right-click it and choose Open once.
Click the dashed + tile in the left rail to add your first workspace folder, then + Coding Agent in the top bar to spawn an agent in it.
Dictation is not installed by npm install — it's a Python virtualenv plus a ~465 MB speech model, far too heavy to force on everyone. Everything runs locally via faster-whisper; audio never leaves your machine.
Install it either way:
- From inside the app —
⚙Options → Dictation engine → Install. Progress streams into a log box, and the mic works immediately afterwards without restarting. - From a terminal:
npm run setup:stt # macOS npm run setup:stt:win # Windows (runs the same script inside WSL)
On a slow CPU, npm run setup:stt -- base fetches a smaller, faster, less accurate model.
Both routes run the same script, both are safe to re-run, and both install into ~/.local/share/swarmeye/stt (~680 MB total — delete that folder to undo it). Missing prerequisites are reported with the exact command to fix them rather than failing cryptically, and nothing is ever installed with sudo on your behalf.
npm run dist # Windows → dist/SwarmEye <version>.exe (single portable executable)
npm run dist:mac # macOS → dist/SwarmEye-<version>-*.zip
Build each on its own platform.
npm run publish:github # macOS / WSL shell
npm run publish:github:win # Windows, runs the same script inside WSL
Pushes a curated copy of this repo — everything needed to install and run SwarmEye, plus this README, the changelog and the docs/screenshot — to the public GitHub mirror. Internal-only files stay on the private Gitea remote.
PolyForm Noncommercial 1.0.0 — free for anyone to use, copy, modify and share for any noncommercial purpose. Selling SwarmEye or using it in a commercial product is not permitted.
