{"id":51701069,"url":"https://github.com/erikqu/workbench-cli","last_synced_at":"2026-07-16T11:01:25.675Z","repository":{"id":367466237,"uuid":"1280884648","full_name":"erikqu/workbench-cli","owner":"erikqu","description":"A terminal workbench for running multiple coding agents side by side — tmux-backed, fast, no Electron.","archived":false,"fork":false,"pushed_at":"2026-07-15T05:10:17.000Z","size":4115,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-15T05:18:33.756Z","etag":null,"topics":["agent","agents","ai","bun","claude","cli","coding-agents","developer-tools","harness","react","terminal","tmux","tui"],"latest_commit_sha":null,"homepage":"https://ehq.so","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erikqu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-26T03:05:01.000Z","updated_at":"2026-07-15T05:10:22.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/erikqu/workbench-cli","commit_stats":null,"previous_names":["erikqu/workbench-cli"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/erikqu/workbench-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikqu%2Fworkbench-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikqu%2Fworkbench-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikqu%2Fworkbench-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikqu%2Fworkbench-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erikqu","download_url":"https://codeload.github.com/erikqu/workbench-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erikqu%2Fworkbench-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35541271,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-16T02:00:06.687Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","agents","ai","bun","claude","cli","coding-agents","developer-tools","harness","react","terminal","tmux","tui"],"created_at":"2026-07-16T11:00:46.328Z","updated_at":"2026-07-16T11:01:25.669Z","avatar_url":"https://github.com/erikqu.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Workbench CLI\n\n```text\n888       888                  888      888                                 888\n888   o   888                  888      888                                 888\n888  d8b  888                  888      888                                 888\n888 d888b 888  .d88b.  888d888 888  888 88888b.   .d88b.  88888b.   .d8888b 88888b.\n888d88888b888 d88\"\"88b 888P\"   888 .88P 888 \"88b d8P  Y8b 888 \"88b d88P\"    888 \"88b\n88888P Y88888 888  888 888     888888K  888  888 88888888 888  888 888      888  888\n8888P   Y8888 Y88..88P 888     888 \"88b 888 d88P Y8b.     888  888 Y88b.    888  888\n888P     Y888  \"Y88P\"  888     888  888 88888P\"   \"Y88888 888  888  \"Y8888P 888  888\n```\n\n**A terminal workbench for running multiple coding agents side by side — tmux-backed, fast, no Electron.**\n\nEach workspace gets a persistent, tmux-backed agent pane, a file explorer, live\nchanges, extra terminals, and rich file viewers in one full-screen TUI.\n\n```bash\ncurl -fsSL https://ehq.so/install | bash\n```\n\n![Workbench CLI](workbench-ui/assets/images/sample.png)\n\nBuilt with [Bun](https://bun.sh), [React 19](https://react.dev), and\n[Silvery](https://www.npmjs.com/package/silvery).\n\n## Why\n\nTerminals are the best UI for coding agents. The agent CLIs are already great;\nthey just weren't built to run several at once, keep them alive across restarts,\nand show you what they changed — without a browser or Electron.\n\n| | Raw agent CLI | `tmux` + agents | Browser agent UIs | **Workbench CLI** |\n| --- | :---: | :---: | :---: | :---: |\n| Multiple agents side by side | — | manual | some | **yes** |\n| Sessions survive relaunch | — | yes | — | **yes** |\n| Files + live changes in one view | — | — | some | **yes** |\n| Rich viewers (PDF, images, Mermaid, video) | — | — | yes | **yes** |\n| No Electron / no browser | **yes** | **yes** | — | **yes** |\n| Mouse + keyboard, full-screen TUI | — | — | — | **yes** |\n\n## Terminal Support\n\n🚨 **Workbench CLI is built for [Ghostty](https://ghostty.org). Use Ghostty for\nthe intended experience.** 🚨\n\nIt also launches in other terminals — Kitty-compatible or Sixel-capable ones\ntend to work best. Anything other than Ghostty is **experimental**: rendering,\nmouse input, images, cursor behavior, and tmux passthrough may break or drift.\nBug reports and fixes for other terminals are welcome; Ghostty is the one we\ndevelop and test against.\n\nWorkbench renders inside your terminal emulator, so harness font family and\nsize are controlled by the terminal profile. A clear monospace font such as\nJetBrains Mono, Cascadia Mono, Berkeley Mono, or similar at 14-16 px is the\nrecommended starting point.\n\n## Install\n\n```bash\ncurl -fsSL https://ehq.so/install | bash\n```\n\nThe installer sets up Bun if needed, checks out the source into\n`~/.local/share/workbench-cli`, installs dependencies, and links\n`workbench-cli` and `work` into `~/.local/bin`.\n\n## Run\n\nOpen Ghostty, then run:\n\n```bash\nwork\n```\n\n`workbench-cli` still works too. Open a different directory with\n`work path/to/project`, or choose a different agent with `work --harness claude`.\n\n## Four Commands\n\nThe UI is clickable, so these are the main commands to remember:\n\n| Key | Action |\n| --- | --- |\n| `Ctrl+N` | New workspace |\n| `Ctrl+H` | Add or switch agent harness |\n| `Ctrl+T` | New terminal |\n| `Ctrl+Q` | Quit |\n\nEverything else can be clicked: choose workspaces in the left sidebar, switch to\nthe agent, browse Explorer files, open changed files, cycle themes, and use the\ntop-right `+` menu.\n\n## What It Does\n\n- Runs coding agents side by side: Cursor by default, plus Claude Code, Gemini,\n  Codex, and OpenCode.\n- Keeps agent and terminal panes alive on a private tmux server, so relaunches\n  reattach to the same sessions.\n- Shows files, terminals, and changes together: Agent, Explorer, Terminals, and\n  Changes live in the workspace side pane.\n- Renders rich viewers for text, Markdown preview/source, images, PDFs, videos,\n  and Mermaid diagrams.\n\n![PDF rendering in Workbench CLI](workbench-ui/assets/images/pdf_render.png)\n\n## Development\n\nDevelopment notes, commands, environment variables, optional viewer tools, and\narchitecture details live in\n[`workbench-ui/development/development.md`](workbench-ui/development/development.md).\n\n## Keybindings\n\n| Key | Action |\n| --- | --- |\n| `Ctrl+T` | New terminal in the active workspace |\n| `Ctrl+N` | New workspace (folder picker) |\n| `Ctrl+H` | Add a harness (agent) to the active workspace |\n| `Ctrl+B` | Toggle the sessions sidebar |\n| `Ctrl+W` | Close the active file or terminal tab |\n| `Ctrl+Q` | Quit |\n| `Tab` / `Shift+Tab` | Cycle top-level tabs when the UI has focus; sent through to focused agents/terminals |\n| `Esc` | Return focus to the active agent, terminal, or editor pane |\n| `Option+1..9` | Jump to that tab in the active workspace |\n| `Option+Shift+1..9` | Jump to that workspace |\n| `Option+Space` | Cycle to the next workspace |\n| `Option++` | New workspace (opens the agent picker) |\n| `Option+Tab` | Cycle the UI theme (`Option+Shift+Tab` reverses) |\n| `PageUp` / `PageDown` | Scroll the focused agent / terminal scrollback |\n\n## License\n\n[MIT](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferikqu%2Fworkbench-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferikqu%2Fworkbench-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferikqu%2Fworkbench-cli/lists"}