{"slug": "show-hn-thurbox-a-tmux-based-tui-and-cli-for-local-ai-agent-orchestration", "title": "Show HN: Thurbox – A tmux-based TUI and CLI for local AI agent orchestration", "summary": "Thurbeen released Thurbox, an open-source tmux-based TUI and headless CLI for running multiple coding-agent CLIs side by side, each in its own persistent tmux session and git worktree. Thurbox launches vendor CLIs unmodified — including Claude Code, Codex, Antigravity, opencode, and aider — and requires tmux ≥ 3.2, git, and at least one coding-agent CLI, with install scripts for Linux, macOS, and Windows. The interface is defined in user-owned Lua files, and sessions survive quitting the TUI, crashes, restarts, and reboots.", "body_md": "Run several coding agents at once — Claude Code, Codex, Antigravity, opencode, aider, or any CLI you describe yourself — side by side in one terminal. Each gets its own persistent tmux session and its own git worktree, so they never fight over your checkout, and they survive crashes, restarts and reboots. Quit thurbox and every agent keeps working; relaunch and they are all still there.\n\nThurbox is agent-neutral. It launches the vendor CLI unmodified and knows nothing about its model, prompts or tools, so you get new agent features the day the CLI ships them. And the interface is not compiled in: every pane you see, the session list included, is a Lua file in a directory you own — move it, turn it off, rewrite it, or install one somebody else wrote.\n\n**Linux / macOS:**\n\n```\ncurl -fsSL https://raw.githubusercontent.com/Thurbeen/thurbox/main/scripts/install.sh | sh\n```\n\n**Windows (PowerShell):**\n\n```\nirm https://raw.githubusercontent.com/Thurbeen/thurbox/main/scripts/install.ps1 | iex\n```\n\nThat installs both binaries — `thurbox` (the TUI) and `thurbox-cli` (the\nheadless one) — with checksum verification and platform auto-detection.\n\nYou also need **tmux ≥ 3.2** (or [psmux](https://github.com/psmux/psmux) on\nnative Windows), **git**, and at least one coding-agent CLI.\n\nHomebrew, the AUR, winget, Chocolatey, building from source, pinning a version,\nchanging the install directory and uninstalling are all on the\n[Installation page](https://thurbox.thurbeen.eu/docs/installation.html).\n\n```\nthurbox\n```\n\nFirst launch seeds `~/.config/thurbox/` — the agents thurbox knows, the themes,\nand the interface itself — then draws a session list on the left and an agent\nterminal on the right.\n\n1. **`Ctrl+N`** opens the repo picker.` Space` toggles a repo,`w` puts it in\nworktree mode (you are asked for a base branch and a new branch name),`Enter` confirms. Name the session, then pick an agent.\n2. **Talk to it.** The right pane is a live agent CLI; every key goes to it.\n3. **`Ctrl+N` again** for a second agent on a second branch.`Ctrl+J` /`Ctrl+K` move between sessions — the one you are not looking at keeps working.\n4. **`Ctrl+Q`** leaves the TUI without killing anything. Run` thurbox` again and\nboth agents are still mid-task, or attach raw with`tmux -L thurbox attach` .\n\nThat is the whole product in four steps: parallel work that keeps going when you stop watching it.\n\n`F1` lists every key and is rendered from the live registry, so it cannot drift\nfrom what is running; `Ctrl+P` is a command palette over the same actions.\nFor the same walkthrough with screenshots, see the\n[tutorial](https://thurbox.thurbeen.eu/docs/tutorial.html).\n\n- **[Global search](https://thurbox.thurbeen.eu/docs/features.html#global-search)** (`Ctrl+/` ) — find a session by name, agent, branch or repo,*and* by the text\non its screen, which is the half that finds it by the error in it.\n- **[Fork and lead/worker trees](https://thurbox.thurbeen.eu/docs/features.html#session-forking)** (`Ctrl+F` ) — branch a conversation; children nest under their lead.\n- **[Worktrees and multi-repo sessions](https://thurbox.thurbeen.eu/docs/features.html#git-worktrees)** — one session can span several repos, each on its own worktree of a shared\nbranch.`Ctrl+S` syncs them with their base.\n- **[Remote SSH and WSL sessions](https://thurbox.thurbeen.eu/docs/features.html#remote-ssh-sessions)** — declare hosts in`hosts.toml` and sessions run there while the TUI stays\nlocal.\n- **[A headless CLI](https://thurbox.thurbeen.eu/docs/features.html#headless-cli)** —`thurbox-cli` creates, drives, captures and tears down sessions from a\nscript, over the same database the TUI is reading.\n- **[Automations and tasks](https://thurbox.thurbeen.eu/docs/features.html#automations)** — scheduled agent runs and a todo list whose items can be handed to an agent.\nA tmux heartbeat fires them whether or not thurbox is open.\n- **[Inter-session messages](https://thurbox.thurbeen.eu/docs/features.html#inter-session-messages)** — an agent-neutral mailbox so one agent hands another a payload instead of\nscraping its terminal.\n- **[Extensions](https://thurbox.thurbeen.eu/docs/extensions.html)** — opt-in\nadd-ons that are data, not code: a manifest declares the agents, files,\nsessions and automations it wants, and one command installs and self-heals\nthem.\n- **[Session lifecycle hooks](https://thurbox.thurbeen.eu/docs/configuration.html#hooks-toml)** ,**[OS notifications](https://thurbox.thurbeen.eu/docs/configuration.html#notifications)** ,**[36 themes](https://thurbox.thurbeen.eu/docs/features.html#themes)** (`Ctrl+Y` ) and full mouse support.\n\nWiring a fleet of agents at once — operators, developers, reviewers, from one\nscript — is the\n[monorepo recipe](https://thurbox.thurbeen.eu/docs/recipes.html#monorepo).\n\nThe binary boots a kernel, reads a directory, and draws whatever Lua it finds\nthere. Panes live in `ui/plugins/*.lua`, the arrangement in `ui/layout.lua`, and\n`F10` reloads both from disk. Agents, hosts, hooks, themes, chords and settings\nare each a file under `~/.config/thurbox/`.\n\nYou do not have to learn Lua for any of it. Thurbox ships a built-in `ui-skill`\nextension that teaches whichever CLI you run how the interface is put together,\nso from inside any session you can just ask:\n\n*Add a pane on the left with CPU and RAM usage. Move the search strip to the\nbottom and make the session column 30% wide.*\n\nPress `F10` and the change is on your screen. If a pane breaks, `Ctrl+,` then\n`]` is chrome rather than a pane, so it cannot be edited away — `r` restores a\nshipped file, `space` turns yours off.\n\n[The Interface →](https://thurbox.thurbeen.eu/docs/interface.html) ·\n[Writing a pane →](https://github.com/Thurbeen/thurbox/blob/main/docs/PLUGINS.md) ·\n[Configuration →](https://thurbox.thurbeen.eu/docs/configuration.html)\n\n[**thurbox.thurbeen.eu/docs**](https://thurbox.thurbeen.eu/docs/) is the manual:\n[installation](https://thurbox.thurbeen.eu/docs/installation.html),\n[tutorial](https://thurbox.thurbeen.eu/docs/tutorial.html),\n[features](https://thurbox.thurbeen.eu/docs/features.html),\n[keybindings](https://thurbox.thurbeen.eu/docs/keybindings.html),\n[configuration](https://thurbox.thurbeen.eu/docs/configuration.html),\n[agents](https://thurbox.thurbeen.eu/docs/agents.html),\n[the interface](https://thurbox.thurbeen.eu/docs/interface.html),\n[orchestration](https://thurbox.thurbeen.eu/docs/orchestration.html),\n[architecture](https://thurbox.thurbeen.eu/docs/architecture.html),\n[a comparison with similar tools](https://thurbox.thurbeen.eu/docs/comparison.html)\nand an [FAQ](https://thurbox.thurbeen.eu/docs/faq.html).\n\nThe rationale behind the decisions is in this repository, under\n[`docs/`](https://github.com/Thurbeen/thurbox/blob/main/docs): [CONSTITUTION](https://github.com/Thurbeen/thurbox/blob/main/docs/CONSTITUTION.md) (non-negotiable\nprinciples), [ARCHITECTURE](https://github.com/Thurbeen/thurbox/blob/main/docs/ARCHITECTURE.md), [FEATURES](https://github.com/Thurbeen/thurbox/blob/main/docs/FEATURES.md),\n[CONFIG](https://github.com/Thurbeen/thurbox/blob/main/docs/CONFIG.md), [V2-KERNEL](https://github.com/Thurbeen/thurbox/blob/main/docs/V2-KERNEL.md),\n[PLUGINS](https://github.com/Thurbeen/thurbox/blob/main/docs/PLUGINS.md), [ORCHESTRATION](https://github.com/Thurbeen/thurbox/blob/main/docs/ORCHESTRATION.md),\n[DEVELOPMENT](https://github.com/Thurbeen/thurbox/blob/main/docs/DEVELOPMENT.md) and [RELEASING](https://github.com/Thurbeen/thurbox/blob/main/docs/RELEASING.md).\n\n[`CONTRIBUTING.md`](https://github.com/Thurbeen/thurbox/blob/main/CONTRIBUTING.md) is the full guide — the Nix dev shell, the\n`just` tasks, the test discipline, and the conventional-commit rules that decide\nwhat gets released.\n\n```\ngit clone https://github.com/Thurbeen/thurbox.git\ncd thurbox\nnix develop          # or ./scripts/install-dev-tools.sh\njust build && just test && just lint\n```\n\n- **[Discord](https://discord.gg/fGumcHaxFY)** — questions, setup help, and\nshowing off your interface. Ask in`#help` , one thread per problem.\n- **[GitHub Issues](https://github.com/Thurbeen/thurbox/issues)** — confirmed\nbugs and concrete feature requests.\n\nMIT — see [LICENSE](https://github.com/Thurbeen/thurbox/blob/main/LICENSE). Built on\n[ratatui](https://github.com/ratatui-org/ratatui),\n[tui-term](https://github.com/a-kenji/tui-term),\n[vt100](https://github.com/doy/vt100-rust) and\n[tmux](https://github.com/tmux/tmux).", "url": "https://wpnews.pro/news/show-hn-thurbox-a-tmux-based-tui-and-cli-for-local-ai-agent-orchestration", "canonical_source": "https://github.com/Thurbeen/thurbox", "published_at": "2026-09-16 01:25:49+00:00", "updated_at": "2026-09-16 01:37:34.778094+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-products"], "entities": ["Thurbox", "Thurbeen", "tmux", "Claude Code", "Codex", "Antigravity", "opencode", "aider"], "alternates": {"html": "https://wpnews.pro/news/show-hn-thurbox-a-tmux-based-tui-and-cli-for-local-ai-agent-orchestration", "markdown": "https://wpnews.pro/news/show-hn-thurbox-a-tmux-based-tui-and-cli-for-local-ai-agent-orchestration.md", "text": "https://wpnews.pro/news/show-hn-thurbox-a-tmux-based-tui-and-cli-for-local-ai-agent-orchestration.txt", "jsonld": "https://wpnews.pro/news/show-hn-thurbox-a-tmux-based-tui-and-cli-for-local-ai-agent-orchestration.jsonld"}}