nodeterm
把终端和 AI 编码代理变成无限画布上可拖拽的节点,用空间布局取代堆叠标签页,让并行代理会话一目了然。
- Star 数
- ★ 2.1k
- 最近更新
- 1 天前
- License
- NOASSERTION
- 主语言
- TypeScript
- FA 评分
- 65/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Codex · Claude Code
- 费用
- 免费,无需付费服务
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 同时运行多个 Claude Code / Codex 会话、容易在堆叠标签页中迷失上下文的 ADHD 或多任务开发者
- 不适合
- 需要完全离线、无 tmux 环境的用户
- Windows 上要求会话跨重启保持连续的用户
- 想以闭源商业方式二次分发或提供竞品的团队
- 源码审查
- 65/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
nodeterm(GitHub: eneskirca/nodeterm)是一个基于节点的终端管理器,面向运行多个 AI 编码代理的开发者。每个终端和代理会话运行在独立的持久化 tmux 会话中,以可拖拽节点的形式呈现在一张可平移缩放的无限画布上;每个项目同时也是一个 Trello 风格的看板,卡片即实时会话。应用基于 Electron 构建,通过 CorePlatform 服务缝隔离平台,同一渲染器可运行三种形态:macOS/Linux/Windows(beta) 桌面应用、自托管的浏览器服务器版(Server Edition),以及 iOS 移动伴侣。代理支持 Claude Code、Codex、Gemini、GitHub Copilot、opencode、Grok 及自定义 CLI,通过 hook 驱动的状态徽章(RUNNING / NEEDS YOU)通知用户,无需抓取输出。许可证为 BUSL-1.1,每个版本发布四年后自动转为 MIT。
nodeterm 在画布上创建多种节点:终端(xterm + tmux,AI 命名)、代理(Claude Code / Codex / Gemini / GitHub Copilot / opencode / Grok / 自定义)、便签(可链接为代理上下文)、Monaco 编辑器、diff 视图、网页/视频节点,以及可绑定 git worktree 的分组。它通过 hook(而非输出抓取)驱动 RUNNING / NEEDS YOU 状态徽章、子代理卡片、上下文计量器和系统通知,并支持在节点内直接应答权限请求。每个项目既是画布也是看板(⌘⇧B),卡片可拖拽换列、打开实时卡片弹窗、指派队友,还能同步 GitHub Issues。它内置 VS Code 风格的源代码管理(暂存、提交、推送、worktree)、SSH 远程项目、本地 Whisper 语音输入(⌘⌥ 按住说话)、AI 提交信息与终端命名(只读调用本地代理 CLI),以及一个让代理操作画布的 canvas-control CLI。桌面应用内置自带 tmux 的 macOS 版本,会话跨应用重启甚至机器重启后可恢复滚动缓冲并用 claude --resume 续接。
- 同时运行多个 Claude Code / Codex 会话、容易在堆叠标签页中迷失上下文的 ADHD 或多任务开发者
- 管理分支级代理工作流、需要 git worktree + 代理分组的工程团队
- 需要在外出时用 iPhone 查看/应答代理请求的重度 tmux 用户(通过 QR 配对与 E2E 加密中继)
- 想在一台常驻 Linux 服务器上托管代理会话、从任意浏览器访问的远程工作者(Server Edition / headless 通知主机)
- 需要在代理长任务运行期间防止机器休眠、并获得推送到手机的 NEEDS YOU 通知的 overnight 任务用户
如何安装或部署这个 Agent?
从 nodeterm.dev 下载对应平台安装包:macOS 用 .dmg 或 Homebrew(brew tap nodeterm/tap; brew trust nodeterm/tap; brew install --cask nodeterm);Linux 用自更新 AppImage 或 .deb(sudo apt install ./nodeterm-*.deb);Windows(beta) 用未签名的 Setup .exe。iOS 伴侣应用在 App Store(nodeterm mobile)。从源码构建需 Node.js 20+ 和 tmux:npm install; npm run dev / npm run build。服务器版:npm run server:dev(需 Node 22 + tmux),然后打开 http://127.0.0.1:8443 设置密码。headless 通知主机可用 curl -fsSL https://raw.githubusercontent.com/eneskirca/nodeterm/main/scripts/install-server.sh | bash 安装为 systemd 服务。
如何使用这个 Agent?
启动后右键画布空白处创建终端或代理节点;⌘T 新终端,⌘⇧C 新建 Claude Code 会话,⌘K 命令面板,⌘⇧B 切换看板,⌘⇧E 文件浏览器,按住 ⌘⌥ 语音输入。代理状态以 RUNNING / NEEDS YOU 徽章和系统通知呈现,点击即可在节点内应答权限请求;MacBook 上代理状态还显示在刘海中。手机用 iOS 应用扫描 QR 配对,即可在同一实时会话上查看、应答和输入。所有快捷键可在 Settings → Keyboard Shortcuts 重映射;卸载可先 --dry-run 运行官方 uninstall.sh 脚本。
这个 Agent 有哪些优点和局限?
- tmux 会话持久化跨应用重启甚至整机重启,macOS 版自带 tmux 无需预装
- hook 驱动的代理状态(无需输出抓取)+ 子代理卡片与节点内权限应答
- 同一代码支持桌面、浏览器 Server Edition 和 iOS 伴侣三种形态,架构上有清晰的 CorePlatform / TerminalTransport 服务缝
- 画布与看板双视图,GitHub Issues 双向同步、worktree 绑定分组等面向真实代理工作流的功能
- 许可证为 BUSL-1.1 而非 OSI 开源许可,禁止以竞争方式提供本产品,商用授权需联系作者
- Windows 支持为 beta:安装包未签名、更新需手动、tmux 缺失导致会话跨重启连续性仍在开发中(#579)
- 依赖 tmux 与 git 等系统工具;无 tmux 的环境(如当前 Windows)功能受限
- 提供方生态绑定于具体代理 CLI(Claude Code 等需本机已登录),部分高级功能(如对话分支、托管账户)仅限 Claude
这个 Agent 与同类方案有什么区别?
README 将自身定位与堆叠标签页的传统终端(及 Trello 式看板)对比,并在徽章/商标声明中提及 Trello,但未点名可直接替代的具体竞品。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| nodeterm 当前 | 65 · 存在缺口 | 桌面应用免费 | ★ 2.1k | 1 天前 | TypeScript | Codex · Claude Code |
| amux 智能体控制平面 | 77 · 表现良好 | 自托管服务免费 + 模型费 | ★ 543 | 今天 | Rust | Codex · Claude Code |
| Collie | 84 · 表现良好 | 命令行工具免费 | ★ 1.4k | 1 天前 | TypeScript | — |
| Pi Subagents 多智能体编排框架 | 62 · 存在缺口 | Agent 插件 / 技能免费 + 模型费 | ★ 132 | 1 个月前 | TypeScript | — |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示CI工作流使用最小contents:read权限,核心代码实现了open-project授权账本与per-caller同意门(test/acceptance测试可见confirm-gate、grant租约、拒绝路径),语音听写明确'先审后发'且本地Whisper转录,远程链路有tweetnacl E2EE并有篡改失败测试。扣分项:依赖安全仅见package.版本范围与dompurify override,无审计/lockfile证据,Windows安装包未签名;curl|bash安装脚本未在此文件集中可审计;发布者身份未经验证,package.作者仅为个人邮箱,署名薄弱。
README、package.与workflow自洽(Node 20+/22声明与engines基本一致但engines范围比README的'20+'更窄,属轻微不一致);tmux缺失时有明确降级说明(issue #126),bootstrap-windows.bat补齐构建依赖,atomic-write等Windows差异被CI针对性测试覆盖。扣分项:Windows无tmux导致session continuity尚未落地,engines与README声明不完全对齐。
受众与场景定义清晰(ADHD工作流、并行agent、桌面/服务器/iOS三表面),平台限制逐项说明(Windows beta、.deb手动更新、闭盖不防睡眠),环境适配覆盖mac/Linux/Windows/SSH远程/浏览器。扣分项:无AGENTS.md类清单,agent触发与canvas-control CLI的精确语义仅在README提及,仓库文件未提供触发规范;移动端为独立仓库未在证据内。
信息架构非常完整(下载/构建/架构/快捷键/文档站分节明确),安装说明含每平台细节与失败提示(brew trust前置条件),已知限制诚实详细(未签名、无tmux降级、闭盖限制、#579进行中)。扣分项:元数据license为NOASSERTION与实际BUSL-1.1不一致(LICENSE文件本身完整);无独立CHANGELOG文件,版本说明靠发布workflow自动生成;package名为node-terminal而产品名nodeterm,命名有轻微漂移;示例主要外链docs站,仓库内FAQ未见。
输出可用性:快捷键表、命令面板、通知/badge状态、uninstall清单文档化,产物有artifact名验证步骤;边际价值在于把tmux+agent状态hook化为空间画布,README解释了为何不用输出抓取;成本方面提示了自托管runner与夜间运行的功耗约束。扣分项:以上多为声明性描述,静态文件无法证明实际可用性与收益,且1.2k下载徽章为手工填写。
主张普遍可溯源至issue/PR编号(#338、#579、#454、#126等),注释中明确区分事实与推断(release.yml对v0.2.x事故的解释),测试针对真实原语而非mock链。扣分项:文档站、star数、trendshift、App Store等多为主张无法在仓库内独立佐证;下载徽章数字无自动来源。
- Windows安装包未签名且自动更新关闭,SmartScreen会警告;仅作试用为宜。
- 元数据许可证为NOASSERTION,实际为BUSL-1.1(非开源许可),商业竞争性使用受限;以仓库内LICENSE为准。
- 安装/卸载使用curl|bash管道脚本,执行前请先自行审查脚本内容并用--dry-run。
- 静态审查未执行任何代码;依赖漏洞状况未经扫描验证,部署前请运行npm audit并审阅lockfile。
- 发布者为未验证个人(个人邮箱联系),企业采购需自行尽调。
- 该工具会向agent CLI配置合并status-hook条目,卸载脚本声称还原,但使用前建议备份相关CLI配置。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
Highlights Windows is a real target now — as an unsigned beta, and that word is doing work. The session-host phase landed, so the whole core experience works there: agent sessions and their hooks, managed Claude and Codex accounts, native SSH (port and agent forwarding, ProxyCommand, Pageant, ssh.exe), live links and co-attach, the phone relay, dev tools, run configurations, the tray with background mode, and the session reaper and memory panel. What it does not have is a code-signing certificate, so Windows SmartScreen will warn on the installer, and the build cannot …在 GitHub 查看 ↗ -
发布说明摘录
Highlights If you use hold-to-talk dictation, take this release. A support report traced a bug that had been there for many versions: after a short Cmd+Alt tap — or any Cmd+Opt shortcut, or the window simply losing focus — the microphone could stay open and keep typing into your selected terminal, one line every couple of minutes for about ten minutes. Sometimes what it typed was speech from the user's meetings. Opening a microphone is asynchronous, and the overlay could close before the capture handle existed, so the cleanup found nothing to cancel and the capture lived on alone. …在 GitHub 查看 ↗ -
发布说明摘录
Highlights Live links grew up. v0.4.1 introduced them read-only. This release puts a Share live link button straight in the terminal node header, drops the limit on how many you can have, adds a Live chat drawer where you follow and answer a link's chat, and adds the one thing v0.4.1 could not do: a Control role that lets the other side actually type. Control is opt-in per link and gated, because handing someone your terminal is not a small thing. A viewer needs a name plus a password you send them separately — 8 to 128 characters, or a …在 GitHub 查看 ↗