# OmniTerm
> *One browser tab to watch — and drive — every AI coding agent.*
[](LICENSE)
**Claude Code · Codex · Gemini · OpenCode · Qwen Code · Kiro** …

> [中文](README_ZH.md)
## Sound familiar?
You've got several AI coding agents running at once — Claude Code in one terminal, Codex in another, Gemini in a third. You keep switching between them, checking one by one: which one finished? which one's stuck waiting for you to confirm? which one errored out ages ago?
**OmniTerm pulls them all into a single browser tab.** Each agent gets a card that tells you what it's doing in real time; when it needs you, the tab flashes, a sound plays, and you know instantly. Most of the time, you just watch them work.
## What you can do with it
**See every agent at a glance** — running, waiting for input, or done. Live status for each, no more flipping through windows one by one.
**Drive agents like a chat** — pick an agent and just talk (over the [ACP protocol](https://agentclientprotocol.com/)): its replies become clean text, tool-call cards, and collapsible thinking — not a wall of terminal text. One-click presets for Claude Code, Codex, Gemini, OpenCode, Qwen Code, and Kiro.
**Step in exactly when it matters** — approve or deny a tool right where it asks; switch models or thinking level mid-session.
**Get pinged the moment you're needed** — permission requests and waiting prompts trigger a tab flash + sound + sidebar badge, even if you've navigated away.
**Jump in anytime** — built-in terminal (xterm.js) and file browser for when you want to read code, edit files, or run commands — mobile soft keyboard included.
**Easy on memory** — release a session with one click to free memory while keeping the log; resume anytime. Idle sessions recycle themselves.
**Knows your project** — auto-detects git worktrees and groups sessions by branch, file browser follows the current directory, syntax highlighting for 13 languages.
## Quick start
```bash
cargo install omniterm # or see other methods below
omniterm # open http://localhost:9077
```
In the browser, set an initial password, add a project directory, and start a session — pick an agent for chat mode, or leave it blank for a plain terminal. Upgrade anytime with `omniterm update`.
<details>
<summary>Other install methods (npm / Shell script / PowerShell / Docker)</summary>
**Prerequisites**: tmux (on Windows, use [psmux](https://github.com/psmux/psmux) instead).
```bash
# npm (requires Node.js >= 18, cross-platform)
npm install -g @gdwhisper/omniterm
```
```bash
# Shell script (Linux/macOS) — installs tmux automatically if missing
```powershell
# PowerShell (Windows) — bring your own psmux or tmux
```bash
# Docker — tmux bundled
docker run -d -p 9077:9077 -v omniterm-data:/app/data ghcr.io/GDWhisper/omniterm
```
</details>
---
## For developers
Single-binary deployment: Rust backend with embedded frontend and SQLite, one command to start.
| Backend | Rust + Axum + SQLite |
| Frontend | React 19 + Tailwind CSS 4 + xterm.js |
| Agent protocol | [ACP](https://agentclientprotocol.com/) client + tmux control mode |
| Terminal bridge | portable-pty + WebSocket |
**Contributing** — ⭐ Star the repo; 🐛 [Issues](https://github.com/GDWhisper/OmniTerm/issues) for bugs or ideas.
**License** — FSL-1.1-MIT © [GDWhisper](https://github.com/GDWhisper)