云展 Cockpit_

COCKPIT · REMOTE CONSOLE · 系统架构
$ cockpit --what  从浏览器远程控制另一台机器上的 claude code,端到端加密,中继服务器只见密文。 # 三端 + 一层共享协议
##

三端架构 · 数据如何流动

CONSOLE @cockpit/console · 网页控制台 React + Vite · cockpit.mvp.restry.cn
用户入口。配对设备、列会话、终端视图聊天、远程掌控 agent。持有 masterSecret, 本地确定性派生每会话 DEK 解密 envelope —— relay 永远看不到明文。
终端原生 UI Markdown 渲染 紧凑工具行 权限模式选择 本地派生 DEK
Socket.IO /v1/updates · user-scoped · rpc-call / 密文 message
RELAY @cockpit/server · 中继服务器 Node + socket.io · relay.mvp.restry.cn:3005
配对 / 认证 / 路由 / 密文中转,全程不解密。sqlite 持久化(机器/设备/会话/消息)。 RPC 在 console↔daemon 间转发;message envelope 无条件存 + 广播。
sqlite 持久化 RPC 路由 pino 日志 /healthz /metrics
Socket.IO /v1/updates · machine-scoped · rpc-request / 加密事件上行
DAEMON cockpit-daemon · 被控端 装在用户机器 · npx cockpit-daemon
包装真实 claude CLI-p --input-format stream-json)。把 stream-json 映射成 wire SessionEvent,AES-256-GCM 加密上行;接收 console 下发 RPC(spawn / answer / approve / abort)翻译成 claude stdin。
包真 claude stream-json 解析 多轮对话 事件有序上行 Agent 抽象(待接 codex/cursor)
##

共享协议层 · 三端复用

@cockpit/wire

消息 / 事件 / RPC / 配对的 zod schema 与类型。协议契约单一来源。

zod · cuid2

@cockpit/crypto

端到端加密原语:AES-256-GCM、Ed25519 认证、NaCl Box 配对、会话 DEK 派生。

tweetnacl

@cockpit/sdk

Socket.IO 客户端封装 / RPC / 离线队列。依赖 wire。

socket.io-client
##

端到端加密数据流

1配对   daemon NaCl Box keypair POST /v1/pairing/request 打印 PIN + 链接
2批准   console 输 PIN Box 加密 masterSecret 给 daemon 公钥 /pairing/deliver
3派生   两端各自 deriveKey(masterSecret, "cockpit-session-dek", [sessionId]) 🔒 确定性一致
4上行   daemon: claude 事件 AES-256-GCM(DEK) relay 存 sqlite + 广播 (relay 只见密文)
5下行   console: 收 envelope 本地 DEK 解密 渲染;发消息 rpc answer-question daemon → claude stdin
##

当前状态 · 2026-06-14

线上部署(已运行)

relayrelay.mvp.restry.cn :3005 · uptime ~2.2 天在线
consolecockpit.mvp.restry.cn · HTTP 200在线
daemon(远程)dev.dora.restry.cn · 本地包已更新(含修复)已更新
本地 devlocalhost:5173 · vite watch在跑

待办 / 落后项

git push本地领先 origin/main 5 个 commit 未推待推
console 部署4 个 UI commit 未上线(终端风/聊天优化/修复)待部署
daemon npmregistry 停在 0.0.2,本地代码 0.0.3待发布
licenseUNLICENSED · 商用边界待定待拍板
##

最近提交 · git log(5 个未推送)

0566835fix(daemon): 可靠事件上行 + 用户消息持久化(修发消息无输出 / 刷新丢消息)未推送
ac5e38dfeat(console): 聊天消息头像 + 行内代码降噪未推送
5cec158fix(console): composer 加宽 + 消息排序 + 自动高度输入框未推送
5d7dc99feat(console): 终端原生风重设计(设计系统 + 关键页)未推送
758412efeat(console): agent 回复 markdown 渲染未推送
# 已修的几个真机 bug:
· pair URL 指向 console 而非 relay(加 --console flag)
· 跨机 DEK 本地派生(不再依赖 relay dev 端点)
· composer 被全局底栏遮挡 → 全屏 focus 视图
· 用户消息排到顶部 → 负 seq 排序映射到底部
· 发消息无流式输出 / 刷新丢消息 → daemon emitWithAck 静默丢弃改 fire-and-forget + 串行队列;用户消息上行进 sqlite