首次启动若无法自动创建 .ccb 目录需手动 mkdir -p .ccb;空白项目默认只开一个 demo 代理,不会自动挂载多代理团队;Config UI 只绑定回环地址,需在 .ccb/ccb.config 里配置 token 来源而非写死 token。
claude_codex_bridge
SeemSeam活跃维护把 Codex、Claude、Gemini 等多个 AI 编码 Agent 放进同一个可见的 CLI 工作区,让它们协作或对比着写代码,省去在多个终端间来回切换。
Visible multi-agent CLI workspace for mixing Codex, Claude, Gemini, Kimi, Qwen, Cursor, Copilot, Pi, OpenCode, and other AI coding agents
ccb
mkdir -p .ccb
ccb config validateREADME 未说明显存或 GPU 要求;平台支持 Linux、macOS、WSL 和 Windows(beta)。
把 Codex、Claude、Gemini 等多个 CLI 编码代理放进同一个可见 TUI 工作区协同干活
把 Codex、Claude、Gemini 等多个 AI 编码 Agent 放进同一个可见的 CLI 工作区,让它们协作或对比着写代码,省去在多个终端间来回切换。
核心能力
- 用 TUI 分屏布局同时挂载多个 CLI 代理并可直接接管
- 支持 A->B->C、A,B->C 等复杂代理间通信拓扑
- 后台守护进程在关闭前台 UI 后仍保持项目状态
- 内置 /ask 指令让代理互相委派任务并交接
- Android 手机端可远程控制代理、语音输入和传文件
容易踩的坑
- v8.7.21最新正式版2026-11-02 · 2026-11-02 02:34 UTC
v8.7.21
Released: 2026-11-02
English
Fixes and native Provider support
- Address #401: legacy OpenCode observation no longer opens the Provider database or its WAL index with SQLite. CCB reads query-only private copies of the database and WAL, leaving the live
-shmuntouched. This removes CCB's reported shared-index truncation path; it is not a claim to reproduce every upstream SIGBUS failure. - Address #402: OpenCode 2.2.x gains opt-in native task admission and completion, qualified against 2.2.4. Tasks bind an exact native session, workspace, input ID and prompt hash. Native
idleoutcomes finish tasks; completed tool steps alone do not. Lost admission responses never trigger replay. Incompatible legacy schemas now fail explicitly before business submission instead of silently waiting for replies. - OMP tasks use native task ingress and durable reply receipts, with explicit handling for rejected or ambiguous admission. Existing terminal-based interfaces remain available for providers that use them.
Upgrade and configuration
- Upgrade with
ccb update, ornpm install -g @seemseam/[email protected]for npm-managed installations. Already running processes retain their loaded code; refresh affected agents normally once idle. Do not delete Provider data or replay uncertain tasks as part of this upgrade. - OpenCode v2 is explicit opt-in: set
CCB_OPENCODE_API_VERSION=2,CCB_OPENCODE_API_URLto an existing loopback HTTP service, and startup arguments--session ses_.... An explicit--servermust match that origin. For Basic authentication, setCCB_OPENCODE_API_PASSWORD_ENVto the name of an environment variable containing the existing service password. CCB does not discover credentials, start a global service, or choose the newest session. - See OpenCode completion and configuration contract. Existing mounted agents and Mobile discovery are not automatically migrated. Windows support remains beta.
Validation and limits
- Source regression: 359 passed, 2 environment-gated skips. Installed preview regression: 223 passed, 2 skips. Actual OpenCode 2.2.4 service testing used the installed CCB with isolated homes and a local simulated model: queued admission, held streaming without premature completion, exact queued-input cancellation and native idle completion passed. OpenCode 1.19.5 native service regression also passed. OMP 18.13.3 native task/reply integration passed in the prerequisite repair.
- The real-service smoke did not use a paid/cloud model or reproduce the reporter's Arch environment. Multi-step tool and malformed-protocol paths have automated contract coverage; production project and Mobile/VM end-to-end retesting is not claimed.
- OpenCode 2.2.x has no atomic active interrupt fenced by expected input ID. CCB cancels exact pending inbox inputs and detects observed delivery races; a 204 is not proof that active work stopped. Active-turn cancellation and restart-time execution observation restore remain unsupported. Streaming previews are best effort.
中文
修复与原生 Provider 支持
- 处理 #401:旧版 OpenCode 状态读取不再通过 SQLite 打开 Provider 的数据库或 WAL 索引。CCB 对数据库与 WAL 的私有副本执行只读查询,不触碰运行中的
-shm,消除报告中 CCB 截断共享索引的路径;不宣称复现了上游所有 SIGBUS 故障。 - 处理 #402:为 OpenCode 2.2.x 增加显式启用的原生任务提交与完成判定,已使用 2.2.4 验证。任务精确绑定原生 session、工作目录、输入 ID 和提示词哈希,由原生
idle结果判定完成,不把工具步骤结束当成整轮结束。准入响应丢失不会触发重放;旧版读取器遇到不兼容表结构时,会在发送业务任务前明确报错,不再静默等待回复。 - OMP 任务改用原生任务入口和持久回复回执,明确处理拒绝或归属不确定的准入。其他依赖终端的 Provider 接口继续可用。
升级与配置
- 使用
ccb update升级;npm 安装可执行npm install -g @seemseam/[email protected]。运行中的进程继续使用已加载代码,请在相关 agent 空闲后正常刷新。本次升级不需要删除 Provider 数据,也不应重放结果不确定的任务。 - OpenCode v2 需要显式启用:设置
CCB_OPENCODE_API_VERSION=2,将CCB_OPENCODE_API_URL指向现有本机回环 HTTP 服务,并通过启动参数指定--session ses_...;显式--server必须与该地址一致。使用 Basic 鉴权时,将CCB_OPENCODE_API_PASSWORD_ENV设置为保存现有服务密码的环境变量名。CCB 不自动发现凭据、启动全局服务或选择最新 session。 - 详见 [OpenCode 完成与配置契约](https://github.
- Address #401: legacy OpenCode observation no longer opens the Provider database or its WAL index with SQLite. CCB reads query-only private copies of the database and WAL, leaving the live
- v8.7.202026-10-29 · 2026-10-29 09:08 UTC
查看更新说明
v8.7.20
English
- Integrate PR #400: chat bubbles and content readers use one selectable
CcbMarkdownwidget backed bygpt_markdown1.3.4. - Add syntax-highlighted fenced code with language labels and copy controls, task-list checkboxes, and LaTeX using
\( … \)/\[ … \]. Dollar-delimited math is not enabled. - Preserve artifact actions, external-link confirmation, blocked unsupported schemes, and app-themed Markdown colors.
- Pin below 1.4.0 to retain compatibility with Flutter Material themes. Raise the declared Dart floor to 3.9 and regenerate dependencies with the release SDK, Flutter 3.44.2, removing seven unrelated dependency upgrades.
- Include the mounted-Agent hibernation proposal and isolated prototype evidence; automatic production hibernation is not implemented by this release.
- Known display limitation: task-list checkboxes retain extra bullet/vertical spacing. Targeted reader, bubble and composer verification passed 98 tests during integration. Isolated narrow-width Markdown smoke covered code, long tables, links, math, task lists and quotes; this is not a new Android gateway/Relay end-to-end qualification.
- Update the Android app to receive the renderer change. Windows remains beta. No busy Agent restart or history reset is required for this app renderer update.
中文
- 集成 PR #400:聊天气泡和内容阅读器统一使用可选择文本的
CcbMarkdown,底层为gpt_markdown1.3.4。 - 围栏代码支持语法高亮、语言标签和复制按钮;增加任务列表复选框及
\( … \)/\[ … \]LaTeX 渲染,不启用美元符号公式。 - 保留文件操作、外链确认、非支持协议拦截与应用主题颜色。
- 固定低于 1.4.0,避免独立 Material 库与应用主题不兼容。Dart 声明下限调整为 3.9,使用发布 SDK Flutter 3.44.2 重整锁文件,撤销七项无关依赖升级。
- 同时收录 Agent 休眠方案与隔离原型证据;本版本不宣称已实现生产自动休眠。
- 已知显示限制:任务列表仍有额外圆点和较大间距。集成时阅读器、气泡、composer 共 98 项针对性测试通过;隔离窄屏烟测覆盖代码、长表格、链接、公式、任务列表和引用,不等于新增 Android gateway/Relay 端到端验收。
- 升级 Android App 获得新渲染器;Windows 仍为 beta。此应用渲染更新不需要重启忙碌 Agent 或清空历史。
- Integrate PR #400: chat bubbles and content readers use one selectable
- v8.7.192026-10-26 · 2026-10-26 06:31 UTC
查看更新说明
v8.7.19
English
OMP Mobile native questions and runtime status
- Render native Collab select/editor questions as separate interactive cards, with descriptions and custom text input. Answers use
ui-response, not ordinary chat prompts, over HTTP or encrypted Relay. - Fence answers to namespace, native session, generation and request ID. Clear ended/disconnected requests; uncertain sends are not automatically retried. Pending questions prevent ordinary prompts from draining through the dialog.
- Show bounded native runtime metadata: elapsed time, current step, queue depth, model/thinking/context usage, task progress and Todo counts. Missing evidence stays unavailable rather than being inferred from prose or terminal rendering.
- Show running status inside the current working reply bubble without repeating it above the timeline. Preserve assistant prose and remove misleading unfinished/no-answer placeholders.
Readable content and reliable attribution
- Replace raw JSON original-content pages with a full-screen semantic Markdown reader. Reasoning and tools fold independently; Unicode-safe pages retain immutable version/branch fences and exact source blocks.
- Replace the mobile Tab shortcut with the Codex Queue action, preserving user drafts and uploaded attachments.
- Keep Pi/OMP completion tracking bound to the parent session through in-process subagent turns; subagent events no longer supersede the parent request or leak into its reply.
Verification and upgrade
- Exercised before release preparation: 154 targeted Python tests, 40 Bun runtime tests and 91 targeted Flutter tests passed; Flutter analysis reported no issues. A real OMP 18.12.6 CollabHost completed select/editor responses with zero model calls. Android API 35 exercised actual option selection and editor submission in an isolated application surface.
- These are targeted checks, not a full-suite or every-device qualification claim. The Android card smoke and native host smoke are separate checks, not a claim of one combined live-project network scenario.
- Upgrade the server gateway and Android app together. Existing OMP processes load the bridge after a normal restart when idle. Do not interrupt busy agents or clear history. Unsupported/oversized dialogs still require desktop interaction. Windows remains beta.
中文
OMP 手机原生交互与运行状态
- Collab 原生选择/编辑问题显示为独立交互卡片,支持选项说明及自定义输入。通过 HTTP 或加密 Relay 返回原生
ui-response,不再作为普通聊天消息排队。 - 使用命名空间、会话、代次和请求编号防止旧答案误投;请求结束或断线清除待答状态,发送结果不明时不自动重试。原生对话待回答期间不继续派发普通排队消息。
- 展示有界原生状态:运行时间、当前步骤、队列深度、模型/思考等级/上下文用量、任务进度及 Todo 数量。缺失证据保持不可用,不从正文或终端文字猜测。
- 正在运行的状态放在当前回复气泡内,不在时间线上方重复显示;保留助手正文,去掉误导性的“工具未完成/无回答”占位。
内容阅读与回复归属
- 原始 JSON 页改为全屏语义 Markdown 阅读器,思考和工具独立折叠;Unicode 安全分页保持不可变版本/分支边界及精确源文本。
- 手机 Tab 快捷键改为 Codex Queue 操作,保留草稿与上传附件。
- Pi/OMP 请求绑定在进程内子代理回合期间仍归属父会话,子代理事件不再覆盖父请求或混入父回复。
验证与升级
- 发布准备前已执行:154 项针对性 Python 回归、40 项 Bun 运行时回归、91 项 Flutter 回归通过,Flutter 静态分析无问题。真实 OMP 18.12.6 CollabHost 选择/编辑回复通过,零模型调用;Android API 35 隔离界面实际点选与编辑提交通过。
- 以上不是仓库全量测试或所有设备验收;Android 卡片与原生宿主分别验证,不冒称一次完整真实项目网络联调。
- 服务端 gateway 和 Android App 一起升级;已有 OMP 空闲后正常重启加载桥接,不中断忙碌 Agent,不清空历史。超出有界限制的对话仍需桌面处理;Windows 继续作为 beta。
- Render native Collab select/editor questions as separate interactive cards, with descriptions and custom text input. Answers use
- v8.7.182026-10-23 · 2026-10-23 01:30 UTC
查看更新说明
v8.7.18
English
Stable OMP Mobile connections and complete history
- Keep an authenticated healthy Collab connection alive when a history query fails. Report history and connection failures separately instead of repeatedly closing/rejoining as
collab:1/collab:2. - Replace whole-session ancestry export and its 16,384-entry ceiling with indexed native parent-chain pages, bounded to 128 records / 256 KiB. Signed cursors are owner/session/branch-fenced and remain valid across appends; genuine branch changes reject stale cursors.
- Retain at most 512 recent entries / 4 MiB in the live bridge while consuming the native snapshot barrier. Older history is read on demand, not lost when the recent replica evicts it. Oversized records use lossless byte chunks; complete turns preserve intermediate prose, tool calls and results.
- Preserve loaded phone pages and disclosure state across same-branch refreshes. Fence cross-transport append races so stale pending/stream metadata cannot duplicate an already durable input.
Readable, bounded reply bubbles
- Oversized replies display structured recent content directly in the bubble rather than only a 512-character prefix and a raw original-content link.
- Bound each serialized inline item, including its original-content cursor, to 24 KiB, at most 8 entries / 24 blocks. Prioritize latest assistant prose (up to 8,000 Unicode characters, reduced by the actual byte budget); recent process snippets are limited to 1,500 characters per block.
- Replace the bounded window within the same bubble on refresh rather than accumulating stale windows. Keep normal full-turn merging unchanged. Oversized user inputs retain a readable bounded tail. Original content and its hash remain unchanged and separately pageable.
Verification and upgrade
- Local Android API 35 emulator, actual OMP 18.12.6 native host, generated bridge, production gateway and encrypted Relay passed long-history and readable-bubble scenarios. The fixture contained 28,702 records, a 19,001-entry metadata gap, 141,678,063 raw history bytes and 63,257,173 replicated message bytes. All 200 initial conversation items were traversed; the 987,082-byte Unicode/tool original matched its SHA-256 after 31 content pages.
- Verified history failure/recovery without extra join/leave notices, append-safe replay, genuine branch isolation, FIFO, and same-bubble live tail replacement. No paid model requests. Actual OMP PTY reply-receipt smoke also passed after the history bridge changes.
- Release qualification: 285 targeted Python regressions, 21 runtime tests and 62 targeted Flutter tests passed; Flutter analysis reported no issues, npm pack verification passed, and actual OMP PTY receipt smoke passed. These are exercised selections, not a claim that the entire repository suite was run.
- Update server and Android app together. Already-running OMP extensions need a normal restart when idle; do not interrupt busy Agents or clear history to upgrade. The legacy macOS route and other Provider routes are unchanged; Windows remains beta. Existing pairing is preserved by the managed Mobile gateway restart.
- The emulator scenarios use isolated fixtures, not a claim that every phone/network or live project has been qualified. The local modified gateway was separately installed and restarted for owner testing; no formal release tag was previously published for those source changes.
中文
稳定连接与完整历史
- 历史查询失败不再关闭健康的 Collab 连接;区分历史数据错误和连接错误,避免
collab:1/collab:2反复跳动。 - 全量 ancestry 导出及其 16,384 条上限改为原生索引父链分页,每页最多 128 条 / 256 KiB。签名游标绑定宿主、会话及分支,支持同分支追加;真实分支变化时拒绝旧游标。
- 实时桥最多保留 512 条 / 4 MiB 近期记录,并正常消费原生快照结束屏障;旧历史按需读取,不因近期缓存淘汰而丢失。超大记录分块无损传输,完整回合保留中间正文及工具调用、结果。
- 同分支刷新保留手机已加载旧页和展开状态;修复原生历史先于实时快照到达时,旧待发/流式信息造成重复输入的竞态。
有上限的可读对话泡
- 超长回复直接显示最近的结构化正文与执行信息,不再只有开头 512 字符和原始 JSON 阅读入口。
- 单项包含原文游标的序列化内容不超过 24 KiB,最多 8 条记录 / 24 个块;优先保留最新正文,最多 8,000 个 Unicode 字符,实际字节预算不足时缩短;过程单块最多 1,500 字符。
- 同一气泡刷新替换最新窗口,不累积旧窗口;普通完整回合的合并保持不变。超长用户输入显示有界尾部,完整原
- Keep an authenticated healthy Collab connection alive when a history query fails. Report history and connection failures separately instead of repeatedly closing/rejoining as
- v8.7.172026-10-22 · 2026-10-22 12:53 UTC
查看更新说明
v8.7.17
English
OMP reply receipts are not business completion
- Returned replies no longer have to wait behind an entire long-running OMP business turn. The native bridge exposes bounded, owner-bound
reply_deliverandreply_statusrequests;reply_capabilitiesadvertisesreply_ingress_version: 1. - A custom
ccb-replyis delivered as an aside at a safe step boundary, without clearing the composer, superseding the active ask anchor, or starting a concurrent turn. - Only a persisted native
custom_messagewith the exactccb-replydelivery identity and matching body hash counts as a receipt. A request being accepted, queued or still pending is not proof of receipt. - That receipt releases the delivery mailbox. It means the reply has reached native session history, not that the recipient has finished reading, reasoning about, or acting on it. Subsequent business processing keeps its own lifecycle.
- Ambiguous sends are resolved through status queries rather than blindly replayed. Pending, missing and unknown outcomes are not promoted to successful receipts.
Upgrade and compatibility
- Existing OMP processes must restart normally when idle to load the updated extension. Updating files alone does not change an already running extension; do not interrupt or restart a busy session, including busy
nozeli, to apply this update. - Update server and Android app together. Current metadata and APK references are v8.7.17; the Android build number is 8070017. Windows retains beta status.
- Preserve v8.7.16's sender-identity recovery and historical release entries. The WeChat invitation image and README QR cache key
a9f2d800are unchanged.
Release qualification
- Publication requires a passing receipt smoke against the actual installed OMP. Source-level expectations or an accepted bridge request alone do not qualify as persisted native receipt evidence.
- Local preview installed with the release installer; installed
ccb --print-versionreturnedv8.7.17. 363 targeted regressions and npm pack verification passed. - Actual installed OMP 18.12.6 PTY plus a loopback streaming provider: two replies admitted while a native tool was running, both exact on-disk receipts consumed at 1.32s before the original turn finished at 1.36s. Duplicate admission produced no extra native entries; original anchor and unsubmitted draft remained unchanged. No external model requests or live-project business replay.
- Admission intent is fsynced before native send. Receipt requires a matching newline-terminated native JSONL record and fsync; in-memory queue acceptance alone never completes delivery. Unresolved intents fail closed across restart.
中文
OMP 回复收据不等于业务处理完成
- 返回回复不再必须等待 OMP 的整个长业务回合结束。原生桥提供有界、绑定归属的
reply_deliver、reply_status请求,通过reply_capabilities的reply_ingress_version: 1声明支持。 - 自定义
ccb-reply在安全步骤边界作为 aside 投递,不清空输入框、不取代活跃 ask 锚点,也不启动并发回合。 - 只有具有精确
ccb-reply投递身份、正文哈希匹配且已持久化的原生custom_message才算收据。接口接受、排队或 pending 均不代表已经收到。 - 收据用于释放投递邮箱,表示回复已进入原生会话历史,不代表接收方已完成阅读、推理或后续业务处理;业务处理保留自己的生命周期。
- 发送结果不明时查询状态,不盲目重放。pending、missing、unknown 状态不能被提升为成功收据。
升级与兼容性
- 已有 OMP 进程必须在空闲后正常重启,才能加载新扩展。仅更新磁盘文件不会改变已运行的扩展;不要为升级打断或重启忙碌会话,包括忙碌的
nozeli。 - 服务器与 Android 应用一起更新。当前版本元数据与 APK 引用为 v8.7.17,Android 构建号为 8070017;Windows 继续保持 beta 状态。
- 保留 v8.7.16 的发送者身份恢复与全部历史版本记录。微信邀请图片及 README 二维码缓存标识
a9f2d800保持不变。
发布资格
- 发布前必须通过真实已安装 OMP 的收据冒烟验证。仅源码预期或桥请求被接受,不能替代原生持久化收据证据。
- 已使用发布安装器安装本地候选,已安装
ccb --print-version输出v8.7.17;363 项针对性回归与 npm 打包检查通过。 - 真实已安装 OMP 18.12.6 PTY 配合本地流式接口:原生工具运行中接收两条回复,1.32 秒时两条磁盘收据均被消费,原回合 1.36 秒才结束。重复准入未新增记录,原锚点与未发送草稿不变;未调用外部模型、未重放真实项目业务。
- 原生发送前 fsync 投递意图;收据必须匹配完整原生 JSONL 记录并完成 fsync,不能凭内存排队判定成功;重启后未解决意图保持未知且不重放。
- Returned replies no longer have to wait behind an entire long-running OMP business turn. The native bridge exposes bounded, owner-bound
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
CCB - Mobile Has Arrived!
A lightweight multi-agent TUI with a stable cross-provider collaboration layer Coordinate Codex, Claude, Gemini, and other CLI agents in visible, controllable workflows you can take over
中文 | English | 日本語 | Français | Deutsch | العربية | Español | Português | 한국어 | Русский
Quick Start · Message Queues · Mobile App · Rich Mode · Configure Agents · User Guide · Developer Guide
Why CCB?
- Stable inter-agent communication for complex collaboration graphs such as
A -> B -> C,A,B -> C, andA -> B,C. - Interactive CLI agents are full native terminals with visible layout control and direct takeover; service-backed providers keep an explicit managed host/log surface without pretending it is their request protocol.
- The background daemon keeps project state alive even when the foreground UI is closed.
- Hub capability: run multiple CLI providers concurrently from one command.
- Mobile remote controller: cross-provider voice control, file transfer, and remote terminal access.
New in 8.7.21: OpenCode v2 and native Provider reliability / OpenCode v2 与原生通信修复
OpenCode 2.2.x gains opt-in native task submission and idle completion. Legacy OpenCode reads use private snapshots to avoid touching Provider WAL indexes; OMP tasks use native ingress. See bilingual release notes and the OpenCode configuration contract.
OpenCode 2.2.x 新增显式启用的原生任务提交与完成判定;旧版 OpenCode 使用私有快照读取,OMP 使用原生任务入口。启用方式与限制见版本说明。
New in 8.7.20: Mobile Markdown rendering / 手机 Markdown 渲染升级
Chat and content readers share a selectable gpt_markdown renderer with syntax-highlighted code, copy controls, task checkboxes and LaTeX. Existing artifact routing and external-link confirmation are preserved. Bilingual notes.
New in 8.7.19: OMP Mobile native questions and runtime status / OMP 原生交互与运行状态
OMP Mobile now renders native OMP Collab select/editor questions as interactive cards and returns answers through the fenced native ui-response channel over HTTP or encrypted Relay. The workspace also shows bounded native runtime status such as the current step, elapsed time, queue depth, model/thinking/context usage, task progress and Todo counts. Upgrade the server and app together; idle existing OMP processes must be restarted normally to load the bridge, and busy agents must not be interrupted.
New in 8.7.18: Stable OMP Mobile History / 稳定长历史
OMP Mobile now paginates stable long history through bounded native parent-chain pages. History-query errors preserve a healthy WebSocket and already-loaded content. Oversized replies keep a structured latest-content bubble capped at 24 KiB, 8 entries and 24 blocks; complete originals remain available as a secondary reader. Upgrade both the server and app, then restart existing OMP processes normally when idle; do not interrupt busy agents or discard history.
New in 8.7.17: OMP Reply Receipts, Not Business Completion
OMP replies use bounded, owner-bound native reply_deliver / reply_status delivery. A ccb-reply is received as an aside at a safe step boundary; only a persisted native custom_message counts as a receipt and releases the mailbox. Receipt does not mean subsequent business processing is finished. Drafts and active ask anchors remain intact, no concurrent turn is started, and ambiguous sends are queried rather than replayed. Notes.
New in 8.7.16: OMP Python Ask Sender Identity Recovery
When CCB environment variables are filtered, OMP Python ask now recovers the sender identity from the exact configured managed PI_CODING_AGENT_DIR. Existing identity precedence is preserved, and historical jobs are not replayed. The WeChat group 2 QR code has also been refreshed and is valid until October 29. Notes.
New in 8.7.15: Reliable OMP Mobile Turns
Linux OMP Mobile now preserves earlier reply text while appending same-session updates, with tool reasoning folded in place. Runtime sends use a persisted FIFO and run serially; queued sends remain visible but cannot steer an active turn, and disconnects with an unknown outcome are held instead of blindly replayed. This release also includes the 8.7.14 Relay and large-history fixes. The legacy macOS route is unchanged. Notes.
New in 8.7.13: OMP Mobile Collab on Linux
Linux OMP agents now connect Mobile to the existing native TUI through a private loopback Collab relay, with live output, reasoning, tool calls, and results grouped into user-anchored reply bubbles. Mobile can select the current native model and supported thinking level in the same host session. The new route is Linux-only: macOS keeps the original OMP terminal-input and native-history route, and other providers are unchanged. Notes.
New in 8.7.12: Reply Queue Recovery and Composer Compatibility
Recover proven stale delivery leases without duplicating pending jobs, correct silent/callback completion status, and recognize newer Claude/Codex input layouts. Notes.
New in 8.7.10: Faster Pi Plugin Startup
Reuse verified plugin snapshots, share resolved dependencies, recover interrupted builds and honor startup timeout overrides. Verified with real Pi plugin loading and two-agent cold/warm startup. Notes.
New in 8.7.7: Codex Fullscreen Delivery Fixes
Fix accepted jobs waiting behind native Codex fullscreen status/shortcut rows and ordinary replies mentioning esc to interrupt, while preserving human drafts, busy/menu guards and FIFO. Notes.
New in 8.7.6: Claude/Codex Delivery Reliability
Recognize native Claude pasted envelopes and empty Codex composers with newer status bars; preserve draft protection. Notes.
New in 8.7.5: Safe OMP/Pi Model Selection
Opening /model or another control-only selector no longer supersedes an
active OMP/Pi ask. CCB now waits for a real provider turn boundary before
classifying different user input as replacement work. See the
verification and upgrade guidance.
New in 8.7.4: Conversation Continuity First
Claude and Codex preserve usable local history across account/key/gateway changes. Pi follows manual session switches; OMP accepts its newer history header format. See verified scope and upgrade guidance.
New in 8.7.3: Model-Independent Input Protection
Codex composer detection no longer matches model names. Claude suggestion, accepted-draft and ordered return-delivery regressions accompany real continuous communication verification. Experimental Claude native plugins remain disabled. Install/update onboarding no longer recommends the six V3 preview roles; explicit installation and updates for installed roles remain available. See upgrade guidance and layout limitations.
New in 8.7.2: Recovery and Queued Delivery Fixes
Fix Codex recovery commands with duplicate resume arguments, abandoned OMP editor sockets, and padded Codex empty-input detection. Queue details now show input-guard waiting reasons. See upgrade guidance and remaining limitations.
New in 8.7.1: Open Rich Files with Your Default App
Click a file or press Enter to open it with the system default application;
folders stay inside the file browser. Both safe and rich profiles use the same
behavior. macOS uses open; Linux prefers gio open, then xdg-open when GIO
is absent; WSL uses wslview from wslu to open with the Windows default app.
WSL requires enabled Windows interop and reports a missing bridge explicitly.
After upgrading CCB, run ccb update rich and reopen the file-browser pane.
See the 8.7.1 notes for validation and limitations.
New in 8.7.0: Humans and Agents Share the Queue
Human / agent queue mode
Incoming agent messages wait while you compose a draft, avoiding interruption or accidental submission of your text together with a returned result. CCB first waits for the target agent's current turn to end, then checks the input box for the message at the front of the queue.
- Empty input: deliver the next eligible message in queue order.
- Nonempty input: wait up to 180 seconds. Clearing or submitting your draft releases the message once the agent is idle again.
- Still nonempty after 180 seconds: clear the draft once, confirm the box is empty, then deliver. Continuing to type does not reset this timer; this mode does not preserve a draft indefinitely.
- Busy, modal or unrecognized input state: keep waiting without clearing or sending. Closing the modal or restoring the normal input surface allows checks to continue.
Agent / agent queue mode
Requests (ask) and returned results (back) share one chronological FIFO
queue per target agent. Each message waits until the target finishes processing
the previous one, including returned results. Later replies cannot interrupt
an earlier reply's processing turn; different agents can still work in parallel.
We recommend testing these queue modes with Claude, Codex and OMP in managed tmux panes. Input protection for other providers will follow; their existing delivery behavior is unchanged and should not be assumed to protect drafts. OMP currently requires its default Status Band input layout and the new managed extension. After upgrading, restart the project when idle to load the new daemon and provider extensions.
This is a first version for testing. Codex/Claude deadline clearing uses Ctrl-C;
a simultaneous user action can still cause interruption. The final screen-check,
paste and Enter sequence is not atomic against typing at that exact instant.
See the 8.7.0 notes for tested
scope, upgrade guidance and the Codex remote-session recovery limitation.
How to Install
Install or update an npm-managed CCB with npm:
npm install -g @seemseam/ccb@latest
For GitHub release-package or source installs, use CCB's transactional updater:
ccb update
On an npm-managed install, ccb update prints the equivalent npm command and
does not modify npm's vendored payload in place.
The Windows beta artifact is attached to the matching stable CCB GitHub
release. Download ccb-windows-x86_64.zip and its .sha256 sidecar, verify
the digest, extract the ZIP, then run:
.\install.ps1 install -Yes
ccb --print-version
It requires native Windows x64, Python 3.10+, WezTerm, Git Bash, and Herdr
0.8.0 or newer. The installer creates an install-local managed Python runtime.
The binaries are unsigned, and ccb update remains diagnostic-only for this
beta support tier; install a later Windows build by rerunning its validated
install.ps1.
CCB-managed provider panes suppress known provider-native startup update prompts.
After updating CCB—or immediately when CCB is already current—ccb update
checks installed provider CLIs and offers supported updates once. Use
--providers check, --providers all, or --providers none for explicit
report-only, non-interactive update, or skip behavior. Declining prompts again
on the next ccb update; skipping a version hides only that exact version.
CCB never restarts active provider panes during this flow, so an accepted
provider update applies when that pane next starts or is explicitly restarted.
After a release change, the newly installed CCB also retires old
project-scoped Claude/Gemini caches. Manifest-valid caches for deleted projects
are removed immediately. A stopped current project is cleaned immediately;
active or other existing projects are preserved and cleaned after their next
successful ccb kill. Unknown providers, malformed manifests, foreign
symlinks, sessions/auth, and the user-scoped Gemini cache are never removed by
this migration. Use ccb update --no-cache-cleanup to skip it for one update.
To roll back, use the same transactional updater with an older released version,
for example ccb update 8.1.3. CCB rejects a same-version artifact whose build
identity differs from the installed build, and restores the prior local prefix
if the update transaction fails. If restoration itself cannot complete, CCB
retains and reports the external recovery backup path.
If npm is not convenient in your environment, download the matching package from Releases, unpack it, and install:
tar -xzf ccb-*.tar.gz
cd ccb-*
./install.sh install
Source install is intended only for development or temporary fallback:
git clone https://github.com/SeemSeam/claude_codex_bridge.git
cd claude_codex_bridge
./install.sh install
Source install links global ccb / ask back to the checkout. Regular users should prefer the npm package.
Quick Start
1. Launch
Run this from your working directory:
ccb
If startup reports that .ccb cannot be created automatically or that the project anchor is missing, create .ccb manually:
mkdir -p .ccb
2. Configure The Workspace
A blank project starts light: CCB opens one main window with a single agent named demo, selecting the first supported CLI available on the machine (Codex, Claude, Gemini, then other providers). It no longer mounts a multi-agent team by default.
Click the ⚙ Settings icon at the top-left of the CCB sidebar to open the local configuration control panel. You can also run ccb config ui from the project directory.
Persistent local Config UI access
The Config UI always binds to loopback. To use a stable local port and token, configure a token source in .ccb/ccb.config; never put a literal token in that file:
[config_ui]
port = 43123
token_env = "CCB_CONFIG_UI_TOKEN"
# Or use this instead of token_env:
# token_file = ".ccb/config-ui.token"
--port remains a one-run override. token_file must be project-relative, non-symlinked, and owner-only (chmod 600 .ccb/config-ui.token on POSIX). Without a token source, CCB keeps the existing random token and ephemeral-port behavior. The CLI prints only the loopback URL and token source, never the token value.
The panel edits windows, pane splits, providers, models, thinking levels, API overrides, workspaces, Rich mode, and sidebar settings. It validates changes before saving and supports reload dry-runs and guarded hot reload. Saving creates .ccb/ccb.config and pins the selected provider and topology for this project.
For an advanced multi-agent topology, edit it visually or create .ccb/ccb.config manually. In v2 [windows], , and ; control vertical stacking and horizontal splits inside each window, so A,B;C,D is close to a four-pane layout.
version = 2
[windows]
main = "main:codex"
work = "worker1:codex(worktree), worker2:claude(worktree)"
review = "reviewer:claude, qa:gemini"
[ui.sidebar]
mode = "every_window"
width = "15%"
bottom_height = 20
agents_height = "50%"
comms_height = "15%"
tips_height = "35%"
comms_limit = 3
Validate the config and start the workspace:
ccb config validate
ccb
3. Collaborate
You can type directly in any agent pane, or let agents collaborate:
/ask reviewer review the latest parser changes and list blocking issues.
Agents can also call /ask during workflow orchestration to delegate and hand off work. Use agent memory or the project-wide shared memory file .ccb/ccb_memory.md for durable coordination.
Mobile Remote Control (Android)
The recommended way to control CCB from a phone can connect to all CCB projects, control each agent, accept voice input, and transfer files.
ccb update mobile
This command guides installation and configuration.
CCB 8.7.21 includes the Flutter CCB Mobile source in mobile/ and publishes the Android APK through GitHub Releases:
- Download CCB Mobile v8.7.21 APK
- App source:
mobile/app - Server gateway source:
lib/mobile_gateway
The phone app is a remote controller for real CCB projects running on a server. It can discover mounted projects from the server-wide mobile gateway, switch windows and agents, render agent conversation context, send text through pane-native input, open a terminal view, and upload/download images and documents through the authenticated gateway.
Safety boundary:
- The CCB gateway binds to loopback by default, for example
127.0.0.1:8787. - For direct LAN access, bind one specific private interface address (wildcard and public addresses are rejected):
ccb install mobile --route-provider lan --listen 192.168.31.155:8787. The pairing URL is inferred from--listen; no forwarding process or--public-urlis needed. - Remote access uses Tailscale Serve, not Tailscale Funnel.
- CCB does not store Tailscale passwords, OAuth tokens, admin API tokens, or automatically modify tailnet ACLs/grants.
- The phone receives only the scopes authorized by the pairing profile, such as view, content, terminal, file upload, and file download.
Rich Media Terminal
Browse file trees, open files, edit documents, and preview media inside the terminal.
ccb update rich
After rich mode is enabled, plain ccb opens the rich WezTerm launcher automatically unless it is already running inside a CCB-managed rich WezTerm session. Run ccb uninstall rich to return to normal terminal startup.
Agent Roles Spec And Role Catalog
CCB supports Agent Roles Spec, a host-neutral specification for packaging specialist agents. It can bundle skills, memory, and tool dependencies into installable, mountable, and removable Role Packs. That repository also serves as the public role catalog.
| Role | Purpose |
|---|---|
agentroles.ccb_self | CCB self-maintenance, config help, runtime diagnosis, protected recovery, and workflow orchestration. |
agentroles.archi | Architecture review, boundary checks, coupling analysis, maintainability risks, and follow-up gate advice. |
agentroles.frontend_engineer | Frontend design and implementation, design systems, accessibility, browser QA, and reviewed AGY delegation. |
agentroles.mobile_app_engineer | Mobile design and implementation for iOS, Android, React Native, Expo, Flutter, SwiftUI, Jetpack Compose, and more. |
agentroles.mother | Role creation, role source audit, role research, blueprint design, and Agent Roles spec compliance checks. |
agentroles.su_ccb | SU-CCB workflow operations for requirement analysis, planning, dispatch, review gates, archiving, and recovery. |
Config And Shared Memory
Use the ⚙ Settings control panel for normal project configuration. If you want agent-assisted configuration and runtime diagnosis, ccb_self remains available as an optional Role Pack and can be added with ccb roles add agentroles.ccb_self:codex.
Supported managed Agents receive the built-in ask, ccb-clear, ccb-compact, and ccb-diagnose control skills even when optional skill inheritance is disabled. Use $ccb_diagnose <agentname> to inspect one Agent's authoritative runtime/job state and live pane evidence, apply bounded recovery when safe, and review a redacted issue draft before explicitly authorizing GitHub submission. Managed Codex also keeps reconnect.
.ccb/ccb_memory.md is the project-wide shared memory document. Use it for team collaboration rules, project constraints, long-lived context, and agent handoff conventions. Stable cross-agent information belongs there instead of being copied into several provider-private memory files.
Contact
- Email:
[email protected] - Telegram group & contact / TG 群与联系
- WeChat:
seemseam-com
WeChat group QR codes are valid for seven days. If this one has expired, add
seemseam-comto request the latest invitation.
Community And Credits
Thanks to the Linux.do community for testing, feedback, and discussion.
Thanks to tmux-agent-sidebar for sidebar ideas and inspiration.
Release Notes
Native OpenCode 2.2.x task ingress and idle completion; private legacy database snapshots; OMP native task delivery. OpenCode 2.2.x 原生入队与 idle 完成判定、旧版数据库私有快照和 OMP 原生投递。 Release notes / 版本说明.
OMP Mobile now renders native OMP Collab select/editor questions as interactive cards and returns answers through the fenced native ui-response channel over HTTP or encrypted Relay. The workspace also shows bounded native runtime status such as the current step, elapsed time, queue depth, model/thinking/context usage, task progress and Todo counts. Upgrade the server and app together; restart idle OMP processes normally and do not interrupt busy agents.
OMP Mobile now paginates stable long history through bounded native parent-chain pages. History-query errors preserve a healthy WebSocket and already-loaded content. Oversized replies keep a structured latest-content bubble capped at 24 KiB, 8 entries and 24 blocks; complete originals remain available as a secondary reader. Upgrade both the server and app, then restart existing OMP processes normally when idle; do not interrupt busy agents or discard history.
OMP replies use bounded, owner-bound native reply_deliver / reply_status delivery. A ccb-reply is received as an aside at a safe step boundary; only a persisted native custom_message counts as a receipt and releases the mailbox. Receipt does not mean subsequent business processing is finished. Drafts and active ask anchors remain intact, no concurrent turn is started, and ambiguous sends are queried rather than replayed.
OMP 回复通过有界、绑定归属的原生 reply_deliver / reply_status 投递;ccb-reply 在安全步骤边界作为 aside 接收。只有已持久化的原生 custom_message 才算收据并释放邮箱,不代表后续业务处理完成。保留草稿与活跃 ask 锚点,不启动并发回合;发送结果不明时查询状态,不重放。
Recover the OMP Python ask sender identity from the exact configured managed PI_CODING_AGENT_DIR when CCB environment variables are filtered, while preserving existing identity precedence and without replaying historical jobs. Refresh the WeChat group 2 QR code, valid until October 29.
Preserve earlier reply text across same-session incremental updates, fold tool reasoning in place, and serialize runtime sends through a persisted FIFO. Queued sends remain visible but do not steer an active turn; unknown disconnect outcomes are held rather than blindly replayed. Includes the 8.7.14 Relay and large-history fixes on Linux; the legacy macOS route is unchanged.
This incomplete prerelease contained the Linux OMP history paging and Relay work now included in 8.7.15. No Android release was published.
Connect Linux OMP Mobile sessions to the native TUI through Collab, with user-anchored reply bubbles and same-session model and thinking selection. macOS keeps its original terminal-input and native-history route; other providers are unchanged.
Recover stale reply delivery, correct communication status, and preserve drafts and valid lease ownership.
Isolate V3 workflow policies, repair Pi transformed-input attribution and active-request cancellation, and refresh the WeChat QR image.
Reuse verified snapshots, deduplicate shared dependencies, recover interrupted staging and forward startup timeout settings.
Preserve Codex caller identity in native tool shells so bare ask results return to the correct Agent. Verified with actual Codex/OMP and Claude Sonnet 4.6 roundtrips.
Complete the Codex fullscreen delivery update and repair installed native ccb.exe/ccb.cmd entrypoints. Supersedes the interrupted v8.7.7 publication.
Fix accepted jobs waiting behind native Codex fullscreen status/shortcut rows and ordinary replies mentioning esc to interrupt, while preserving human drafts, busy/menu guards and FIFO.
Recognize native Claude pasted envelopes and empty Codex composers with newer status bars; preserve draft protection.
- Click or Enter opens files with system defaults on macOS, Linux and WSL; folders stay inside Yazi.
- Shares safe/rich configuration, preserves filenames and provides explicit WSL bridge errors.
- Full bilingual notes and validation scope.
- Prior changes: v8.7.0 input protection and v8.6.19 queues and inspection guidance.
- Run OMP asks in the visible managed pane and use OMP's native completion evidence, so tool-using turns remain active until the final assistant result.
- Keep Config V1/V2 role selection focused on general roles and
agentroles.ccb_self; workflow-specificccb_*roles remain available to V3 rather than appearing in earlier schemas. - Refocus current public provider guidance on the primary supported CLI families. DeepSeek CLI, Z.ai, and DeepSeek Harness remain implemented and documented in historical release notes, but are no longer presented as current headline support.
- No project, conversation, or configuration migration is required. Native Windows x64 and Herdr remain beta and isolated from the shared Linux/macOS runtime.
- Show Pi and OMP native conversations in CCB Mobile while preserving Provider-private session paths and transcript boundaries.
- Inherit Pi profile assets into Agent-private homes through immutable shared snapshots, and publish concurrent first-start snapshots atomically (PR #328).
- Preserve Git author and committer identity in managed Provider homes, and return Agent control immediately after an accepted ask submission (PRs #329 and #330).
- Refresh the WeChat community QR code. Restart managed Pi Agents to refresh projected profile assets; no project, conversation, pairing, or configuration migration is required.
- Restore bearer authentication for explicit Codex CLI
0.149.0custom providers while keeping route-only local gateways unauthenticated. - Add per-Agent Codex model catalog projection and model override support, preserve reconnect and custom tmux configuration behavior, and make Pi clear start a fresh context (PRs #321, #322, #325, and #326).
- Keep Herdr lifecycle synchronization and UTF-8 native startup inside Windows-owned implementations, without adding shared-to-Windows imports (PRs #320 and #323).
- Restart managed Codex Agents and CCB projects after upgrading. No project, conversation, pairing, or configuration migration is required.
- Refresh an existing Agent-private Claude Keychain credential after an external OAuth re-login, so a stopped managed restart does not keep using a revoked token (Issue #319).
- Preserve a Claude-private Keychain refresh when the inherited source credential is unchanged; external Claude Keychain services remain read-only.
- Fail closed for symlinked CCB credential projections and private Keychain inspection errors. No project, conversation, pairing, or configuration migration is required.
- Add the official DeepSeek Harness as the separate Developer Preview provider
dsh, using its loopback HTTP/WebSocket service and exact native turn evidence. - Make managed AGY 1.1.13 select private file token storage immediately, avoiding the keyring timeout without writing to the user's source HOME (Issue #318).
- Roll back Windows PR changes that crossed into shared Linux/macOS runtime code and add a trusted-base native-only PR gate that rejects future cross-platform leakage.
- Keep DSH clear, compact, exact-session restore, credentials, skills, and runtime state inside provider-native, agent-private boundaries.
- Reflow Agent terminal snapshots to the phone viewport while preserving the desktop tmux pane geometry.
- Keep terminal input and reconnection stable across LAN and Relay routes, and close active sessions cleanly during gateway shutdown.
- Keep terminal font size and shortcut order in the shared Terminal settings panel, with full-width inline terminal mode on phones and wide layouts.
- Reattach persisted Windows Herdr namespace and pane references with fail-closed capability checks (PR #304).
- Turn links to ordinary files in the current Agent's
.ccb/workspaces/<agent>/...tree into authenticated Mobile download attachments. - Keep the boundary fail-closed: other Agent workspaces, hidden workspace paths, and all other private
.ccbruntime state remain unavailable. - Preserve the existing Mobile client behavior and pairing model; no project configuration or state migration is required.
- Require exact, external approval before project configuration can execute tool-window commands or custom Provider command templates; use
ccb config approve-commandsfor intentional values. - Recover managed Codex conversations from the latest valid session when the current session record is corrupt, without silently clearing context.
- Add visible-pane Cursor execution, Pi native history, OMP Provider-config inheritance, and more reliable Windows process and namespace cleanup.
- Expand CCB Mobile with multi-session host terminals, Relay capability-negotiated Provider controls, and stronger native Windows readiness validation.
- Show selected-Agent Provider identity, configured/active/pending model and thinking state, Codex/Claude native session usage, and optional account quota in CCB Mobile.
- Persist supported model/thinking choices through guarded, restart-required host configuration without interrupting active work or exposing Provider credentials.
- Open project-window or Agent terminals directly from Mobile home and customize terminal shortcut visibility and order.
- Add the built-in
ccb-compactSkill andccb compactcommand with outstanding-work checks and fail-closed Provider command selection. - Populate Config UI from the complete available Role catalog, retain native-session boundaries in Mobile history, and refresh the WeChat group QR image.
- Keep
ccb-clearin every supported managed Agent and add the requiredccb-diagnoseSkill. Run$ccb_diagnose <agentname>to combine daemon, lineage, queue, inbox, trace, provider-log, and live Pane evidence for one Agent. - Classify working, waiting-input, stale-prompt, Provider-error, dead/blank, and misframed Pane states; apply only evidence-backed bounded control-plane recovery and verify the Agent afterward.
- Generate a redacted incident draft after diagnosis, but require fresh user authorization before creating any GitHub issue.
- Recover abandoned mailbox deliveries without replaying business work, expose queue depth and active job identifiers in the sidebar, preserve Kiro login/settings through its isolated
KIRO_HOME, forward Provider no-terminal timeout settings, and keep old Claude busy-turn records fenced from newly queued requests. - Probe reconnect readiness against the active Codex Provider route so custom Provider capacity and connectivity failures can continue through the existing guarded recovery path.
- Resolve each configured API, token, URL, route, and account dimension from CCB-local authority first, then read only the missing dimensions from the current external Provider state.
- Refresh inherited state on a stopped Provider generation without writing back to the user's shell, Provider home, IDE, keyring, or remote login.
- Keep one stable CCB conversation and its workspace, queue, and history across authority generations. Same-authority sessions use native resume; supported Codex/Claude/Gemini import or fork when safe, otherwise CCB records a linked continuation instead of hiding history.
- Recover usable sessions affected by the withdrawn v8.5.5 migration shape without clearing them. The withdrawn v8.5.5 package is not reused.
- Install and automatically arm bundled
codex-reconnectfor managed Codex panes; terminal network and selected-model capacity failures receive one boundedcontinuerecovery when the exact pane and thread are proven safe. - Raise the default quota for newly issued Relay Host invitations from 200 MiB to 1 GiB per 24-hour window; explicit overrides and existing credentials remain unchanged.
- Refresh the WeChat community QR image and cache key. No configuration or data migration is required.
- Withdrawn from GitHub on 2026-08-05 after a legacy-session migration regression made existing managed conversations unavailable to native
resume. - Use v8.5.6 or v8.5.4; do not install v8.5.5 for managed sessions.
- Treat
--chainas a real dependency only: independent asks, communication tests, batches, notifications, and reply-delivery acknowledgements no longer create false callback chains. - Scan or clean one Agent or all Agents from Config UI with 7/30/90-day retention while protecting active bindings, recent history, and each Provider's newest transcript.
- Keep the current Config UI focused on configuration and history cleanup by temporarily removing the read-only communication-flow observer.
- Add Android LAN preflight and reconnect guidance, Retry/Diagnostics actions, and a 15-second terminal WebSocket heartbeat without reading SSID, BSSID, or other network identity.
- Flutter analysis and all 736 App tests pass; the physical Android Wi-Fi/hotspot/VPN/DHCP-change matrix remains an explicit validation limitation.
- Raise the default quota for newly issued Relay Host invitations from 100 MiB to 200 MiB per 24-hour window; explicit operator quota flags still take precedence.
- Cache the latest callback-edge view and bound repair candidates, preventing old append-only callback history from driving sustained idle CPU and cached-read amplification.
- Pass non-API variables from
agents.<name>.envinto managed Claude launches while preserving CCB's API credential and endpoint precedence (PR #284). - Existing Relay Host credentials retain their issued quota; operators must update them separately or issue a new invitation.
- Keep a respawned pane in a 90-second probation window and hold queued work until a new healthy observation confirms recovery.
- Back off unstable recovery through 30s/60s/120s/5m/10m/30m, then open a circuit after six attempts instead of restarting and writing indefinitely.
- Bound each Provider runtime to the newest 50 pane-crash records, clear stale pane history, and skip unchanged helper-manifest writes.
- Repair only stale CCB-managed Claude continuation state without touching authentication; fail closed when the managed Codex app server is unavailable.
- Move stable reply/cancellation policy into managed project memory so normal asks no longer repeat prompt blocks or require per-step cancel-file polling.
- Detach CCB Rich WezTerm from the parent TTY and provide a private Wayland XCursor overlay without replacing the selected cursor theme.
- Aggregate Claude snapshots by assistant message so thinking-only boundaries and tool narration cannot replace the true final reply.
- Recover missing Claude completion hooks only from exact request, Agent, workspace, time, and session evidence; stalled mid-stream responses fail closed.
- Execute new Pi asks in the managed visible pane and complete only from the exact bound
agent_settledmessage. - Keep long Pi runs free from a fixed default terminal timeout and remove the model-facing cancel-file probe that consumed an extra tool call and uncached tokens.
- Preserve persisted Pi 8.5.0 jobs and the explicit
CCB_PI_EXECUTION_MODE=headlessrollback path. - Bypass configured HTTP proxies for local Mobile gateway health checks.
- Bound Pi completion to the latest
agent_settledevent and OMP completion toagent_end.isTerminal=true, while waiting for process exit and output closure before terminalizing. - Failed closed on missing native terminal evidence, missing final outcomes, malformed or truncated JSONL, provider errors, and nonzero exits; terminal OMP
yieldremains a supported successful result. - Bootstrapped and repaired the npm-managed Python environment during install, so release runtime dependencies no longer depend on an incomplete system Python fallback; linked Git worktrees remain correctly classified as source installs.
- Made the sidebar settings launcher recover its release-managed runtime and reliably open Config UI.
- Synchronized Mobile ask/provider activity with exact server-side state, stable completion notifications, and quieter automatic reconnect behavior.
- Tightened one-way managed Provider asset projection and added packaged Qoder control skills without exposing user-global state to managed mutation.
- Isolated mutable authentication, account, session, and storage state inside each managed Provider home for visible and headless execution.
- Made external credentials one-way inheritance input, so managed refresh or logout cannot modify the user's shell, IDE, another Agent, or another project.
- Guaranteed packaged
askandccb-clearcontrols for supported managed Agents even when optional skill inheritance is disabled; managed Codex also keepsreconnect. - Projected optional skills independently so one broken external entry cannot suppress CCB controls or unrelated valid skills.
- Added a compact, validated Relay pairing QR that fits a 97-column terminal while retaining the owner-only PNG fallback.
- Made Mobile terminal resize and stream recovery race-safe with synchronized snapshots, clean repaint, and automatic handle renewal.
- Opened Config UI with the release-managed interpreter even when the sidebar inherited a stale Python path.
- Added persistent CCB theme selection, including system-default behavior, across Config UI, Rich WezTerm, and sidebar restarts.
- Stabilized Relay terminal snapshots and incremental updates with bounded backpressure and correct wide-character accounting.
- Generated owner-only PNG pairing codes when dense payloads cannot render safely in the current terminal.
- Preserved npm/NVM and Bun package-manager ownership during Provider updates.
- Reported non-writable system installs and unsafe local registry dependencies without attempting an update.
- Added end-to-end encrypted CCB Mobile Relay transport with operator-issued one-time invitations, bounded admission, multiplexed streams, and official or self-hosted deployment modes.
- Moved route selection to
ccb update mobile: choose Tailscale, a validated private LAN address, CCB Relay, or a self-hosted Relay while the phone only scans a QR code or enters a pairing code. - Added trusted in-app Android updates that verify canonical GitHub release metadata, APK size, and SHA-256 before handing installation to the operating system.
- Preserved project identity when a CCB project is moved or renamed, and added system-following light/dark themes across terminal and configuration surfaces.
- Integrated opt-in Codex reconnect supervision into managed homes, retaining bounded terminal error evidence and refusing unsafe pane or session mismatches.
- Kept Relay payloads encrypted end to end; Relay operators can observe connection metadata but not task prompts, replies, terminal content, or transferred files.
- Centralized supported Provider upgrades under
ccb update, with exact version checks, explicit decline/skip choices, and no automatic restart of active panes. - Retired project-scoped Claude/Gemini software caches in favor of the user-installed Claude executable and one user-scoped Gemini cache.
- Added bounded post-update and post-shutdown cleanup that preserves active projects, unknown content, sessions, authentication data, and user-owned caches.
- Added persistent Config UI loopback port and protected token-source settings without exposing token values.
- Added native Qoder CLI CN support with isolated config/session state and corrected Qoder
--print/--config-direxecution. - Preserved shutdown finalizers while the server is stopping and made sidebar release checksum generation portable.
- Switched Rich mode to a compact two-column Yazi layout and synchronized all release surfaces to 8.3.1.
- Bound Kimi, Claude, and Qoder execution to their native turn, activation, session, and completion contracts.
- Added exact active-job follow-ups, correlated execution phases, orphaned-inbound diagnosis, and terminal cancellation outcomes.
- Inherited provider extensions and Copilot plugins with explicit projected-asset ownership safeguards.
- Delegated npm-managed upgrades to npm and made marker-only worktree retirement conservative.
- Kept Mobile chat and terminal modes inside the selected project workspace and synchronized all release surfaces to 8.3.0.
- Fixed sidebar settings launch on WSL and macOS with native browser fallbacks, refreshed desktop-session environment, and visible manual-open status.
- Added end-to-end startup generation fencing, bounded readiness proof, and detailed startup operation/timeline diagnostics.
- Stopped unrecoverable provider-auth restart loops and exposed the required login action through ping, project view, and the sidebar.
- Preserved additive reload identity and idempotent shutdown behavior under the stricter lifecycle authority model.
- Added opt-in Android background connection controls and kept one working reply state per agent.
- Synchronized Linux, macOS, npm, and signed Android artifacts for 8.2.1.
- Reduced repeated ccbd startup work while preserving lifecycle and ownership checks.
- Fixed Grok fullscreen startup, Claude credential-kind preservation, and Config UI model/thinking selections reverting to inherited values.
- Kept Codex ask delivery session-bound and stopped accepted empty transport acknowledgements from requeueing indefinitely.
- Improved Mobile recovery, conversation and terminal interaction, image/document/video attachments, linked-file downloads, and device-bound FCM delivery.
- Synchronized Linux, macOS, npm, and signed Android artifacts for 8.2.0.
- Superseded by later releases. Detailed notes are intentionally omitted.
- Withdrawn and superseded. Detailed notes are intentionally omitted.
- Prevented Codex native subagent rollouts from capturing CCB request binding or replacing the authoritative parent session and turn.
- Kept built-in subagent activity, messages, and completion events inside the parent agent's collaboration flow instead of returning them to the CCB caller.
- Matched the isolation behavior in the Python runtime and Rust accelerator, with an authenticated
spawn_agentregression proving that callers receive only the parent final reply. - Added independently projected native
askandccb-clearskills to each managed Grok home; normal starts use Grok's nativebypassPermissionsmode while safe starts keep approval enabled. - Refreshed inherited system Grok login state before startup and routed CCB requests through each agent's visible native Grok session; authenticated two-agent testing passed visible ask, result recovery, named clear, and post-clear isolation.
- Stabilized Mobile live conversations by merging streamed replies into one working bubble, preserving bubble identity, and avoiding refresh flicker or false working states.
- Kept agent and window selection stable across refreshes, retained pane-authentic terminal scrollback, and required explicit keyboard activation before terminal input.
- Replaced the Android pairing bridge with the embedded ML Kit scanner and preserved its release-build classes through minification.
- Filtered Codex local control transcript entries and required Grok's native turn-completion evidence before a managed request is finalized.
- Hardened Mobile invalidation recovery, snapshots, live conversation updates, attachment echo reconciliation, and task-completion notifications.
- Restored expanded-message scrolling and project file links while simplifying terminal shortcuts, compacting controls, and removing duplicate terminal headers.
- Reused managed Python environments now refresh legacy pip versions for system certificate support and opt into truststore only when its backend is available.
- Expanded guarded HTTPS mirror fallback detection for macOS DNS, proxy, timeout, and certificate failures without disabling TLS verification.
- Added a bounded Mobile gateway SSE invalidation stream so project, activity, and conversation changes refresh authoritative state without active-view polling.
- Added bounded read-only Mobile snapshots, reconnect status and automatic recovery while retaining the selected host, project, agent, recent conversation state, and completion notifications.
- Mobile host startup now recognizes and safely adopts matching legacy gateway processes, avoiding duplicate listeners during upgrades.
- macOS release updates preserve healthy managed Python environments and retry
watchdoginstallation through a configurable mirror after TLS or network failures.
- Added a visual project configuration control panel, opened from the sidebar's top-left ⚙ Settings action or with
ccb config ui, with validation, diff review, save, reload dry-run, and guarded hot reload. - Blank projects now mount exactly one agent named
demo, selecting the first locally available supported CLI; explicit project and user configs still support any single- or multi-agent topology. - Added managed Grok CLI integration, Kimi Code v0.23.1 readiness support, correct OpenCode fresh-session behavior, and reliable Claude/Gemini hook launcher execution.
- Improved CCB Mobile gateway profile persistence, paired-credential retention, project health caching, warm-list visibility, and terminal UI efficiency.
- Reorganized localized READMEs under
README/, added the real config-control screenshot, and synchronized package, Mobile, workflow, and release metadata for 8.1.0.
ccb update mobilenow uses more tolerant per-request and overall startup timeouts for the server-wide loopback/v1/healthendpoint, avoiding false failures when many projects are mounted.- Added a regression test covering health responses that arrive after the previous 0.5-second request timeout.
- The default APK URL, README, package metadata, and mobile app version metadata now point to 8.0.19.
- Managed Codex homes now project
auth.json,config.toml, company API sidecars, and safe auth/key/token sidecar filenames referenced byconfig.toml. - Added
.ccb-auth-projection.jsonevidence manifests that record source and target presence, size, and SHA256 without storing secret values. - Explicit Codex API authority clears inherited auth sidecars, WSL diagnostics identify Windows interop executables, and server-wide mobile discovery tolerates stale project records.
- The role catalog is now collapsed by default, the WeChat image is refreshed, and mobile release metadata points to 8.0.18.
- Codex ask completion now uses no-progress time, so actively growing long-session files do not fail based only on submission age.
- Missing official session or log evidence returns a diagnosable non-success state, while explicit shutdown is reported as a provider crash.
- Mobile frontdesk submissions use ccbd ask jobs, and
ccb watchno longer defaults to a 10-second timeout.
- CCB Mobile Terminal mode adds reconnect diagnostics and recovery while keeping the current agent pane selected.
- Pane-native mobile input now records project activity so project recency reflects Terminal usage.
- Mobile host registry tests now place temporary Unix sockets under a short
/tmp/ccb-sock-*path, avoidingAF_UNIX path too longfailures on macOS CI. ccb update mobile, README links, package metadata, and the mobile release manifest now point to the 8.0.12 APK.- v8.0.12 introduced a multilingual README set with a shared section structure; localized files now live under
README/, with Chinese atREADME/zh.md.
- The Flutter CCB Mobile source officially moved into this repository, with the Android APK published through GitHub Releases.
- Added server-wide mobile project discovery, pairing, authenticated gateway routes, pane-native message input, conversation context rendering, terminal access, and image/document upload and download.
- Promoted
ccb update mobileinto the unified Tailscale Tailnet onboarding entrypoint while keeping the gateway loopback-only, avoiding Funnel, not storing tokens, and not automatically modifying ACLs/grants.
- Release artifacts now include the optional Rust
ccb-runtime-accelerator; installed Codex agents no longer silently fall back to the Python hot path when the sidecar is expected. - When a project path makes the Unix socket