Are you the author? Sign in to claim
Open-source mission control for running multiple Claude Code agents across projects - one dashboard, a scheduler, cross-
Mission control for your Claude Code agents. Run, schedule, and babysit many agents across every project — from one console, or from your phone.

Claude Code is a brilliant agent — but it's one agent, in one terminal, on one repo, and everything it knew is gone when the session ends. Clayrune is the layer on top: a dashboard where every project is a tile, every agent is running, and the work keeps moving while you're away from the keyboard.
Clayrune runs on your machine. If the machine sleeps, so does your agent — and Clayrune tells you it did. There's a setting to keep it awake while an agent is working.
▶ Try the live demo — no install · or ⬇ Download for Windows — macOS + Linux + from source below.
Clayrune doesn't replace Claude Code — it runs it. Claude Code is the engine; Clayrune is the cockpit. You reach for it the moment you have more than one project, more than one agent, or work you'd rather not sit and watch.
| Bare Claude Code | Clayrune |
|---|---|
| One repo, one terminal | Every project, one dashboard |
| You're at the keyboard | Scheduled + autonomous agents |
| Session ends, context dies | Cross-session memory |
| Desk-bound | Full control from your phone |
Mostly they don't. Parallelism here is across projects: each project's agent gets its own working directory and its own session, so there is no shared context to corrupt and no shared checkout to fight over.
For the case where two agents genuinely have to work the same repo, turn on Worktree isolation in Settings (off by default). The second and any later concurrent agent on that project is then dropped into its own git worktree on its own branch, so it never writes to your checkout. Committed work is merged back when the session ends; if the merge does not apply cleanly, Clayrune keeps the branch, does not auto-resolve, and tells you it needs a hand. A companion coordination setting lets concurrent agents see what the others are doing instead of finding out in a conflict.
What none of that solves is two agents reasoning about the same file at the same time. Worktrees stop them clobbering the bytes. They do not stop the second agent building on an assumption the first one just invalidated. That part is unsolved.
gh CLIOpen PowerShell (Start → type PowerShell → Enter), paste one line, press Enter:
iwr https://clayrune.io/install.ps1 -useb | iex
It installs the Claude CLI, clones Clayrune, installs dependencies, and drops a
Desktop/Start Menu shortcut. First launch opens the dashboard at
http://localhost:5199.
Prefer a double-click? There's an installer .exe on clayrune.io —
it's unsigned, so Windows shows an "unrecognized app" notice once (More info →
Run anyway). Same install, just the one-time prompt.
Prefer running from source instead? See Running from Source below.
If you prefer running from source instead of the prebuilt exe:
git clone https://github.com/ronle/clayrune.git
cd mission-control
pip install -r requirements.txt
python app.py
Opens a native window with the dashboard. Flask server runs in the background.
git clone https://github.com/ronle/clayrune.git
cd mission-control
pip install flask
python server.py
# Open http://localhost:5199 in your browser
First run: the in-app Settings panel walks you through the port, project directory, agent model, and other settings — no setup script needed.
Prefer a guided, no-clone install? Use the one-command installer at clayrune.io (PowerShell on Windows, one line on macOS / Linux), which drives the whole setup for you.
On first run, a config.json file is created with defaults:
{
"port": 5199,
"shared_rules_path": "data/SHARED_RULES.md",
"projects_base": "/home/you",
"agent_model": "",
"agent_max_turns": 0,
"use_streaming_agent": false,
"user_name": "",
"agent_name": ""
}
| Setting | Description | Default |
|---|---|---|
port | Server port | 5199 |
shared_rules_path | Path to shared rules file (injected into all agent prompts) | data/SHARED_RULES.md |
projects_base | Base directory for project path validation | User home directory |
agent_model | Default Claude model for all projects | "" (CLI default) |
agent_max_turns | Max agent turns per session (0 = unlimited) | 0 |
use_streaming_agent | Enable Mode B persistent agent process | false |
user_name | Your name (shown in agent context) | "" |
agent_name | Agent display name | "" |
You can also set the port via environment variable: MC_PORT=8080 python server.py
claude process per turn. Follow-ups queue and auto-dispatch.use_streaming_agent: true): Persistent process with --input-format stream-json. Follow-ups write directly to stdin for faster responses. Process stays alive between turns.owner/repo)gh CLI for authenticationMEMORY.mdmission-control/
app.py Desktop entry point (pywebview + Flask)
server.py Flask backend (API + static serving)
github_sync.py GitHub Issues sync module
static/
index.html Single-page app (HTML + CSS + JS, no build step)
data/
projects/ Project JSON files (auto-created)
uploads/ File attachments
config.json User configuration (auto-created, gitignored)
installer/ Hosted one-command installer (clayrune.io)
claude CLI as subprocess with streaming JSON outputpython app.py from sourceContributions are welcome! Here's how to get started:
git checkout -b feature/my-featurepython server.py and verify in browserstatic/index.html file — no build step neededserver.py file with Flaskgithub_sync.py (imported by server.py)data/projects/claude CLI is invoked via subprocess.Popen with --output-format stream-jsonMIT — except two source-available-but-proprietary directories:
| Path | License |
|---|---|
Everything else (core: server.py, static/, github_sync.py, mc_remote_iface/, …) | MIT |
mc_remote/ | Proprietary — see mc_remote/PROPRIETARY.md |
mc_tunnel/ | Proprietary — see mc_tunnel/PROPRIETARY.md |
mc_remote + mc_tunnel are the closed platform-binding moat for
clayrune.io; they live in this repo for build convenience but are not
MIT. The open-core seam is mc_remote_iface/ (MIT) — implement that
contract to plug in your own remote-access provider without touching the
proprietary modules. Rationale: docs/remote-access/07-licensing.md.
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
Google's universal MCP server supporting PostgreSQL, MySQL, MongoDB, Redis, and 10+ databases
Official GitHub integration for repos, issues, PRs, and CI/CD workflows