The human-driven multi-agent dashboard.
Termhive is a web-based control center for coding CLI agents (Claude Code, Codex, Gemini, OpenCode). While autonomous agent platforms hand the steering wheel to AI, Termhive keeps you in the driver's seat: see every agent's screen in one window, coordinate them manually, and intervene the moment something goes sideways.
Think of it as tmux for coding agents — with a web UI, project wiki, shared content, and MCP-based agent messaging.
https://github.com/user-attachments/assets/8c95c54b-5c1e-471e-9411-6150993b886b
Autonomous agents are seductive in a demo. In practice they drift, burn tokens, and silently break things. I shipped two autonomous-agent harnesses before this one — both worked until they didn't, and the "didn't" was expensive to clean up.
Termhive is the opposite bet. You run 2–7 agents in parallel, each doing real work, but you stay in the loop on every one. No hidden decisions, no runaway loops, no "come back tomorrow and hope it went well."
Termhive gives you a browser-based dashboard, a per-project wiki, shared content folders, and native agent-to-agent messaging — all while you stay in control of every prompt.
⌘K / Ctrl+K to jump to agents, switch layouts, change theme, run batch actions. ⌘1–5 / Ctrl+1-5 instantly focuses agent N (keeps working even when the terminal has focus).--add-dir / --include-directories for all supported CLIs. Folder tree + editor in the UI.CLAUDE.md / AGENTS.md in each agent's cwd with shared content, wiki, and teammate paths--dangerously-skip-permissions (Claude/OpenCode), --remote-control (Claude)The current UI is built around multi-agent panoramic viewing — Grid and Canvas modes are the differentiators:
All layouts (2-up / 3-up / Grid / Canvas) use pointer movementX/Y deltas and real container widths for resize math, so they feel precise regardless of display scale.
git clone https://github.com/0x0funky/TermHive.git
cd TermHive
npm install
npm run dev
Open http://localhost:5173 in your browser.
node-pty requires native build tools:npm install -g windows-build-tools or install Visual Studio Build Toolsxcode-select --installsudo apt install build-essentialnpm run build
npm start
Server runs on http://localhost:3200 (serves both API and frontend).

A persistent, structured wiki per project — inspired by Karpathy's LLM Wiki pattern. Instead of agents rediscovering project context from scratch every session, they read and maintain a living wiki.
Read the project wiki's _index.md to understand the current project stateUpdate the project wiki with what you just did — follow _schema.md conventions_schema.md for maintenance rules, updates relevant pages, appends to _log.md, and updates _index.md~/.termhive/wiki/[project-name]/
├── _schema.md # Wiki maintenance rules (ingest/query/lint operations)
├── _index.md # Page directory with one-line summaries
├── _log.md # Chronological change log (append-only)
├── overview.md # Project purpose, tech stack, current state
├── architecture.md # System design, components, data flow
├── api-endpoints.md # API reference with request/response formats
├── data-model.md # Database schema and relationships
├── decisions.md # Architecture decision records (append-only)
├── progress.md # Done / In Progress / Blocked / Upcoming
├── agents/ # Per-agent work logs
└── raw/ # Immutable source documents
--add-dir, and CLAUDE.md/AGENTS.md includes instructions to read _index.md on session startShared content files are stored in ~/.termhive/shared_content/[project-name]/. When an agent starts, the directory is automatically passed to the CLI:
| CLI | Flag | Instruction File |
|---|---|---|
| Claude Code | --add-dir |
CLAUDE.md |
| Codex CLI | --add-dir |
AGENTS.md |
| Gemini CLI | --include-directories |
AGENTS.md |
| OpenCode | via AGENTS.md |
AGENTS.md |
Instruction files are auto-generated in each agent's working directory with paths to both shared content and wiki.
All agents can read/write shared files, and the Termhive web UI reflects changes in real-time via file watching.

Agents in the same project can send messages to each other. When you ask one agent to notify a teammate, it calls an MCP tool that delivers the message to the recipient's terminal as if the user had typed it.
message_agent(target, message) and list_teammates().CLAUDE.md / AGENTS.md is auto-updated with a Teammates section listing other agents in the project (names, CLIs, roles).message_agent(target="backend", message="API is done").[Message from Frontend]: API is done, so the target's LLM sees it as fresh user input.Talking to the Frontend agent:
> Tell backend the auth flow is complete, the spec is in shared/auth-spec.md
[Frontend uses message_agent tool]
→ Message delivered to backend.
Backend's terminal automatically receives:
[Message from Frontend]: the auth flow is complete, the spec is in shared/auth-spec.md
| CLI | MCP Support | Mechanism |
|---|---|---|
| Claude Code | ✅ | --mcp-config <path> flag (session-scoped, does not touch ~/.claude.json) |
| Codex CLI | ✅ | Per-agent entry in ~/.codex/config.toml keyed by agent id |
| Gemini CLI | ❌ | Not yet — no stable user-level MCP config |
| OpenCode | ❌ | Not yet |
~/.termhive/mcp-configs/<agentId>.json. Your personal MCP setup in ~/.claude.json is never modified.Backend Team.message_agent back.Frontend → Backend: ....┌─────────────────────────────────────────────┐
│ Web UI (React) │
│ ┌─────────┐ ┌─────────┐ ┌──────────────┐ │
│ │ Project │ │ Agent │ │ Wiki / │ │
│ │ Sidebar │ │Terminals│ │ Content │ │
│ └─────────┘ └─────────┘ └──────────────┘ │
└──────────────────┬──────────────────────────┘
│ REST + WebSocket
┌──────────────────▼──────────────────────────┐
│ Express Server (:3200) │
│ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │
│ │ PTY Mgr │ │ Wiki / │ │ Activity │ │
│ │(terminals)│ │ Content │ │ Feed │ │
│ └──────────┘ └──────────┘ └─────────────┘ │
└─────────────────────────────────────────────┘
| Layer | Tech |
|---|---|
| Backend | Node.js, Express, TypeScript |
| Frontend | React, Vite, xterm.js |
| PTY | node-pty |
| Communication | WebSocket (terminal I/O) + REST (CRUD) |
| File watching | chokidar |
| Storage | JSON files (~/.termhive/) |
| Build | tsup (backend) + Vite (frontend) |
~/.termhive/
├── projects/
│ └── <project-id>/
│ └── project.json # Project metadata + agents
├── shared_content/
│ └── <project-name>/ # Shared files for agent communication
└── wiki/
└── <project-name>/ # Project wiki
├── _schema.md
├── _index.md
├── _log.md
└── ...
| Command | Description |
|---|---|
npm run dev |
Start dev server (backend + frontend with HMR) |
npm run build |
Production build |
npm start |
Start production server |
npm run dev:server |
Backend only (watch mode) |
npm run dev:client |
Frontend only (Vite dev server) |
MIT
$ claude mcp add TermHive \
-- python -m otcore.mcp_server <graph>