Skip to content

Commit bd286bf

Browse files
committed
docs(wiki): catch the manual up to 1.29.0 and add the three run modes it never had
The wiki was written for seven run modes and never received Grok Build, DeepSeek Harness or OMP. They now appear everywhere the others do: the modes table and per-CLI notes, install commands, environment prefixes, the Quick Start table, the requirements rows, the vocabulary, and every "seven modes" count. The 1.27 to 1.29.0 changes land on the pages that own them: attaching a case to an existing container, multi-case adoption and the copy-a-case picker (Docker Cases); file reads over ssh in remote cases and what stays unavailable (Remote SSH Sessions, Working With Files, Security); single-page app routing, frame recovery, localhost links as tabs and the egress guard (Web Tabs); DeepSeek as the one non-Claude mode with real stop/blocked signals and Approvals items, Codex's own work detection, last-response, the model-endpoint routes and refreshed counts (HTTP API, Driving From An Agent, Hooks, Notifications, Keeping Agents Running, Core Concepts); Shift+drag, right-click copy, Auto Copy, the Ctrl+Z guard, font weight, the vertical rail and its activity sort (Keyboard Shortcuts, Input And Voice, The Dashboard, Settings Reference); the 600px phone cutoff, Codex shift arrows and iPhone Duo (Mobile Guide); the Docker Compose route and its update rule (Installation, Running As A Service); four new symptom entries and a "which CLIs" question (Troubleshooting, FAQ). Custom model endpoints are deliberately left to #430, which adds that page and edits Agent CLIs, Settings Reference and the sidebar; these edits stay out of the regions #430, #428 and #376 touch, and all three still merge cleanly on top. Both READMEs: the web-tab menu entry is labelled "Add URL" in the UI, not "Add dashboard". Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
1 parent 3248f35 commit bd286bf

26 files changed

Lines changed: 371 additions & 80 deletions

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ PTY Output → 16ms Server Batch → DEC 2026 Wrap → SSE → Client rAF → xt
443443
- **Clone a GitHub repo as a case** — paste a repository URL into **Add Case → Clone Repo** and Codeman clones it into `~/codeman-cases/<name>` and registers it as a normal case, ready to run an agent in. It preflights the URL while you type (tells you whether it can be cloned anonymously and offers the repo's real branches and tags for the optional branch/tag field), fills the case name in from the URL, and lets you pick which CLI the Run button should use. Public repositories over `https://`; Codeman never collects or stores credentials
444444
- **Multi-CLI** — run **Claude Code**, **OpenCode**, **Codex**, **Antigravity**, **Gemini**, **Pi**, **Grok**, **DeepSeek Harness**, or **OMP** per session; env-var prefixes auto-gate (`CLAUDE_CODE_*` vs `OPENCODE_*` vs `CODEX_*` vs `ANTIGRAVITY_*` vs `GEMINI_*`/`GOOGLE_*` vs `PI_*` vs `GROK_*`/`XAI_*` vs `DSH_*`/`DEEPSEEK_*` vs `OMP_*`). See [`docs/opencode-integration.md`](docs/opencode-integration.md), [`docs/pi-integration.md`](docs/pi-integration.md), [`docs/grok-integration.md`](docs/grok-integration.md), [`docs/deepseek-integration.md`](docs/deepseek-integration.md) and [`docs/omp-integration.md`](docs/omp-integration.md)
445445
- **Custom model endpoints** _(new in 1.29.0, HTTP API for now)_ — point a session's CLI at any OpenAI-compatible endpoint instead of its native backend: a local llama.cpp, llama-swap, Ollama or vLLM box, or a cloud gateway such as Azure AI Foundry or OpenRouter. Save an endpoint once (`POST /api/model-endpoints`; its models are discovered from `/v1/models`), apply it to a session (`POST /api/sessions/:id/custom-model`), and the CLI restarts in place on that endpoint. Verified live for Claude, OpenCode, Pi, Grok and OMP; Codex, Gemini and DeepSeek have documented gaps, Antigravity has no mechanism. A toolbar picker is the follow-up. See [`docs/custom-model-endpoints.md`](docs/custom-model-endpoints.md)
446-
- **Web tabs** — open Grafana, Uptime Kuma, a Vite dev server or any dashboard URL as a tab beside your sessions (Run dropdown → **Web / URL** → **Add dashboard**). Dashboards are proxied through Codeman's own origin, so an `http://` target works from a phone over HTTPS and through the tunnel, single-page apps route on their own paths, and a frame that reloads recovers itself. A `localhost` link an agent prints opens as a web tab automatically. See [`docs/web-tabs.md`](docs/web-tabs.md)
446+
- **Web tabs** — open Grafana, Uptime Kuma, a Vite dev server or any dashboard URL as a tab beside your sessions (Run dropdown → **Web / URL** → **Add URL**). Dashboards are proxied through Codeman's own origin, so an `http://` target works from a phone over HTTPS and through the tunnel, single-page apps route on their own paths, and a frame that reloads recovers itself. A `localhost` link an agent prints opens as a web tab automatically. See [`docs/web-tabs.md`](docs/web-tabs.md)
447447
- **Docker sessions** — run a case inside an isolated, hardened container. One checkbox on **Create New** spins up a container with sensible defaults and starts the agent inside it; multiple sessions share one per-case container, or attach a case to a container you already run; export a container + its workspace to a portable `.tar.gz` to move it to another machine. See [`docs/docker-cases.md`](docs/docker-cases.md)
448448
- **Remote SSH sessions** — point a case at another machine and run the agent there inside a durable remote tmux: survives SSH drops, auto-reconnects, and can discover + attach sessions already running on the host; file previews and downloads come over the same ssh connection. See [`docs/remote-sessions.md`](docs/remote-sessions.md)
449449
- **Effort & Ultracode** — set a per-session default effort (`low`–`max`) or enable **ultracode** (dynamic multi-agent workflows). Soft defaults only — switchable anytime with `/effort` in-session. Extended-thinking budget is configurable too

‎README.zh-CN.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ PTY 输出 → 16ms 服务端批处理 → DEC 2026 包裹 → SSE → 客户端
445445
- **把 GitHub 仓库克隆成 case** —— 在 **Add Case → Clone Repo** 里粘贴一个仓库 URL,Codeman 会把它克隆到 `~/codeman-cases/<name>` 并注册为普通 case,随时可以跑智能体。输入时它会预检 URL(告诉你能否匿名克隆,并为可选的分支/标签字段提供仓库真实的分支与标签),从 URL 里填好 case 名,还让你选 Run 按钮该用哪个 CLI。支持 `https://` 的公开仓库;Codeman 绝不收集或保存凭据
446446
- **多 CLI** —— 每个会话可选 **Claude Code**、**OpenCode**、**Codex**、**Antigravity**、**Gemini**、**Pi**、**Grok**、**DeepSeek Harness** 或 **OMP**;环境变量前缀自动隔离(`CLAUDE_CODE_*`、`OPENCODE_*`、`CODEX_*`、`ANTIGRAVITY_*`、`GEMINI_*`/`GOOGLE_*`、`PI_*`、`GROK_*`/`XAI_*`、`DSH_*`/`DEEPSEEK_*` 与 `OMP_*`)。详见 [`docs/opencode-integration.md`](docs/opencode-integration.md)、[`docs/pi-integration.md`](docs/pi-integration.md)、[`docs/grok-integration.md`](docs/grok-integration.md)、[`docs/deepseek-integration.md`](docs/deepseek-integration.md) 与 [`docs/omp-integration.md`](docs/omp-integration.md)
447447
- **自定义模型端点**(1.29.0 新增,目前仅 HTTP API)—— 让某个会话的 CLI 指向任意 OpenAI 兼容端点,而不是它自己的官方后端:本地的 llama.cpp、llama-swap、Ollama 或 vLLM 机器,也可以是 Azure AI Foundry、OpenRouter 这类云端网关。端点只需保存一次(`POST /api/model-endpoints`,模型列表从它的 `/v1/models` 自动发现),再应用到会话(`POST /api/sessions/:id/custom-model`),CLI 就会在原地重启并接上该端点。Claude、OpenCode、Pi、Grok 与 OMP 已实测通过;Codex、Gemini 与 DeepSeek 存在已记录的缺口,Antigravity 没有可用机制。工具栏选择器是下一步。详见 [`docs/custom-model-endpoints.md`](docs/custom-model-endpoints.md)
448-
- **Web 标签页** —— 把 Grafana、Uptime Kuma、一个 Vite 开发服务器或任何仪表盘 URL 作为标签页打开在会话旁边(Run 下拉菜单 → **Web / URL** → **Add dashboard**)。仪表盘通过 Codeman 自己的源代理,因此 `http://` 目标在手机上走 HTTPS 也能用、走隧道也能用;单页应用能在自己的路径上正常路由,页面自己重载后也能自行恢复。智能体打印出的 `localhost` 链接会自动以 Web 标签页打开。详见 [`docs/web-tabs.md`](docs/web-tabs.md)
448+
- **Web 标签页** —— 把 Grafana、Uptime Kuma、一个 Vite 开发服务器或任何仪表盘 URL 作为标签页打开在会话旁边(Run 下拉菜单 → **Web / URL** → **Add URL**)。仪表盘通过 Codeman 自己的源代理,因此 `http://` 目标在手机上走 HTTPS 也能用、走隧道也能用;单页应用能在自己的路径上正常路由,页面自己重载后也能自行恢复。智能体打印出的 `localhost` 链接会自动以 Web 标签页打开。详见 [`docs/web-tabs.md`](docs/web-tabs.md)
449449
- **Docker 会话** —— 在隔离且加固的容器中运行 case。**Create New** 上勾选一个复选框即可用合理的默认值启动容器并在其中启动智能体;同一 case 的多个会话共享一个容器,也可以把 case 挂到你已经在跑的容器上;可将容器连同工作区导出为可移植的 `.tar.gz`,迁移到另一台机器。详见 [`docs/docker-cases.md`](docs/docker-cases.md)
450450
- **远程 SSH 会话** —— 把 case 指向另一台机器,让智能体在那里一个持久的远程 tmux 中运行:SSH 断连不中断任务、自动重连,还能发现并附着主机上已在运行的会话;文件预览与下载走同一条 ssh 连接。详见 [`docs/remote-sessions.md`](docs/remote-sessions.md)
451451
- **Effort 与 Ultracode** —— 设置每会话的默认 effort(`low`–`max`),或启用 **ultracode**(动态多智能体工作流)。这些都只是软默认值 —— 会话中可随时用 `/effort` 切换。扩展思考预算也可配置

‎docs/wiki/Agent-CLIs.md‎

Lines changed: 85 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Agent CLIs
22

3-
Codeman drives seven run modes: six agent CLIs plus a plain shell. This page covers picking
3+
Codeman drives ten run modes: nine agent CLIs plus a plain shell. This page covers picking
44
one, setting it up, and the differences that actually change how you work.
55

6-
## The seven modes
6+
## The ten modes
77

88
| Mode | CLI | Get it |
99
| -------------------- | ---------------------------- | ---------------------------------------------------------------------- |
@@ -13,6 +13,9 @@ one, setting it up, and the differences that actually change how you work.
1313
| **Gemini** | `gemini` | [github.com/google-gemini/gemini-cli](https://github.com/google-gemini/gemini-cli) |
1414
| **Antigravity** | `agy` | [antigravity.google](https://antigravity.google) |
1515
| **Pi** | `pi` | [pi.dev](https://pi.dev) |
16+
| **Grok Build** | `grok` | [github.com/xai-org/grok-build](https://github.com/xai-org/grok-build) |
17+
| **DeepSeek Harness** | `dsh` | [github.com/deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness) |
18+
| **OMP** | `omp` | [github.com/can1357/oh-my-pi](https://github.com/can1357/oh-my-pi) |
1619
| **Terminal / Shell** | your `$SHELL` | Already installed. |
1720

1821
Any combination works, including all of them. The run mode is chosen per session from the
@@ -47,8 +50,12 @@ If a CLI is installed but a Run button for it never appears:
4750
precisely to avoid this; a hand-written plist or unit will not.
4851
3. Restart the server after installing a new CLI.
4952

50-
`pi` is additionally version-probed rather than trusted by name, because `pi` is a generic
51-
enough command that something else on your PATH may answer to it.
53+
`pi`, `grok`, `omp` and `dsh` are additionally identity-probed rather than trusted by name:
54+
`pi` and `omp` are generic enough that something else on your PATH may answer to them,
55+
`grok` has npm squatters, and Debian ships an unrelated `dsh` (dancer's shell). Each has a
56+
status endpoint (`/api/grok/status`, `/api/deepseek/status`, `/api/omp/status`) that reports
57+
the path and version that actually resolved, so a misresolution is visible rather than
58+
presenting as "the mode just does not work".
5259

5360
## Claude is the reference mode
5461

@@ -62,15 +69,15 @@ output. The other CLIs expose no equivalent.
6269
| Respawn cycling and unattended runs | Yes | Yes |
6370
| Cron jobs | Yes | Yes |
6471
| Docker cases, remote SSH cases | Yes | Yes |
65-
| Precise idle detection (hook-driven) | Yes | Output-stabilization fallback, coarser |
72+
| Precise idle detection | Yes | Codex: same screen check, via its own prompt and working line. DeepSeek: reports its state itself. Others: output stabilization, coarser |
6673
| Auto-resume when a usage limit resets | Yes | No |
6774
| Plan usage chip | Yes | No |
68-
| Approvals Inbox | Yes | No |
75+
| Approvals Inbox | Yes | DeepSeek yes; others no |
6976
| Read My Mind | Yes | No |
7077
| Ralph loop and its task tracker | Yes | No |
7178
| Subagent and team windows | Yes | No |
7279
| Model, effort, and ultracode controls | Yes | No |
73-
| `stop` and `blocked` wait signals | Yes | 400 if you ask for them explicitly |
80+
| `stop` and `blocked` wait signals | Yes | DeepSeek yes; elsewhere 400 if you ask for them explicitly |
7481
| The bundled agent skill | Yes | No |
7582

7683
Everything that makes a session a session works everywhere. What is Claude-only is mostly
@@ -124,6 +131,11 @@ Two behaviours that are deliberate and worth knowing:
124131
- **The wheel is not forwarded** into its transcript. Codex ignores the mouse reports
125132
Codeman would send, so forwarding produced a dead wheel. Scrolling in a Codex session is
126133
local scrollback.
134+
- **Work detection is Codex's own.** Codex declares its `›` composer glyph and its
135+
`esc to interrupt` working line, so it gets the same screen-checked idle detection Claude
136+
does; before 1.26.1 every Codex session reported idle for its whole life. Codex
137+
conversations also appear in Past Sessions and can be resumed, and on phones the keyboard
138+
bar grows `⇧←` / `⇧→` for Codex's queued-message editing and prompt stack.
127139

128140
### Gemini
129141

@@ -157,6 +169,60 @@ Pi needs the opposite instincts from every other CLI here.
157169

158170
Guide: [`docs/pi-integration.md`](https://github.com/Ark0N/Codeman/blob/master/docs/pi-integration.md).
159171

172+
### Grok Build
173+
174+
xAI's `grok`, installed with `curl -fsSL https://x.ai/cli/install.sh | bash` into
175+
`~/.grok/bin`. Codex-shaped on permissions and OpenCode-shaped on rendering:
176+
177+
- **Its bypass switch is `--always-approve`**, Grok's own `bypassPermissions` mode, and the
178+
Run button sends it the way it sends Codex's. In multi-user mode a user without a grant
179+
has it stripped.
180+
- **Authentication is Grok's own**: browser OAuth on first run (a device-code screen inside
181+
a Codeman pane), `grok login --device-auth` for headless hosts, or `XAI_API_KEY` as a
182+
per-session environment override.
183+
- It renders a full-screen TUI, so scrolling is local scrollback.
184+
185+
Guide: [`docs/grok-integration.md`](https://github.com/Ark0N/Codeman/blob/master/docs/grok-integration.md).
186+
187+
### DeepSeek Harness
188+
189+
The mode wired least like the others, for two reasons worth knowing before you use it.
190+
191+
**`dsh` is a launcher, not an agent.** It boots a *profile*, and the three DeepSeek ships
192+
(`web`, `headless`, `base`) cannot drive a terminal pane. So "installed" and "runnable" are
193+
different questions: the Run menu offers **DeepSeek** only once a pane-capable profile
194+
exists, and until then shows **DeepSeek — add a terminal profile…**, which installs the
195+
community `dsh-tui` with one click (`pnpm` must be on PATH, because the launcher spawns it
196+
directly).
197+
198+
**Permissions are an environment variable, not a flag.** The harness has no
199+
skip-permissions switch. `DSH_PERMISSION_MODE` (`read-only`, `workspace-write`,
200+
`danger-full-access`) is the whole control, and it is the one setting Codeman deliberately
201+
carries as an environment variable, because the harness reads it as a soft boot-time
202+
default. In multi-user mode a user without a grant is clamped to `workspace-write`.
203+
204+
The reward for the odd wiring: **DeepSeek is the one non-Claude mode with real signals.**
205+
Its terminal front door reports idle, working and blocked to Codeman, so a DeepSeek
206+
session gets precise idle detection, the `stop` and `blocked` wait signals, and Approvals
207+
Inbox items. Answers are read from the harness's own transcript on disk rather than
208+
scraped off the pane. The model is not a session setting; it is part of the profile.
209+
210+
Guide: [`docs/deepseek-integration.md`](https://github.com/Ark0N/Codeman/blob/master/docs/deepseek-integration.md).
211+
212+
### OMP
213+
214+
Oh My Pi, installed with `curl -fsSL https://omp.sh/install | sh` into `~/.local/bin`.
215+
OMP owns its auth, provider routing and approval mode entirely in `~/.omp`: there is no
216+
Codeman-side login, key field, or bypass switch. Run `omp` once outside Codeman to finish
217+
its own onboarding, and every session started through Codeman inherits that config. Its
218+
documented default approval mode is `yolo`, so an OMP pane auto-approves tool use with no
219+
flag from Codeman; change that in OMP's own config, not here.
220+
221+
OMP conversations appear in Past Sessions and can be resumed, and a respawn continues the
222+
same conversation with `--continue`.
223+
224+
Guide: [`docs/omp-integration.md`](https://github.com/Ark0N/Codeman/blob/master/docs/omp-integration.md).
225+
160226
### Terminal / Shell
161227

162228
A plain shell in a tmux session. No agent, no hooks, no idle detection.
@@ -180,9 +246,15 @@ respawns. Which variables are accepted depends on the mode:
180246
| Gemini | `GEMINI_*`, `GOOGLE_*` |
181247
| Antigravity | `ANTIGRAVITY_*` |
182248
| Pi | `PI_*` |
249+
| Grok | `GROK_*`, `XAI_*` |
250+
| DeepSeek | `DSH_*`, `DEEPSEEK_*` |
251+
| OMP | `OMP_*` |
183252

184253
Anything outside the allowlist is rejected at the schema. This is intentional: the allowlist
185-
is one global list, so widening it for one CLI widens it for all of them.
254+
is one global list, so widening it for one CLI widens it for all of them. In multi-user mode
255+
the keys that could redirect a CLI's traffic or move its config home (`DSH_PERMISSION_MODE`,
256+
`DSH_HOME`, `DEEPSEEK_BASE_URL`, `OMP_AUTH_BROKER_URL`, and the base URLs and config
257+
directories of the others) are dropped for a user without the bypass grant.
186258

187259
Two things that deliberately do **not** travel as environment variables: **effort**, because
188260
an environment variable hard-locks it and blocks `/effort`, and **model**, which is written
@@ -192,9 +264,11 @@ into the case's `.claude/settings.local.json` so that `/model` keeps working.
192264

193265
- **Claude Code** if you want every Codeman feature. Unattended overnight runs, usage-limit
194266
auto-resume, the Approvals Inbox, and subagent visualization all assume it.
195-
- **Codex, OpenCode, Gemini, Antigravity** when you prefer that agent or that model. You get
196-
the session layer, respawn, cron, Docker, and remote SSH; you do not get the hook-driven
197-
features.
267+
- **Codex, OpenCode, Gemini, Antigravity, Grok, OMP** when you prefer that agent or that
268+
model. You get the session layer, respawn, cron, Docker, and remote SSH; you do not get the
269+
hook-driven features.
270+
- **DeepSeek Harness** if you want DeepSeek's models with real status signals. It is the one
271+
non-Claude mode that reports idle, working and blocked to Codeman itself.
198272
- **Pi** if you want a fast, unsandboxed agent and you understand what project trust does.
199273
- **Shell** for the times you want a terminal on your phone with no agent at all. It is a
200274
genuinely useful mode, not a fallback.

‎docs/wiki/Contributing.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ Conventions for wiki pages:
108108
- Images are referenced from the main repository over raw URLs rather than being copied into
109109
the wiki.
110110
- Say what the default is, especially when it is off. Most of Codeman is opt-in.
111-
- Label Claude-only behaviour every time it appears. Six of the seven run modes are not
111+
- Label Claude-only behaviour every time it appears. Nine of the ten run modes are not
112112
Claude.
113113

114114
## Conduct

0 commit comments

Comments
 (0)