Orchestrate agents
Thurbox runs any CLI agent you define, side by side in persistent tmux panes.
The agents keep running after you quit thurbox.
One command installs it, and
thurbox
runs it — that is the whole setup.
Linux & macOS. The recommended route.
curl -fsSL https://raw.githubusercontent.com/Thurbeen/thurbox/main/scripts/install.sh | shNative Windows. Needs psmux installed separately.
irm https://raw.githubusercontent.com/Thurbeen/thurbox/main/scripts/install.ps1 | iexmacOS & Linux. Pulls in tmux and git.
brew install thurbeen/thurbox/thurboxAlso on winget, Chocolatey, the AUR and Nix, or from source — installation guide →
Every pane is a plugin
The interface is a directory you can edit
The session list, the agent terminal, the search strip — each one is a Lua file
under ui/plugins/. Move it, turn it off, replace it with your own, and the
arrangement closes up around what is left. No recompile, no restart.
ui/layout.lua — arrangement
ui/plugins/ — click to turn off
▸ Autoplaying — click anything to take over.
That last one is not shipped — it is yours. A pane is a short Lua file, and it only ever gets what you have trusted it with. Writing a pane →
Plugins to start from
- thurbox-info-panel Session, git, agent, account quota and system readouts beside the terminal.
- thurbox-code-review A Review tab: the session's diff against its base branch, with notes sent to the agent.
- thurbox-automations Run, switch on or off, create and edit scheduled automations, and see why a run failed.
- thurbox-auto-continue When a Claude Code session hits its usage limit, waits for the reset and continues.
- thurbox-doom DOOM as a tab of the agent pane.
Features
A fixed engine under an interface that is entirely yours
Band 1 — compiled, fixed
The engine
Processes, git, hosts, schedules, the database. This half is Rust and it is not yours to edit — which is the point: it is what a plugin is allowed to be careless in front of.
Persistent Sessions
Run multiple coding-agent CLIs side-by-side, each in its own tmux pane. Sessions persist across crashes, restarts, and multiple concurrent Thurbox instances.
Git Worktrees & Sync
Spawn sessions in isolated git worktrees for branch-level isolation. One-key sync (
Ctrl+S
) rebases all worktrees from origin/main, with automatic conflict resolution and
worktree cleanup on session close.
Any Coding Agent
A session runs one agent of your choice — Claude Code, Codex, Antigravity, opencode, aider, GitHub Copilot CLI, Vibe, pi, Oh My Pi, or any CLI you describe. Each agent runs with its own default config. Mix different agents across the sidebar.
Agent Definitions
Agents are declared as data in
~/.config/thurbox/agents.toml
, seeded with built-ins on first run. Add or tweak an agent — command and
argument templates — with no recompile.
Automations
Named, scheduled agent runs — one-shot or recurring cron. On schedule they send a prompt to a session, spawn a fresh one, or run a plain shell command. A detached tmux keeper fires them whether or not thurbox is open .
Tasks & issue sync
A todo list whose items
connect to a coding agent
— send one into a running session or spawn a fresh one seeded with it. Syncs
Records carry a
source
and an external id, so a sync script of your own can import from a tracker
without thurbox knowing which one.
Remote & WSL Hosts
Run an agent on another machine while the interface stays local — over SSH, or in a WSL distro that is discovered with no config . The agent, its tmux window and its worktrees all live on that host.
Extensions
Opt-in,
agent-agnostic
add-ons that compose Thurbox through
thurbox-cli
— never the binary. Install one from a declarative manifest in a single
command, and Thurbox keeps its session and automation
self-healed
. Two ship built in;
fleet
is the worked example of one you install yourself.
Headless CLI
The
thurbox-cli
binary scripts everything from the terminal: create and drive sessions, schedule
commands, pass messages between agents — all against the same SQLite database
the interface reads.
Band 2 — Lua, yours
The interface
Everything you look at. Not a theme layer over fixed panes — the panes themselves, the arrangement that places them, and the keys that reach them are files in a directory you own.
Every pane is a file
The session list included. Move one, turn it off, delete it, or write your own — and the arrangement closes up around what is left rather than leaving a hole. No recompile, no restart.
The arrangement is a file
No breakpoint is compiled into the binary.
ui/layout.lua
is a function of the available size, so the thresholds, the split, and the order
of the bands are yours to change.
A pane can run a program
git status
,
docker compose ps
,
npm outdated
— in the session's own directory, on the session's own host. Bounded by the
kernel and granted only to a plugin
you have trusted
.
Keys are declared, not fixed
A plugin declares the chords it wants and they appear in help. Rebind any of them live from the help screen; a pane that is turned off declares nothing , so its chord goes quiet instead of lingering.
Search that reads screens
Ctrl+/
finds a session by its name, branch, repo —
or by the error on its screen
. Matches highlight in the pane itself, and nothing pays for it while the strip is
closed.
Thirty-six palettes
Twenty-eight dark and eight light, switched live with
Ctrl+Y
and persisted. Add your own in
themes.toml
from a base plus the colours you want to override.
How It Works
Three steps from launch to coding
Launch
Run thurbox. The session sidebar and terminal panel appear.
Create a Session
Press
Ctrl+N
to pick repos, name the session, then choose an agent.
Ctrl+N New session # Pick repo: ~/projects/my-app # Name: my-app Agent: claude
Start Coding
Spin up sessions (optionally on a fresh git worktree) and start working with the agent. Navigate, sync, and fork with Vim-inspired keys. All keys →
Ctrl+N New session Ctrl+J Next session Ctrl+K Previous Ctrl+/ Search sessions and their screens Ctrl+, Settings
You are already in a coding agent
Just ask for it
thurbox-cli
is installed beside
thurbox
and the interface is a directory of text files — so the two things you would
otherwise script by hand are a sentence from inside any session.
Orchestrate sessions
The headless CLI creates, prompts, forks and tears down sessions, so an agent can spin up a whole fleet for you. Everything it does appears in your running TUI within a tick — both binaries share one SQLite database.
-
Using
thurbox-cli, start refactor sessions for this repo — one per crate, each on its own worktree branch offmain, and send each one a prompt to refactor its crate. - Spawn a reviewer session on this repo with no worktree, and send it standing instructions to review every file I change.
-
Create a nightly automation that sends “triage new issues” to the
triagesession on weekdays at 09:00.
Reshape the interface
Every pane is a Lua file, so changing the UI is also just a request. It works from
any
session, in whichever CLI you run, because thurbox ships a
thurbox-ui
skill that loads when the request is about the interface. Press
F10
and the change is on your screen.
- Add my project logs within a dedicated pane on the right in the thurbox UI.
-
Add a pane on the left with CPU and RAM usage. There is a
topexample plugin — install it and give it a slot in the layout. - Move the search strip to the bottom and make the session column 30% wide.
- Install the info panel plugin.
Feature walkthrough
See the TUI in action — recorded from the real app
Ctrl+, → Interface
The interface, editing itself
The Interface tab lists every file that makes up what you are looking at —
bundled ones saying nothing, the two panes from
examples/panes/
marked
yours
, and
layout.lua
marked
edited
because the demo replaced the shipped one. Here
85_top.lua
— a pane thurbox never shipped — is switched off with
space
: the file stays on disk, intact, and its row is not reserved, so the tasks pane
takes the whole column. The same machinery, for a file you wrote.
Ctrl+/
Search that reads screens
Find a session by its name, agent, branch or repo — or by the error printed on
its screen. Matches highlight
in the session list itself
rather than being reprinted in the strip, and
Esc
puts back exactly what you were looking at.
Ctrl+N
Session creation
Spin up a session in a few keystrokes: pick one or more repos, name it, and choose an agent — optionally on a fresh git worktree for branch isolation.
Learn more →Ctrl+Y
Themes
Thirty-six built-in palettes — twenty-eight dark, eight light — switch
live with a keystroke and persist across restarts. Bring your own in
themes.toml
: pick a base, override the colours you care about.
Prerequisites
What you need before running Thurbox — full installation guide
Prerequisites
- tmux >= 3.2 (or psmux >= 3.3.8 on native Windows, or opt-in RMUX >= 0.10.0) — session backend
- A coding-agent CLI — e.g. claude , codex, antigravity, opencode, aider, copilot, vibe, pi, or omp
- git — required for worktree features
- Rust 1.75+ — only for building from source (optional)