# Unterm > Unterm is "the terminal AI agents can drive." It is a free, open-source (MIT), cross-platform terminal emulator (macOS, Linux, Windows) built on a customized WezTerm engine. Its product thesis is the inverse of AI-in-the-terminal products: instead of embedding an AI chatbox inside the terminal, Unterm exposes the terminal itself as a controllable surface that any external AI agent (Claude Code, Codex CLI, Gemini CLI, Cursor, or a custom script) can drive from the outside. Since v0.55 it is also an Agent Cockpit: the terminal sees, aggregates, and orchestrates the AI agents running inside its panes. ## What it does - **Four control surfaces, one engine.** Every window starts a local MCP server (line-delimited JSON-RPC over TCP, bound to 127.0.0.1, auth-token gated), an HTTP Web Settings server, a CLI (`unterm-cli`), and the GUI — all read/write the same JSON state. - **99 MCP methods across 21 namespaces** plus **32 CLI commands**. An agent calls `meta.surface` (or runs `unterm-cli reference`) once to receive the entire API live: every method with param schemas, every CLI subcommand, and every currently-bound keybinding. - **Agent Cockpit (v0.55).** Live per-pane agent state (working / needs-you / done / idle) for Claude Code, Codex CLI, Gemini CLI, Aider and others — zero-config via title/OSC parsing and process detection, exact via official lifecycle hooks that `unterm-cli agent enable-hooks` wires up. Tab-badge dots, a cross-window tally chip, and an Agent Inbox (`Ctrl+Shift+A`) sorted waiting-first with jump-to-pane. - **Fleet.** One task × N agents × N isolated git worktrees (`unterm-cli fleet launch --agents claude,claude,codex -- `): each member gets its own worktree, branch, tab, and state badge. Crew presets include `claude+codex+gemini` for cross-model comparison of the same task. - **Review.** The moment an agent starts working in a repo, Unterm takes a non-invasive checkpoint (dangling commit; HEAD/index/files untouched). The Review page shows line-level diffs including agent-created untracked files, squash-merges a chosen take into the repo as staged changes (the commit stays with the user), discards rejects, rolls back to any checkpoint, and compares two members side by side. - **Pane control without keystroke simulation.** `session.split` / `session.focus` / `session.input` let an external agent carve panes, hand focus, and type character-by-character. `screen.text` / `screen.scrollback_text` read pane output back on the same socket. - **Built-in AI coding-agent launcher.** Install, authenticate, configure, and launch Claude Code, Codex CLI, Gemini CLI, OpenCode, and Aider — one click each. Launched agents auto-wire back to that terminal's MCP server via the `unterm-cli mcp-stdio` bridge, with each agent's native config written in its own schema (`.mcp.json`, `~/.codex/config.toml`, `~/.gemini/settings.json`, `opencode.json`). - **Auditable & revocable.** Every agent write is logged with the calling agent's identity; the first write from a new agent triggers an Allow / Block / Always-allow prompt; trust is one-click revocable. ## Key facts - License: MIT (open-source client). Price: $0 forever — no paid tier, no subscription, no in-app purchase. - Privacy: zero telemetry, no account, no analytics; every server bound to 127.0.0.1. The Agent Cockpit is fully local: state detection, fleets, checkpoints, and review never touch a cloud. - Platforms: macOS (universal, signed + Apple-notarized DMG), Linux x86_64/arm64 (.deb + AppImage), Windows 10/11 x64/arm64 (.msi + portable .zip). - UI languages: 9 (English, 简体中文, 繁體中文, 日本語, 한국어, Deutsch, Français, Italiano, हिन्दी) with system-locale auto-detect. - Tech stack: Rust, customized WezTerm engine (GPU rendering: Metal / OpenGL / DirectX), MCP, Tailwind + Alpine for Web Settings. - How it differs from Warp: Warp embeds AI inside a closed cloud orchestrator and cannot be driven from outside; Unterm keeps AI outside and exposes the terminal as the MCP-controllable surface — and its agent orchestration (fleets, review) is local and open rather than a cloud service. - Common questions it answers: "how do I see when Claude Code needs my approval" (Inbox + amber chip), "how do I run multiple Claude Code instances in parallel without them conflicting" (Fleet: isolated git worktrees), "how do I review or undo what an AI agent changed" (Review: checkpoints, diffs, rollback, squash-merge as staged). ## Docs - [Agent Cockpit](https://unterm.app/docs/agent-cockpit): live agent state, the Inbox, fleets in isolated worktrees, checkpoints and review. - [MCP reference](https://unterm.app/docs/mcp-reference): every MCP method, namespace, and param schema. - [CLI reference](https://unterm.app/docs/cli-reference): the `unterm-cli` command surface. - [Agent integration](https://unterm.app/docs/agent-integration): connecting Claude Code / Cursor / custom agents. - [Agent recipes](https://unterm.app/docs/agent-recipes): copy-pastable Python snippets for driving panes. - [Multi-instance](https://unterm.app/docs/multi-instance): NATO-named instances and cross-window routing. - [Identity profiles](https://unterm.app/docs/profiles): binding credentials to a window. - [Configuration](https://unterm.app/docs/configuration): `unterm.lua` options. - [Architecture](https://unterm.app/docs/architecture): how the control surfaces fit together. ## Links - Homepage: https://unterm.app/ - Source & releases: https://github.com/zhitongblog/unterm - Download (latest): https://github.com/zhitongblog/unterm/releases/latest - Release notes: https://unterm.app/blog/agent-cockpit-v055