CLI Terminal
PTY + WebSocket + xterm.js · 把 Claude / Codex 的交互式 TUI 暴露成可嵌入的 web 终端。其他子服务(如 papers)通过 iframe 嵌入复用。
Bearer token
独立于 LLM Gateway 的 token。WS 与 embed 页通过 ?token=… 查询参数携带(浏览器无法在 WS / iframe 上设置 Authorization 头)。
CLIs
直接用系统安装的 CLI(claude native 在 ~/.local/bin,codex · gemini 用 Homebrew),跑在你的真实 HOME——共享你在终端里的登录态,无需单独再登录。
| CLI | 状态 |
|---|---|
| claude | 已安装 |
| codex | 已安装 |
测试会话
建一个 PTY 会话验证 cli_terminal 通路。新窗口里打开 embed 页,可以直接在浏览器里跟 CLI 交互。
正在运行的会话 (0)
PTY 进程在后台保持,断开 WebSocket 不会杀掉进程。点"打开"重连即可。
没有正在运行的会话。
最近结束的会话
最多展示 20 条,按 last_active_at 倒序。
| CLI | Label | cwd | 退出码 |
|---|---|---|---|
| claude | test | /private/tmp |
143 |
| claude | calendar:draft_OtCtrhWxPjE | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_OtCtrhWxPjE |
143 |
| claude | calendar:draft_afqlAvWBxzA | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_afqlAvWBxzA |
143 |
| claude | calendar:draft_RW4THTbIMUA | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_RW4THTbIMUA |
143 |
| claude | calendar:draft_26J2C2RTGss | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_26J2C2RTGss |
-1 |
| claude | calendar:draft_1VXJO0XFTEU | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_1VXJO0XFTEU |
-1 |
| claude | test | /private/tmp |
143 |
| claude | calendar:draft_3Mbvi1tVOkg | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_3Mbvi1tVOkg |
-1 |
| claude | calendar:draft_HwePLkJPZWE | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_HwePLkJPZWE |
-1 |
| claude | calendar:draft_410mD0vZhBo | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_410mD0vZhBo |
-1 |
| claude | calendar:draft_0No8VefzvWg | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_0No8VefzvWg |
-1 |
| claude | calendar:draft_wbFql4ohiiQ | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_wbFql4ohiiQ |
-1 |
| claude | calendar:draft_NCsMDVJJjHU | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_NCsMDVJJjHU |
-1 |
| claude | calendar:draft_-tLw7FLwYbM | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_-tLw7FLwYbM |
-1 |
| claude | calendar:draft_9oadaPyqV7Y | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_9oadaPyqV7Y |
-1 |
| claude | calendar:draft_oy7sGFkBgVg | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_oy7sGFkBgVg |
-1 |
| claude | calendar:draft_2s2sisgBefQ | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_2s2sisgBefQ |
-1 |
| claude | calendar:draft_vePtzc0Feww | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_vePtzc0Feww |
-1 |
| claude | calendar:draft_Y0Ifl2B5C9g | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_Y0Ifl2B5C9g |
-1 |
| claude | calendar:draft_eF8eFX4wufI | /Users/zhenjiangzhao/Desktop/workbench/services/calendar_agent/conversations/draft_eF8eFX4wufI |
-1 |