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.

bash
curl -fsSL https://raw.githubusercontent.com/Thurbeen/thurbox/main/scripts/install.sh | sh

Also on winget, Chocolatey, the AUR and Nix, or from source — installation guide →

thurbox

Built-in agent support for Claude Code Codex Antigravity opencode aider Copilot Vibe pi Oh My Pi plus any CLI agent

MIT License Built with Rust

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.

thurbox

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.

All plugins, including community ones →

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.

How It Works

Three steps from launch to coding

1

Launch

Run thurbox. The session sidebar and terminal panel appear.

2

Create a Session

Press Ctrl+N to pick repos, name the session, then choose an agent.

thurbox
Ctrl+N  New session
# Pick repo: ~/projects/my-app
# Name: my-app   Agent: claude
3

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 →

thurbox
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 off main , 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 triage session on weekdays at 09:00.

Orchestration patterns →

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 top example 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.

What that actually does →

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.

Learn more →
Interface

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.

Learn more →
Global search

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 →
Session creation

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.

Learn more →
Themes

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)