matchblox
New v0.30.0 · The chat shows the agent's own question Release notes →

Light an idea. Keep it burning.

Once, everyone carried a matchbox to light a fire wherever they went. matchblox is the one you carry to every terminal. Run the whole console from your phone: see which coding agent works and which one waits for you, answer it in a line, and follow every pull request it drives from CI to live.

  • Claude Code
  • Codex
  • OpenCode
  • and any agent in tmux

Install

curl -fsSL https://matchblox.sh | sh

Linux and macOS · amd64 or arm64 · checksum and provenance checked read the script first ↗

Open the box

Open: the sessions and the agent's live chat side by side, with the dock below.

Carry it in your pocket

matchblox runs the whole console on your Mac or Linux host. Matchblox Pocket puts it on your iPhone and iPad: pair with one scan, get a buzz the moment a session waits, and step into it from anywhere — on the Lock Screen, in the Dynamic Island, in a line.

Pair with one scan

No account, no password. Scan the code on your host and the box opens on both screens. The scan is the consent.

The buzz

A push the moment a session needs you — the line sealed to your device, so only you can read it. A Live Activity keeps it on the Lock Screen and in the Dynamic Island.

Jump in, answer, out

Tap a session to see its live screen, answer its question with a tap, and swipe back through what it did. Nine large keys, from ↑ ↓ ⏎ to ^C, steer it without tmux or another SSH app. Face ID unlocks the key that opens your console.

Join the beta on TestFlight iPhone & iPad · iOS 18+ · free

Tell the stoker how to run

Press n before you go and say it in your own words: “keep the priority ones going, and merge them on green.” The stoker starts at once, keeps its own plan, works it through your sessions and logs every step on its card. Merges, releases and deploys ask you, unless you turn their go on.

Every quiet session says why. A parked session leaves the quiet pile. Try g and s, or z on a row.

Your standing rules and recipes live in a ways file that you write, not in matchblox. Your ways →

Every agent in tmux

Start each agent in a tmux session, or press N and matchblox starts one for you. It finds every one, opens its chat with Enter or a, and hands its seat to another agent with A.

Claude Code
tmux new -s app claude
✦ busy app app:1.1 ██████░░░░ 62% ✻ you@example.com · Max
Codex
tmux new -s api codex
╿ asks 1m codex api:1.1 █████░░░░░ 55% ❋ you@example.com · Plus
OpenCode
tmux new -s web opencode
✦ busy opencode web:1.1 ███░░░░░░░ 32% ▣ API key
Any other agent
tmux new -s docs aider
╿ done 4m aider docs:1.1 —

Claude Code, Codex, OpenCode and Cursor also show how full their context is and which account they run under. Gemini, aider, crush and qwen show in Sessions too, wherever they are installed. Add any other agent by its command in agents.

N starts Claude Code, Codex, OpenCode or Cursor from the console, without a tmux command.

matchblox stands on tmux: a server that keeps running, and clients that attach from any terminal. tmux, the engine →

Keep it burning while you sleep

Press n before you go and give the stoker its order. It carries the order out through your sessions, and each session that fills its context compacts itself and leaves one line on how to go on. In the morning you read the card and carry on.

Before you sleep
n
▰ matchblox · ws-1 · night → 07:00
In the morning
NIGHT 23:10 → 07:00 · ready 4/5
23:40 ╿ hearth-api 176k → 9k RESUME: add the rate-limit headers, then open the PR

The stoker is the agent you choose, Claude Code, Codex, OpenCode or Cursor. matchblox starts it on a tmux server of its own, out of your sessions, and Enter on its tab opens it. It ends a session only with your kills go or your y, and merges, releases and deploys go ahead only on your word. The stoker →

Steer from the chat

Each agent that waits for you comes first. Press a: its live screen is there, and every key goes to the agent. When it asks with its own options, a card shows them and a digit answers.

Every pull request, CI to live

The pull requests your sessions drive, each on one track: CI, a conflict, a review, the merge and the deploy. One that waits for you merges after a typed y.

Start, rename, switch, kill

N starts an agent where you work, with its first message, in a tmux session of its own: the session and the agent share one name, and r renames both. Its where offers the repositories on your host, found once you say yes, and kept there. N also picks the account, or makes a new one you sign in to. A runs another agent in the same pane, with the same name and pull request, and tells it to read the working tree and go on. x ends a session after a typed y. Its worktree and its transcript stay.

Usage and the machine at a glance

What /usage says for every account, named by its provider, with its logo in kitty and Ghostty. CPU, memory and disk, and the stoker's night, in the rows the list leaves free. Any fix shows its exact command first.

Light the match. Keep it burning.