terminatr
One terminal for all your coding agents.
A coordinator you talk to, threads that do the work.
You talk to one coordinator. It splits the work into tasks and hands each to a thread: an agent in its own git worktree that opens a pull request and reports back. tm, a single binary, keeps every agent running in a background server when you close the terminal, and its dashboard shows what each one is doing and what waits for you. All progress lives in plain markdown under ~/.terminatr/projects/, so clearing an agent's context loses nothing.
PROJECTS 1 │ tm dashboard ● server ok · 1 session ■ demo 1 │ demo ─────────────────────────────────────────────────────────────────────────────────────│ T1 Fix the login └─ coordinator · │ coordinator — not running; enter starts it 1 inbox │ ○ idle └─ T1 Fix the login 50% ○ │ T1 Fix the login ○ idle report new 50% 1/2 ▸ Fix 4m PR #7 t-…│ ────────────────────────────────────────────── │ tasks: 0 need you · 1 in motion · 0 on deck │ project demo │ OTHER SESSIONS ───────────────────────────────────────────────────────────────────────────│ thread t-0001 │ none outside the projects (1 in them) │ session s-3 │ │ progress ▰▰▰▱▱ 50% 1/2 │ │ now ▸ Fix │ │ updated 4m ago │ │ PR https://github.com/o/r/pull/7 │ │ report 1, new · for the coordinator │ │ │ │ steps 1/2 │ │ ✓ 1 Reproduce │ │ ○ 2 Fix │ │ │ │ enter attach │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ ≡ menu · enter attach · a project · t tasks · i inbox · , settings · ? help · prefix+q quit │
01 What it does
-
One coordinator, many threads
The coordinator is your single point of contact. It turns what you ask into tasks and starts a thread for each: an agent in its own git worktree and branch, so they never trip over each other. All progress lives in markdown under
~/.terminatr/projects/, so clearing an agent's context loses nothing. -
Survives the terminal
tmis a client; the agents live in a background server. Close the window, drop the SSH link, quit: they keep working. Runtmagain from any terminal, at any size, and you are back. After a crash or an upgrade the server resumes them. -
Dashboard, sidebar, popup
Every session and project with its live state: working, blocked, idle. A project tree on the left of every screen, an info panel beside each agent, and a project popup (a) with its overview, inbox, tasks and settings. Keyboard first, mouse everywhere, the same view in every terminal you open.
-
PRs, merged when CI is green
Threads push their branch and open a pull request on GitHub or Azure DevOps. tm watches the checks: a failing run goes back to the thread with the log, a conflict with main asks for a merge. Threads can't merge; the coordinator does, once the checks pass.
-
Tasks and an inbox
Tasks with steps in a plain
TASKS.md: on deck, in motion, needs you, done. Threads hand in reports; the coordinator reads them from its inbox and moves the task. What waits for you, a review, a question, a red build, comes first under NEEDS YOU. -
Works over SSH
It is a terminal program, so it goes where SSH goes. Copying from a pane lands on the clipboard of the machine you sit at (OSC 52). On a Mac the server starts in the desktop's session, so agents keep the keychain when you started it remotely. Remote Control picks up the coordinator from your phone.
-
Homebrew, signed, self-updating
One Go binary. macOS builds are signed with a Developer ID and notarised. Install from the Homebrew tap;
tm updateupgrades it andtm doctorchecks the setup. -
Built on Claude Code mods
tm loads its own mod (Claude Code's plugin hooks, early access, Claude Code 2.1.289 or newer) to set and read state: whether a session is working or blocked, its context use, open questions and approvals, and the guard. No screen-scraping; a few screen rules only cross-check.
-
Agents as data
Claude Code today, more agents next: Codex and pi will follow. Agents plug in through a TOML manifest that says how to launch and resume them and read their state, so adding one is data, not a rewrite.
02 Screens
Not mockups: these are tm's own screens, the golden captures its end-to-end tests compare against, with the colours put back.
PROJECTS 1 │ tm dashboard ● server ok · 1 session ■ demo 0 ⚑ │ NEEDS YOU 1 ─────────────────────────────────────────────────────── └─ coordinator · │ demo T1 Write the README ◆ review ▱▱▱▱▱ 0/2 │ demo ────────────────────────────────────────────────────────────── │ coordinator — not running; enter starts it │ tasks: 1 needs you (t lists them) · 1 in motion · 0 on deck │ OTHER SESSIONS 1 ────────────────────────────────────────────────── │ s-3 /bin/sh ▷ running 4m / │ │ │ │ │ │ │ │ │ │ │ │ │ │──────────────────────────────────────────────────────────────────── │ ≡ menu · enter open · a project · t tasks · i inbox · , settings ·… │
PROJECTS 1 │ tm dashboard ● server ok · 1 session ■ demo 1 │ demo ──────────────────────────────────────────────────────────────────────────────────────────────────────── └─ coordinator · │ coordinator — not running; enter starts it 1 inbox └─ T1 Fix the login 50% ○ │ T1 Fix the login ○ idle report new ▰▰▰▱▱ 50% 1/2 ▸ Fix 4m PR #7 t-0001 │ steps 1/2 │ ✓ 1 Reproduce │ ○ 2 Fix │ report new · for the coordinator │ tasks: 0 need you · 1 in motion · 0 on deck │ OTHER SESSIONS ────────────────────────────────────────────────────────────────────────────────────────────── │ none outside the projects (1 in them) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ ≡ menu · enter attach · a project · t tasks · i inbox · , settings · ? help · prefix+q quit │
PROJECTS 1 │ tm dashboard ● server ok · 0 sessions ■ demo 0 │ demo ────────────────────────────────────────────────────────────────────────────────── └─ coordinator · │ coordinator — not running; enter starts it │ tasks: 0 need you · 1 in motion · 1 on deck ╭─ demo ───────────────────────────────────────────────────────────────────────────────────────╮──────────── │ 1 overview 2 inbox 3 tasks 4 settings 5 keys 6 memory 7 library │ │ │ │ IN MOTION ────────────────────────────────────────────────────────────────────────────────── │ │ T1 Write the README ● started ▰▰▰▱▱ 1/2 │ │ ✓ Draft │ │ ○ Review │ │ │ │ ON DECK ──────────────────────────────────────────────────────────────────────────────────── │ │ T2 Ship it ○ ready │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ enter show · esc close │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │ │──────────────────────────────────────────────────────────────────────────────────────── │ │
PROJECTS 1 │ tm dashboard ● server ok · 1 session ■ demo 1 │ demo ──────────────────────────────────────────────────────────────────────────────────────────────────────── └─ coordinator · │ coordinator — not running; enter starts it 1 inbox └─ T1 Fix ╭─ demo ────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ 1 overview 2 inbox 1 3 tasks 4 settings 5 keys 6 memory 7 library │ │ │ │ report 4m T1 handed in report 1 Fix the login │ │ │ │ The coordinator handles these (tm inbox done). │ │ │─────────────── │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ← → tabs · esc close │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │────────────────────────────────────────────────────────────────────────────────────────────────────────────── │ │
PROJECTS 1 │ tm dashboard ● server ok · 0 sessions ■ demo 0 │ demo ────────────────────────────────────────────────────────────────────────────────── └─ coordinator · │ coordinator — not running; enter starts it │ tasks: 0 need you · 1 in motion · 1 on deck ╭─ demo ───────────────────────────────────────────────────────────────────────────────────────╮──────────── │ 1 overview 2 inbox 3 tasks 4 settings 5 keys 6 memory 7 library │ │ │ │ Project demo │ │ Goal none set; ask the coordinator to set one │ │ │ │ Repositories ~/src/demo │ │ │ │ Machines this machine │ │ │ │ Coordinator claude · not running; enter on the project starts it │ │ Threads none open │ │ start after asking you (Settings tab) │ │ │ │ Tasks 0 need you · 1 in motion · 1 on deck · 0 done │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ + add repository · x remove it · ← → tabs · esc close │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │ │──────────────────────────────────────────────────────────────────────────────────────── │ │
PROJECTS 2 │ ■ beta 0 │ └─ coordinator · │ ■ demo 1 │ └─ coordinator · │ └─ t-0001 Small fix ○ │ │ │ │ │ │ │
│ demo │ 1 needs you · 1 thread │ │ NEEDS YOU ─────────────────────────── │ T3 ▲ blocked Get the keys │ │ THREADS ───────────────────────────── │ t-0001 T1 ○ idle 1/2 │ ▸ Fix it │ │ ON DECK ───────────────────────────── │ T2 ○ ready Write the docs │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ≡ menu · prefix+d dashboard
│ T1 Fix the login │ ● started · click to open │ │ STEPS ─────────────────────────────── │ ▰▰▱▱▱ 33% 1/3 │ ✓ Find the bug │ ◐ Fix it │ ○ Test it │ │ THREAD ────────────────────────────── │ thread t-0001 ○ idle │ now ▸ Fix it │ │ branch tm/demo/t-0001-fix-the-login │ …/worktrees/demo/t-0001-fix-the-login │ active 4m ago │ │ │ │ │ │ │ │ │ │ │ │ │ ≡ menu · prefix+d dashboard
03 Install
macOS 13+ or Linux (glibc 2.28+), with Homebrew. Newer Homebrew wants you to trust a tap's formula once.
- tap it
brew tap theclifmeister/terminatr https://github.com/theclifmeister/terminatr - trust it
brew trust theclifmeister/terminatr - install it
brew install terminatr - run it
tm
Then press n for a new project and enter to start its coordinator. Ctrl+B d brings you back to the dashboard, ? lists every key. No Homebrew? The README has a one-line install from the releases.