Skip to content

Supported Code Agents

Otty integrates with the coding-agent CLIs you run yourself. You keep using the agent exactly as you would in any terminal — Otty plugs into it so the tab badges, notifications, history, resume, and (where the agent supports it) fork all work. The in-app experience is the same across every one.

AgentCommandHow Otty connectsResumeFork
Claude CodeclaudeHooks in ~/.claude/settings.json
CodexcodexHooks in ~/.codex/hooks.json (+ hooks = true in config.toml)
OpenCodeopencodePlugin in ~/.config/opencode/plugins
Cursor CLIagentHooks in ~/.cursor/hooks.json
Kimi CodekimiHooks in ~/.kimi-code/config.toml (TOML [[hooks]])
PipiExtension in ~/.pi/agent/extensions
ompompExtension in ~/.omp/agent/extensions

Installation is one click: the first time Otty needs the integration it asks to install the hook or plugin into that agent's own config — it won't touch your other settings. See Setup to install, manage, or remove it.

Custom launch commands

Expand an agent under Settings → Integrations to override the command Otty uses when it starts, resumes, or forks that agent. This is useful for wrappers, absolute executable paths, and global flags. Otty appends the agent-specific session arguments, so enter claude --dangerously-skip-permissions, not a full claude --resume <id> command. Leave the field empty for the built-in default.

The same override can be written in the config file:

ini
agent-command = claude=claude --dangerously-skip-permissions
agent-command = codex=/opt/homebrew/bin/codex --profile work

Claude Code

Anthropic's Claude Code CLI. Otty adds hook entries to ~/.claude/settings.json that report each turn's state (processing, idle, awaiting input).

  • Resume reopens a past conversation with claude --resume <id>.
  • Fork branches it into a new session with claude --resume <id> --fork-session.
  • Transcripts live as JSONL under ~/.claude/projects/…, so History can search and reload them.

Codex

OpenAI's Codex CLI. Otty installs hooks into ~/.codex/hooks.json.

  • Codex only runs hooks when the hooks feature is enabled in ~/.codex/config.toml. Otty turns it on when it installs the hooks; if it ever gets switched off, Otty offers a one-click re-enable (then restart Codex in that tab).
  • Resume uses codex resume <id>; Fork uses codex fork <id>.

OpenCode

The self-hosted OpenCode agent. Instead of hooks, Otty installs a small plugin into ~/.config/opencode/plugins.

  • Resume uses opencode --session <id>; Fork uses opencode --fork --session <id>.
  • Heads-up: OpenCode doesn't announce a session when you switch to it via /sessions — Otty only picks it up once you send a message in that session. If a freshly-switched tab looks unlinked, type something and it connects.

Cursor CLI

Cursor's terminal agent, launched as agent (cursor.com/docs/cli). Otty adds entries to Cursor's JSON hooks in ~/.cursor/hooks.json that report each turn's state.

  • Resume reopens a past conversation with agent --resume <chatId>.
  • Fork is not offered — Cursor has no CLI fork command, so the Fork action stays greyed out.
  • Transcripts live under ~/.cursor/projects/…/agent-transcripts/, so History can search and reload them.

Kimi Code

The kimi CLI (moonshotai/kimi-code). Its config home is ~/.kimi-code (override with $KIMI_CODE_HOME). Kimi exposes Claude-Code-style lifecycle hooks declared in TOML, so Otty adds an [[hooks]] entry to ~/.kimi-code/config.toml.

  • Resume uses kimi --session <id>.
  • Fork is not offered.
  • Sessions are stored under ~/.kimi-code/sessions/…, so History can reload them.

Pi and omp

Pi (pi) and omp (omp) share one codebase — omp is a rebrand of pi — and both load TypeScript extensions the way OpenCode loads plugins. Otty installs one extension into ~/.pi/agent/extensions or ~/.omp/agent/extensions that reports each turn's state.

  • Resume reopens a specific session with pi --session <path> (omp --session <path>).
  • Fork branches it into a fresh session with pi --fork <path> (omp --fork <path>).
  • Like OpenCode, pi/omp report the session id through the extension rather than a per-process file, so a freshly-switched tab links up once the agent emits its next lifecycle event.

Other Code Agents

Otty's deep integration — tab badges, notifications, history, resume, and fork — covers the agents above. Any other coding-agent CLI still runs fine in an Otty tab as a plain terminal program; it just won't light up those agent-aware features yet.

  • Resume — an agent that wants its sessions to survive a terminal restart can adopt the Terminal Resume Protocol (OSC 88). It's a vendor-neutral, open spec, so any tool that emits it gets resume in Otty without a bespoke integration.
  • Everything else is not implemented yet. We plan to open the other agent features up over time, likely through extensions or a similar mechanism.

Want your agent supported, or building one that should plug in? Get in touch at otty@appmakes.io.

See also

Otty