Put a fleet of Claude Code agents
to work — unattended.

chela is a tiny control plane over a single tmux session. It schedules agents, dispatches a TODO list into pull requests, tells you the moment one finishes or blocks, and streams the whole fleet on one live terminal wall — which you can share, end-to-end encrypted. You walk away; the agents keep working.

Get started See what it does
# one tmux session whose windows are your agents
tmux new-session -d -s chela -n researcher

# schedule one, then run the daemon
uv run chela schedule add researcher --every 1h --prompt "Run your cycle."
uv run chela run

Status: early. The core — scheduler, dispatcher, messaging — is solid and tested; the dashboard + live wall is a first-class, separately-installed feature. chela is self-hosted and single-user: you run it on your own machine, driving one Claude account (the whole fleet shares its 5h / weekly rate limits).

Most tools help you talk to agents.

chela is for putting them to work and walking away — and watching them however you already watch tmux: tmux attach, Mosh, or the live terminal-wall dashboard.

◷

Schedule agents

Poke an agent on an interval or cron — every 1h, 0 */8 * * *, or once at a set time. chela types the prompt into its pane when it fires.

⇶

Dispatch TODOs → PRs

Point chela at a WORKFLOW.md. Each open - [ ] becomes a git worktree, an agent that implements it, and a pull request — which an adversarial judge re-reviews before it reaches you.

📥

Closes the loop

An orchestrator is just another agent — it can only act when something messages it, so an agent finishing is invisible to it. chela pushes completions, blocks and deaths back into the orchestrator's own session, gated strictly on idle so a live agent is never interrupted mid-thought. How it works →

▦

The wall

A live grid of every agent's terminal — drag, lock, maximize — with a context-window bar on each tile and 5h / weekly rate-limit pills up top.

Collaborative terminals END-TO-END ENCRYPTED

Share any agent's live terminal over the internet with a link + a pairing code — full-access (watch, type, scroll), multi-user with live Figma-style cursors and a presence facepile, and mobile-friendly. The relay in the middle only ever sees ciphertext; the keys never leave the browsers.

See how it works →

Share a live terminal — end-to-end encrypted

Hand someone a link and a pairing code. They watch, type, and scroll the same session in their browser — everyone sees everyone as live cursors — and the relay in the middle only ever sees ciphertext. chela is web-first collaboration, over the public internet.

Youhost
Relaysees only ciphertext
Joinerlink + code

Link + pairing code

Click Share on any pane. The code is the key — 16 random bytes both browsers turn into AES-256-GCM keys with HKDF, in-browser. A wrong code simply can't decrypt.

Zero-knowledge relay

A dumb WebSocket fan-out that broadcasts opaque frames — it never holds a key, and sees metadata only. Run your own (a small Cloudflare Worker) so even that stays yours.

Everyone's present

Live labeled cursors mapped to the grid, plus a facepile of who's watching (the host gets a ★). Presence rides the same encryption — colorblind-safe, names not just colors.

Mobile & revocable

Phone joiners get an on-screen keys-line, swipe-to-scroll, and touch cursors. Stop a share and the room dies + the code rotates; a topbar kill-switch stops everything at once.

See the fleet

The live terminal wall streams every agent's pane into one grid — and the dashboard tracks each agent's context, cost, schedule, and liveness at a glance.

The live wall, Dispatch board, Kanban and Schedules. On a phone it collapses to a single pane with an agent pill switcher and a keybar — this clip follows your screen.

How it works

01tmux is the source of truth

Discovery is tmux list-windows + pane_current_path — no external state file, no daemon to coordinate with. tmux never lies about what's live.

02One window per agent

Each window of your session is an agent; the window name is its display name. Schedules and messages target it by name.

03Dispatch is isolated

Every task runs in its own worktree on branch <project>-<n>, opens a PR, and auto-closes when you merge — many tasks in flight at once.

04Watch from anywhere

The dashboard binds loopback; put it behind a tailnet or SSH tunnel. The live wall is on by default but only served on a loopback bind (it's a writable shell). Or skip the UI entirely and tmux attach from a phone over Mosh.

Install

Linux or macOS, Python ≥ 3.11, tmux, git, and the claude CLI. The core is two small deps; the dashboard + live wall ship as a separate install to keep the core lean.

# core
git clone https://github.com/Devail1/chelamux && cd chelamux
uv sync
uv run chela status

# dashboard + live terminal wall (separate install — keeps the core lean)
uv sync --extra dashboard
uv run chela dashboard

# want the Telegram bridge too? name every extra in ONE command —
# `uv sync --extra X` replaces the env and drops the ones you leave out
uv sync --extra dashboard --extra telegram

# does what's running still match your config?
uv run chela doctor

Full setup, the WORKFLOW.md format, the CLI, and config live in the documentation.