Files
tty7/docs/agents/overview.mdx
T
LiuSirandstevelliu e06ba47017 feat(tabs): name the agents you run in the New Tab menu (#994)
The + menu lists up to three agents that have actually been run, beside
Local and SSH. Other Agents… opens Search Everywhere already filtered to
agent. New Agent Tab still starts the one used last.

Refs #955

Co-authored-by: stevelliu <stevelliu@tencent.com>
2026-09-28 16:31:39 +08:00

153 lines
5.3 KiB
Plaintext

---
title: "Coding agents"
description: "What tty7 does around Claude Code, Codex, TraeCode, and 21 others — without ever wrapping them."
---
tty7 recognises coding agents running in a pane and builds around them. It does
not wrap them, proxy them, or replace their interface: the agent you start is
the agent you get, running in a normal PTY, with its own UI. tty7 adds the
things a terminal is in a position to add — who is running where, what they
need, and what changed.
<Frame caption="Agent sessions across several repos, each with its avatar, status dot, branch, and diff">
<img src="/images/agents-overview.webp" alt="Agent sessions in the tty7 sidebar" />
</Frame>
## Which agents
Twenty-six CLIs are recognised on sight, by the command running in the pane:
| Agent | Command |
|---|---|
| Claude Code | `claude`, `claude-code` |
| Codex | `codex`, `codex-cli` |
| TraeCode | `traecli`, `traex` |
| Gemini | `gemini`, `gemini-cli` |
| Copilot | `copilot` |
| Cursor | `cursor-agent` |
| Amp | `amp` |
| OpenCode | `opencode` |
| Aider | `aider`, `aider-chat` |
| Goose | `goose` |
| Droid | `droid` |
| Grok | `grok` |
| Qwen Code | `qwen`, `qwen-code` |
| Kimi Code | `kimi`, `kimi-code` |
| Qoder CLI | `qoder`, `qodercli` |
| Qoder CN CLI | `qodercn`, `qoderclicn`, `qoder-cn` |
| Crush | `crush` |
| CodeBuddy | `codebuddy`, `codebuddy-code`, `cbc` |
| Auggie | `auggie` |
| Hermes | `hermes` |
| Vibe | `vibe`, `vibe-acp` |
| Antigravity | `agy`, `antigravity` |
| Pi | `pi` |
| Oh My Pi | `omp` |
| Prime Agent | `prime-agent` |
| Empryo | `empryo` |
Detection sees through the usual disguises: a full path, a `.cmd` or `.exe` on
Windows, leading environment assignments, and an interpreter in front
(`node .../claude/cli.js`).
### Your own wrapper
If you launch agents through a wrapper script, map its name to an agent in
`config.json`:
```json
{
"agent_commands": {
"cc": "claude",
"work": "codex"
}
}
```
The key is your command's name; the value is one of the slugs above (`claude`,
`codex`, `traecli`, `gemini`, `aider`, `amp`, `opencode`, `copilot`, `cursor`, `goose`,
`droid`, `pi`, `auggie`, `hermes`, `vibe`, `antigravity`, `grok`, `qwen`,
`omp`, `kimi`, `qodercli`, `qoderclicn`, `crush`, `codebuddy`, `empryo`, `prime-agent`).
## Quick launch
Every agent tty7 finds on your `PATH` is one row away in Search Everywhere: **Agent:
Claude Code**, **Agent: Codex**, and so on, most-used first — type `agent` in
its Terminals tab to list them. The New Tab menu names the ones you have
actually run, three at most, and **Other Agents…** opens that same list for the
rest. **New Agent Tab**
(<kbd>⌘ ⇧ A</kbd> on macOS, unbound elsewhere) starts whichever agent you used
last.
A launch always opens a new tab in the current tab's directory and types the
agent's command into its shell, so the agent is detected, tracked and resumed
exactly as if you had typed it — and quitting it leaves you at the prompt. Each
`Agent: …` command is bindable too, as `LaunchAgent:<slug>`.
By default an agent launches as its bare binary (`claude`, `codex`,
`cursor-agent`, …). Give it a command line of its own with `agent_launch`:
```json
{
"agent_launch": {
"claude": "claude --dangerously-skip-permissions",
"codex": "cx --profile work"
}
}
```
A wrapper named there (`cx` above) is recognised as that agent without an
`agent_commands` entry. To keep the flags a running agent was started with,
right-click its pane and choose **Set Current Launch Args as Default**; tty7
writes them into `agent_launch`, minus the session they resumed and any prompt.
In a remote workspace tty7 cannot read the far machine's `PATH`, so it offers
the agents it has already seen running there: start one by hand once and it
joins the list. A wrapper named in your local `agent_launch` is only recognised
over there if the remote `config.json` names it too.
## What you get for free
Just by running an agent in a pane:
<CardGroup cols={2}>
<Card title="Brand avatars" icon="id-badge">
The tab chip and sidebar row show which agent runs where, so ten tabs stay
legible.
</Card>
<Card title="Git context" icon="code-branch">
The branch and working-tree diff on the row, refreshed as the agent works.
</Card>
<Card title="Session resume" icon="rotate-left">
A pane lost to a reboot relaunches the conversation, carrying its original
flags. [More →](/agents/sessions)
</Card>
<Card title="Context feed" icon="paper-plane">
Actions that hand the current selection or the repo's `git diff` to
the running agent as a prompt.
</Card>
</CardGroup>
## What needs a hook
Live status — **working**, **needs your input**, **done** — comes from the agent
itself, over a channel tty7 installs into that agent's configuration. It powers
the status dots, the notifications, the tray icon, and `tty7 wait`.
Installing takes one click per agent under **Settings → Integrations**.
[Status and notifications →](/agents/status)
## Where to go next
<CardGroup cols={3}>
<Card title="Status and notifications" icon="circle-dot" href="/agents/status">
Hooks, status dots, the tray icon.
</Card>
<Card title="Sessions" icon="code-branch" href="/agents/sessions">
Resume, fork, and copying a session id.
</Card>
<Card title="Orchestration" icon="diagram-project" href="/agents/orchestration">
One agent driving another with `tty7 wait`.
</Card>
</CardGroup>