启动每个 AI 编码 agent
的终端。
一键装、登录、配置、启动 Claude Code、Codex CLI、Gemini CLI、OpenCode、Aider —— 每个 agent 可自选官方订阅 / 自带 API key / 自定义端点。启动的 agent 反过来还能通过 MCP 驱动 Unterm。
AI agent 统一启动器 · 本地优先 · 无云端 · 无登录
60 秒看懂 Unterm
所有数字都能在源码 / Releases 里核对 · 每次发布刷新- 最新版本
- v0.43 · 2026-06-12 · MIT
- 内置 AI agent
- 5 个签名 manifest —— Claude Code · Codex CLI · Gemini CLI · OpenCode · Aider。从 unterm.app/api/agents/manifests 拉 Ed25519 签名信封,每个 agent 可选认证模式。
- 价格
- 永久 $0 · 无付费层 · 无订阅 · 无内购
- 平台
- macOS(universal)· Linux x86_64(.deb + AppImage)· Windows 10/11(.msi + 便携 .zip)
- 安装包大小
- DMG 117 MB · .deb 35 MB · AppImage 46 MB · MSI 44 MB
- 空闲内存
- ~110 MB · 随开启 pane 线性增长
- 界面语言
- 9 种 — en · 简体 · 繁體 · 日本語 · 한국어 · Deutsch · Français · Italiano · हिन्दी
- 控制面
- MCP(TCP 上的 JSON-RPC)· HTTP 网页设置 ·
unterm-cli· GUI — 同一份 JSON 状态四个入口共用 - 已验证 agent 集成
- Claude Code · Cursor · Codex CLI · 自定义 Python / Node MCP 客户端 — 都走同一个 socket,约 30 行代码
- 数据收集
- 零遥测 · 无账号 · 无统计 · 所有服务仅监听 127.0.0.1
- 技术栈
- Rust · 定制版 WezTerm 引擎 · MCP(line-delimited JSON-RPC)· Tailwind + Alpine 做网页设置
每个编码 agent 都能一键装上。零配置门槛。
如果你同时试过多个 AI 编码 CLI,你知道那个税:npm install、OAuth、申请 API key、~/.config/<vendor>/<每家格式不同>、环境变量、不同身份隔离。Unterm v0.18 把这一切收进一个设置 tab + 一个 CLI 子命令。没有任何其它终端在做这件事。
GUI 装或 CLI 装都行
在 agent 卡片上点 安装,或者跑 unterm-cli agent install <id>。Unterm 按你的平台跑对应的命令 (npm / pipx 等),验证 binary 进了 PATH,自动重新探测。
默认走订阅,BYO key 是 opt-in
大部分 agent 都有走付费订阅的 OAuth (Claude Pro、ChatGPT Plus、Google AI Pro)。Unterm 默认就是这个模式 —— 永远不偷偷往 session 里注入 API key。只有当你确实想按 token 计费或者走企业 gateway 时,才显式切到「自带 key」或「自定义端点」。
Ed25519 签名 manifest 目录
agent 列表和安装命令不是写死在 Unterm 里 —— 而是从 unterm.app/api/agents/manifests 拉的签名信封。即使 CDN 被攻破也推不了 curl | sh 到你机器上,公钥 baked 进每个 Unterm binary。
终端是手柄,AI agent 是手。
大多数终端把 AI 嵌进二进制里——Warp 的云端编排器、ChatGPT 桌面的侧边栏。Unterm 反向选:AI 完全在外面,终端本身作为可被 MCP 控制的表面,谁来抓握自己定。终端是手,谁握它由你决定。
一个 AI 通过终端控制另一个 AI。
外层 agent 拿着终端会话,切换 cwd,启动分屏里的内层 coding agent,读取日志,并在仓库变绿之前持续迭代。
外层 agent 先把当前 pane 指向项目根目录,这样每条命令、日志和截图都锚定在同一个工作目录里。
它在分屏里拉起一个 coding agent,把任务交给它,让这个 agent 在终端内部完成编辑循环。
外层 agent 读取测试输出和 pane 状态,必要时继续重试,只有等终端显示工作完成后才进入提交或发布。
AI agent 能驱动终端 —— 包括它自己所在的那个。
下面是当前 Unterm 实例的真实 session。Claude Code 跑在 pane #0,通过 MCP 调 session.split 把右半屏切成新 pane #5,再 session.focus 把它激活,然后用 session.input 一个字符一个字符往里打命令;同一个 TCP socket 接着用 screen.text 把 shell 回显读回来。没有特殊 agent 集成 —— 纯 JSON-RPC,30 行 Python。
# Claude Code, running in pane 0 of this very Unterm window.
# Tells its own MCP server to spawn a new tab, then types into it.
import socket, json, time
s = socket.create_connection(("127.0.0.1", 19876))
# 1. auth — token is in ~/.unterm/instances/<name>.json
s.sendall(b'{"jsonrpc":"2.0","id":1,"method":"auth.login",'
b'"params":{"token":"…"}}\n')
# 2. split CURRENT pane right-half (since v0.17) · also `agent.launch` (v0.18) — true side-by-side, not a new tab
s.sendall(b'{"jsonrpc":"2.0","id":2,"method":"session.split",'
b'"params":{"id":0,"direction":"right","cwd":"/path/to/repo"}}\n')
new_pane_id = … # parse response → e.g. 5
# 3. focus it so the user sees the new pane immediately
s.sendall(b'{"jsonrpc":"2.0","id":3,"method":"session.focus",'
b'"params":{"id":new_pane_id}}\n')
# 4. type, character by character, with human rhythm
for ch in "git log --oneline -5\n":
payload = json.dumps({
"jsonrpc": "2.0", "id": 4,
"method": "session.input",
"params": {"id": new_pane_id, "input": ch}
})
s.sendall((payload + "\n").encode())
time.sleep(0.03)
# 5. read what the shell echoed back — same socket, opposite direction
# s.sendall(... method "screen.text", params {"id": new_pane_id}) alexlee@192 unterm % # 👋 Claude 通过 MCP 实时打字进来 ↓
alexlee@192 unterm % pwd
/Volumes/Dev/code/unterm
alexlee@192 unterm % git log --oneline -5
5f44d15 (HEAD -> master, tag: v0.18) release: prep v0.18 — AI agent integration
8ae3786 agents tab: fix detail view (route + detect plumbing)
7c18235 agents tab: wrap detail view in x-if so child bindings only run when open
6ff27a9 AI agents: Web Settings tab + 'Shell → AI Agents' submenu
6d22e2f AI agent integration: signed manifests + install/auth/configure/launch runtime
alexlee@192 unterm % echo '↑ 5 个 commit 都是 Claude 用 unterm-cli + MCP 推的'
↑ 5 个 commit 都是 Claude 用 unterm-cli + MCP 推的
alexlee@192 unterm % ls -la web/src/pages/docs/ | head -10
total 368
drwxr-xr-x 9 alexlee staff 288 agent-integration.md
drwxr-xr-x 6 alexlee staff 192 architecture.md
-rw-r--r-- 1 alexlee staff 14433 cli-reference.md
-rw-r--r-- 1 alexlee staff 22051 configuration.md
-rw-r--r-- 1 alexlee staff 25587 mcp-reference.md
-rw-r--r-- 1 alexlee staff 39507 multi-instance.md
-rw-r--r-- 1 alexlee staff 23827 profiles.md
alexlee@192 unterm % 写这段网站的 agent 就是跑了上面那段代码,再用 screen.text 把右边的输出拷进了这个 HTML。看到上面那个 v0.18 tag?同一个 agent 30 分钟前 push 的。读和写跑在同一个 socket —— 这就是全部故事。
Unterm 的三种用法
我们没为单一工作流设计。MCP 表面让每个角色都通过不同入口拿到同一套控制平面。
从 Claude Code、Cursor 或自己的 agent 控制多个终端 pane。每个 pane 一个任务;agent 决定在哪儿打字。多实例 NATO 命名(alpha、bravo、charlie…)让跨窗口路由变得简单。
- 导演/工人模式:外层 agent 监督 pane 里的内层 agent
- 长任务监视:发起构建,轮询到 idle,决定下一步
- 多 pane 编排:把工作分到多个项目,聚合结果
- 带 token 脱敏的录制,供 review 和微调
GUI 能做的事 cron 也能做。unterm-cli 在每个 release 里都有;任何下游想要原始 JSON-RPC 都可以用 --json。运维脚本、面板、Runbook 同一个表面。
- 自动代理探测:macOS scutil / Windows registry / GNOME gsettings
- 无头截图、pane 读取,便于事故文档
- 录制 → markdown 用于 Runbook 生成,默认 PII 脱敏
- 无埋点、无登录,所有服务绑定 127.0.0.1
MIT 授权的 WezTerm 分支,自带一流 agent 集成。GitHub 上接受 PR。自己编译;二进制 CLI 每个 release 都打包。Web Settings UI 是 Tailwind + Alpine SPA——fork 页面,改颜色。
- macOS 通用 arm64 + x86_64 二进制,Developer ID 签名
- Linux .deb(apt)和 AppImage(任意发行版)
- Windows MSI(WiX 6)+ 便携 .zip
- 9 种语言开箱即用,自动跟随系统 locale
按平台下载
选择适合你系统的已签名安装包,下面的直链会直接跳到 GitHub Releases。
curl -fsSL https://unterm.app/install.sh | sh Detects OS + arch, downloads the right artifact for the latest release. macOS gets the signed + notarized DMG into /Applications. Linux uses apt when available, falls back to the AppImage in ~/.local/bin.
Or grab the artifact directly:
Four control surfaces, one engine
Every Unterm window starts a local MCP server and an HTTP settings server. Read and write the same JSON state from any of them.
Line-delimited JSON-RPC on 127.0.0.1:19876, auth-token gated. Spawn shells, read pane state, capture screenshots, control sessions.
Same surface from any shell, cron job, or script. Thin JSON-RPC client over the local MCP — no duplicated business logic.
Modern config UI in the browser, not the cell grid. Tailwind + Alpine SPA at 127.0.0.1:19877. Themes, proxy, recordings, language.
en / 简体 / 繁體 / 日本語 / 한국어 / Deutsch / Français / Italiano / हिन्दी out of the box. System locale auto-detect.
OSC 133 block-segmented markdown with built-in redaction. Recordings live in <cwd>/.unterm/sessions/.
One-click region capture from the status bar. PNG to disk, image to clipboard, path to text clipboard.
Reads macOS scutil / Windows registry / GNOME gsettings / env. One-toggle on/off. No URL config.
Built on a customized WezTerm engine — Metal on macOS, OpenGL on Linux, DirectX via ANGLE on Windows.
完整的控制面
不是截图导览,而是每个 agent 和脚本都能调用的真实表面:11 个命名空间下 65 个 MCP 方法,外加 22 个 CLI 命令,全部返回同一份 JSON。
从终端外创建、切分、聚焦、调整尺寸、销毁 pane。逐字符往任意 pane 打字、读它的 cwd、轮询到 idle —— 完全不用模拟按键。
拉取实时 viewport 文本、把完整 scrollback 作一个字符串、光标位置、或正则搜索。detect_errors 标出失败命令供 agent 响应。
跑命令并流式拿输出、run-and-wait 拿退出码、发原始字节、查状态、取消、或投递 POSIX 信号 —— 结构化结果,不是刮屏。
安装、登录、配置、启动 Claude Code / Codex / Gemini / OpenCode / Aider。mcp-stdio 桥接把每个 agent 自动接回当前终端的 MCP server。
把窗口绑到一套开发者身份 —— GitHub PAT、AWS keys、npm token、SSH key、git 作者。凭据存在系统 vault;7 个嗅探器只读发现已有的。
每个窗口是一个 NATO 命名实例(alpha、bravo、charlie…)。列举机器上每个活着的 Unterm、聚焦其一、或改标题 —— agent 按 cwd 或标题在窗口间路由任务。
把任意 session 录成 asciicast、回放、或导出成 OSC-133 分块 markdown 并脱敏 token —— 每块带命令、输出、退出码和耗时。
截全屏、某窗口、或框选区域;读剪贴板;或把文件直传你自己的阿里云 OSS / 腾讯 COS / 七牛桶并拿回公开 URL —— 全走 MCP。
读 OS 代理状态、在配置好的节点间切换、测延迟、或应用 / 清除系统代理覆盖(macOS scutil · Windows 注册表 · Linux env)—— 零 URL 粘贴。
每次 agent 写入都记录其身份;写入确认策略把控首次接触。测试策略判定、跑内置自测套件、读 liveness/readiness 标志。
保存当前窗口完整的 pane / tab 布局、列出已存布局、恢复其一 —— agent 可以给一组工作快照,之后再拉回来。
meta.surface 一次调用返回每个 MCP 方法(含参数 schema)、每个 CLI 子命令、每个生效的快捷键 —— 刚连进来的 agent 不查文档就学会整套 API。
每个方法都能从 MCP(TCP 上的 JSON-RPC)、unterm-cli 二进制、网页设置 HTTP API 和 GUI 四个入口调用 —— 一次 meta.surface(或 unterm-cli reference)往返就实时返回这整张清单。
Unterm 真正与众不同的地方
三条你自己能 grep / build / run 验证的差异。没营销话术。
v0.18 让 Unterm 变成 Claude Code / Codex CLI / Gemini CLI / OpenCode / Aider 的一键启动器。每个 agent 的安装命令、OAuth 流程、API key、原生配置文件都由 unterm.app 服务的签名 manifest 描述;runtime 把 key 落进系统 keychain、用 preserve_unknown_keys 写 agent 自己的 JSON/TOML/YAML 配置、把 Unterm 自己暴露为 MCP server 给 agent 用、把 session 入审计 —— 全部从 CLI 和新的 AI Agent Web Settings tab 都能驱动。
session.split + session.focus 通过 MCP 让外部 agent(Claude Code、Cursor、自己写的脚本)把当前窗口左 / 右 / 上 / 下切开并把焦点交给新 pane —— 不用模拟任何按键。Hero 的 Python 例子就在用。其他终端都没把 pane 几何暴露给外部进程。
每一次 session.input / exec.send 都记录调用 agent 的身份。新 agent 首次写入会触发 Allow / Block / Always-allow 横幅。信任写到 ~/.unterm/trusted_agents.json,可在网页设置 MCP 标签里一键撤销。状态栏显示实时 MCP 写入次数。
日常用得到的小细节
都不是宣传级特性,但日复一日加起来就是顺手。
Fish 风格的灰色预测,从任意 pane 的 shell history 续写当前输入;→ 或 End 接受。
Agent 可以「提议」命令而不直接写入 PTY —— 在状态栏上方显示;Tab 接受,Alt+Enter 接受并执行。
从状态栏框选任意矩形;PNG 落盘、图像入剪贴板、文件路径作文本一次到位。
内置 9 套主题;unterm-cli theme set midnight 一键热切换。状态栏显示当前 pane 的 $HOME 相对路径。
Finder 右键 → Open in Unterm。用 AppleScript Services 扩展,应用内不堆右键菜单。
当前窗口绑定的身份 profile(GitHub PAT / AWS keys / npm token)会显示在状态栏;点击切到下一个 profile 的新窗口。
自动读 macOS scutil / Windows 注册表 / GNOME gsettings / 环境变量。一个开关。不用粘贴 URL。
录制按 shell prompt 边界自动切块。每块带命令、输出、退出码、耗时 —— 都可搜。
v0.44 新增
抗抖动的代理自动轮换、每个 AI CLI 的 flag 与参数完整灰字补全、Windows 上零配置探测 Clash —— 最近几个版本,四张卡说清。
这一轮 chrome 做了三件一起落地的事。(1) 统一顶栏。原来灰色原生标题栏 + 深色 tab 行的两段式收成一整条,背景跟随 palette.background;红绿灯落进 tab 行,chrome 高度对齐 Warp 节奏。右侧动作图标(命令面板、树边栏、拆分、目录跳转、搜索、设置)全部走 Codicons,通过随包的 SymbolsNerdFontMono 渲染,跨平台都是矢量级清晰。(2) 左侧竖向 tab 栏(tab_bar_position = "Left"):每个 tab 是一行,副标题 agent · 目录 显示当前 MCP agent + 工作目录,拖拽排序、双击重命名,底部钉住一条 doaipm.com 链接。(3) 每 pane 的状态条挂在顶栏右侧:git 分支 + 脏/ahead/behind,前台进程的 CPU / 内存 / 运行时长,以及当前接管该 pane 的 AI agent —— 全部在渲染线程外异步刷新,不影响打字延迟。Workspace 恢复现在会按原 cwd 把所有 tab 都开回来,不再只剩一个干净 shell;并且按二进制路径分别存档,Unterm.app 跟开发版互不踩对方的状态。
两个 Windows 优先的修复。盘符是独立的根,目录跳转面板从 C:\ 永远够不到 D:\——现在所有盘符进入“位置”区,敲 D:、d:\code(以及 UNC \\server\share)直接进入路径补全,反斜杠自动处理。另外,在没有可用 OpenGL 的环境(虚拟机、远程桌面、老驱动)双击启动曾经会无声退出;现在自动回退到 WebGpu 后端,两个后端都不行时弹出真正的错误对话框,而不是凭空消失。
目录跳转面板这回真正长腿了。敲个片段就能匹配项目下任意深度(有界递归扫描,自动跳过 node_modules 等噪声):term ren 一步命中 …/termwindow/render。Tab 改成 shell 式补全——把选中目录连斜杠写进输入框继续走,和 cd dir<Tab> 一个手感。/ 或 ~ 开头即路径补全;挂载卷以 Finder 风格“位置”出现(第二块盘终于能按名字够到);列表截断时明说“… 还有 N 个”。还有一个关键修复:中文等输入法合成的文字现在能正确进入弹层——以前会漏进面板背后的终端,看起来像面板死了。
面板内搜索条全面重做:秒开、第一个按键直接替换预填词、匹配切换和光标终于看得清,copy mode 里点击任意匹配直接跳过去,tab 栏也加了搜索按钮。同样的能力也给了 agent:screen.search 学会了 goto——在回滚区找到字符串后直接把视口跳到那里。另外:修复 Windows 启动时串行代理探测导致的数秒卡死;MCP stdio 桥在 GUI 未启动时也能应答 introspection;新增 GUI 卡顿看门狗。
六条原则,没有例外
Every server, every API endpoint, every recording lives on 127.0.0.1. No login, no telemetry, no subscription. Your shell history is yours.
No chat overlay, no ghost-text autocomplete, no inline AI panel. The terminal is the surface — Claude Code, Cursor, your scripts grip it through MCP.
Every product feature ships with an MCP method and a CLI subcommand on day one. If it can't be driven from outside, it doesn't ship.
A feature that works on Windows but bails on macOS or Linux is a bug, not a 'not yet supported.' Mac, Linux, Windows ship together.
属于系统的能力就交给系统。终端内不做自定义右键菜单,不做 Cmd+Q 确认,不手填代理 URL;Finder 集成改用原生右键扩展和 Services。
你通过 Unterm 装一个 AI agent 时,默认认证模式是厂商官方订阅 (OAuth) —— 走你已购的 Pro / Plus / Team 套餐。Unterm 永远不偷偷往 session 里注入 API key;只有当你在配置表单里把认证模式显式切到「自带 API key」或「自定义端点」时,才会按 token 计费。是 opt-in,不是默认行为。
终端不需要内置 AI。
终端需要被 AI 控制。
这是 Unterm 和 Warp 的根本分岐——不是功能差距,是方向差别。
终端是用三十年的工具,AI 模型是六个月一换的组件。把 AI 焊死在终端里,等于让寿命最长的工具被寿命最短的组件定义——模型一过时,整个终端跟着过时。
Claude Code、Codex、Gemini CLI、Aider——你已经在用世界上最强的编码 agent,它们每个月都在变强。终端里再内置一个聊天框,只是多一个要登录的副驾驶,而且永远不如你正在用的那个。
agent 不缺智能,缺的是看见和操作终端的手。Unterm 把终端做成 MCP 可控面:开 pane、跑命令、读屏、滚屏长截图、改设置、录会话——agent 像人一样用终端,而不是隔着玻璃看。
- AI 内嵌在终端 UI 里,绑定它的云——登录、订阅、配额
- 用它选的模型,按它的节奏升级
- AI 核心闭源,你的命令上下文走它的服务器
- 终端是 MCP 可控面——任何 agent 即插即驱动,今天的或明年的
- 你选 agent、你选模型,Unterm 永不绑定
- MIT 全开源,一切都在 127.0.0.1——无登录、无订阅、无遥测
三十年后你还会在用终端。到时候驱动它的 AI 是哪一个,没人知道——所以唯一面向未来的终端,是把“被驱动”做到极致的那一个。
Unterm vs 原生终端 vs 付费 AI 终端
原生终端(Terminal.app)是你已经有的基线;Warp 是付费的 AI 终端;iTerm2 和 Ghostty 是免费的高级终端。Unterm 走自己的赛道:一切外部 agent 能从外面抓握的能力。
| 能力 | Unterm | Terminal.app | Warp | iTerm2 | Ghostty |
|---|---|---|---|---|---|
| agent 优先 | 原生 | 付费 | 免费 | 免费 | |
| 可从外部经 MCP 驱动 | ✓ | ✗ | ✗ | ✗ | ✗ |
| 每个动作都有可脚本化 CLI | ✓ | ✗ | ✗ | Python API | ✗ |
| 内置 AI 编码 agent 启动器 | ✓ ×5 | ✗ | ✗ | ✗ | ✗ |
| agent 自动接回终端 MCP | ✓ | ✗ | ✗ | ✗ | ✗ |
| 身份 profile(一窗一套凭据) | ✓ | ✗ | ✗ | ✗ | ✗ |
| 多实例编排 | ✓ | ✗ | ✗ | ✗ | ✗ |
| 会话录制 → markdown | ✓ md | ✗ | ~ | ✓ | ✗ |
| MCP 截图 + 文件上传 | ✓ | ✗ | ✗ | ~ | ✗ |
| 内置代理管理 | ✓ | ✗ | ✗ | ✗ | ✗ |
| 本地优先,无云端 / 无登录 | ✓ | ✓ | ✗ | ✓ | ✓ |
| AI 内嵌进终端 | ✗ 刻意如此 | ✗ | ✓ (cloud) | plugin | ✗ |
| GPU 渲染 | ✓ | ✗ | ✓ | ✓ | ✓ |
| macOS + Linux + Windows | ✓ | ✗ | ✓ | macOS | mac+Linux |
| 客户端开源 | ✓ MIT | ✗ | ✗ | ✓ GPL | ✓ MIT |
| 原生界面语言 | ✓ ×9 | OS | en | en | en |
| 价格 | $0 | $0 | 免费+付费 $ | $0 | $0 |
✓ 有 · ✗ 无 · ~ 部分 · ×N 数量。「AI 内嵌」那行的 ✗ 刻意如此 正是整个产品主张:Unterm 把 AI 留在外面,把终端本身作为它抓握的表面。
反映 2026-05 公开可查的功能。Warp 闭源,有云端支撑的免费层 + 付费 Team/Pro;iTerm2 提供 Python 脚本 API 和一个 opt-in 的 AI 命令插件;Ghostty 暂无 Windows 版本。欢迎在 GitHub 上指正。
Get Unterm 0.23
macOS bundle is signed with a Developer ID and Apple-notarized. Linux .deb / AppImage and Windows .msi / .zip are also published.
打开最新发布页Frequently asked
What is Unterm?
A cross-platform terminal emulator with built-in MCP, HTTP, and CLI control surfaces. The product thesis: terminal as MCP-controllable surface, so any external AI agent can drive it from outside instead of having an AI baked into the terminal itself.
How does it work with Claude Code, Cursor, or other agents?
Each Unterm window starts a local MCP server (TCP, JSON-RPC, auth-token gated). Point your MCP client at 127.0.0.1:<port> — the port + token are written to ~/.unterm/server.json on launch. The agent can spawn shells, run commands, read pane state, capture screenshots, toggle recording, and switch settings.
如何用一个 agent 驱动多个 Unterm 窗口?
每个 Unterm 进程是一个实例,名字来自 NATO 字母表(alpha、bravo、…),记录在 ~/.unterm/instances/<name>.json。任意一个上调 instance.list 列举所有;按 cwd / title / 启动顺序选;用对应实例的 port 和 auth_token 连过去。~/.unterm/active.json 指向最近活的实例,给单实例 agent 兜底。
How is this different from Warp?
Warp embeds AI inside a closed cloud orchestrator (Oz) — external tools like Claude Code can't drive Warp from outside. Unterm picks the third lane: keep AI out of the terminal, expose the terminal itself as an MCP-controllable surface, and let any agent grip it. No cloud, no login.
Where does my data go?
Nowhere external. MCP and Web Settings servers bind to 127.0.0.1 only. Session recordings land under <project>/.unterm/sessions/ with built-in redaction for tokens. There is no telemetry, no analytics, no login, no cloud round-trip. Your shell history is yours.
Unterm 会上报数据吗?
不会。默认零遥测 —— 连「请允许收集匿名数据」的弹窗都没有。Unterm 唯一会发出的网络请求是:(1) 你在网页设置里点下载链接时;(2) 你的 shell 自己发的请求 —— 跟其他终端一样。我们不出货任何统计、错误上报、安装回调或更新检查。
有付费版或高级特性吗?
没有。Unterm 是 MIT 协议,同一个二进制包含所有功能。无订阅、无 Pro 版、无插件市场、无「付费解锁分屏」。如果想支持项目,上面赞助区是唯一的方式。
安装包和运行时占多大?
macOS DMG ~117 MB · Linux .deb 35 MB · AppImage 46 MB · Windows MSI 44 MB。空闲、单窗口时常驻内存 ~110 MB,每多一个 pane 线性增加。引擎是定制版 WezTerm(GPU 渲染:Metal / OpenGL / DirectX),比裸终端大一些,但运行成本主要来自你的 shell,不是渲染器。
Unterm 会按系统语言自动切吗?
会。首次启动会读 OS 语言(macOS 上 defaults、Linux 上 $LANG、Windows 上注册表)然后在 9 种界面语言中选最接近的。可以在 Web Settings → Language 按窗口覆盖。翻译文件在 wezterm-gui/src/i18n/locales/*.json,欢迎 PR。
能阻止一个失控 agent 在我的仓库里跑 rm -rf 吗?
三道闸:(1) MCP 服务只监听 127.0.0.1 —— 没网。(2) 走 auth token;token 在 ~/.unterm/instances/<name>.json,没有这个文件的读权限连不上。(3) 新 agent 首次写入会弹 Allow / Block / Always-allow 阻塞条;审计日志记录每一次写入尝试和调用方身份。可以在网页设置 MCP 标签里随时撤销信任。
How do I script it?
Use unterm-cli: session list, proxy status, theme set midnight, session record start, screenshot. Pass --json to any subcommand for raw JSON-RPC output suitable for shell pipelines and cron jobs.
哪些平台有签名和公证?
macOS:通用 arm64 + x86_64 DMG,Developer ID 签名,Apple 公证 + stapled(无 Gatekeeper 警告)。Linux:Debian/Ubuntu 用 .deb,任意发行版用 AppImage。Windows:WiX 构建的 MSI 安装包和便携 .zip。每个 minor tag 都发到 GitHub Releases。
Is it open-source?
Yes — MIT licensed. Built on top of the WezTerm engine for renderer / font / SSH / mux work, with a thin Unterm product layer (MCP, Web Settings, recording, i18n, signing pipeline) on top. Source at github.com/zhitongblog/unterm.
如何参与贡献?
在 GitHub 上开 issue 或 PR。Bug、需求、讨论都在一个队列里。我们把累积的修复打成 minor 版本——patch 级别的版本不会触发 CI 构建。文档在仓库里 /docs。
支持 Unterm
一个开发者业余时间在维护 Unterm。如果它给你的日常加速了,少量赞助能让项目活下去。
国际 monthly 或单次。GitHub 经 Stripe 处理。随时取消。
全球单次打赏,本币任意金额。
赞助者会列入 README 和应用内 About 弹窗(征得同意)。没有付费墙、没有 Pro 版 —— 所有功能都在同一个 MIT 二进制里。