开源 · 本地优先 · MIT 协议

一体化开发运维终端

SSH、WinRM、文件、Docker、数据库与 AI 共用一套三层工作区。标签始终挂载,切换不重连;AI 全程在权限护栏内执行。

桌面版 Windows · macOS · Linux,服务端 Linux / 容器 凭据加密存储 · 同步内容端到端加密
NexTerm - web-01 · SSH AI 接管演示
已连接 │ web-01 │ bash │ UTF-8
SSHSFTPWinRMConPTY真 PTYDockerMySQLRedisSOCKS5Argon2idAES-GCMDPAPIxterm.jsWailsGoWebSocketSQLite
nexterm --modules

一个窗口,把整套运维收进来

不是功能堆叠,而是把命令、文件、数据与 AI 放进同一条工作流,让它既跑在桌面上,也跑在服务器上。

AI ASSISTANT

AI 助手,看得见也管得住

命令以卡片进入对话流,展开可见完整输出与退出码;危险操作一律拒绝,敏感操作先经确认。

  • 只读、读写、静默三档权限随时切换
  • AI 接管中,终端内按任意键只是暂停、可恢复;全局夺回快捷键(默认 Esc,可改键)或点「立即夺回」才停止 AI 并退出接管
  • 写文件前先看逐行 diff,改完留变更记录
  • 任意 OpenAI 兼容端点,密钥只存自己一侧
TERMINAL

终端与工作区

工作区、分屏面板、标签三层结构;一台资产一条连接复用,断线按指数退避自动重连。终端会话自动录制,可在「终端历史」回看文本或按时间轴回放。

FILES

文件

SFTP 虚拟滚动、上传下载进度、内置编辑器与 MD5 / SHA256 校验。

DATABASE

数据库

MySQL 库表浏览与 SQL 工作台;Redis SCAN 分页、类型感知查看与命令台。

DOCKER

Docker

容器列表、日志 follow、容器终端、镜像管理、容器文件浏览与批量操作。

FORWARD

端口转发

本地转发与 SOCKS5 动态转发复用已有会话,直达内网资源。监听地址由部署形态决定:桌面回环、自建服务端对外、懒猫微服上不可用。

SECURITY

凭据加密存储

两级密钥信封加密,日志自动脱敏;管理面板呈现引用关系与删除保护,支持 Windows DPAPI / macOS 钥匙串免主密码模式。桌面端凭据只落本机;部署成服务端时,凭据库与主密钥在服务端这一侧。

  • 主密码 → Argon2id → KEK → 信封加密 DEK → AES-GCM
TEAM

多用户账号与设备分享

服务端内置账号体系,同步数据按账号隔离;主机装设备 agent 纳入设备列表,随时远程打开终端。

  • 超管创建用户,或开放注册自助加入
  • 主机分享给指定注册用户,有效期内随时开新终端
  • 公开链接默认只读,可勾选允许读写;限时、可撤销,访问与输入留审计
  • 分享全程不暴露主机密码与私钥
nexterm --forms

一个内核,两种形态

同一个 Go 核心:装在本机是桌面 App,部署到服务器就是浏览器里的运维终端。

桌面 App 与服务端共用同一个 Go 内核
DESKTOP · WAILS

桌面 App

本地优先、功能完整。Windows、macOS 与 Linux 安装即用,凭据加密存在自己机器上。

  • 本地终端 · SSH · WinRM · 文件 · Docker · 数据库
  • AI 助手:工具调用 · 权限护栏 · 终端接管
  • 凭据落本机(DPAPI / macOS 钥匙串 / 主密码)
  • 应用内自动更新:启动静默检查 Releases,校验 SHA256SUMS 后安装
SERVER · GO

服务端 nexterm-server

部署一次,随处可用。浏览器打开就是完整界面,不用装任何客户端,而且运行态在服务端,不只是「投屏」。

  • 部署到懒猫微服 / 自建服务器
  • 终端进程与回滚缓冲留在服务端,换设备接着用
  • 多端同看,键盘只有一把(控制权按设备)
  • 同一套界面与命令清单,行为一致
  • 同时是桌面版资产同步的对端
nexterm --serve

服务端:工作台搬到服务器上

不是「投屏」。终端进程、回滚缓冲与工作区布局都跑在那台常开的机器上,浏览器只是接上去看;换设备、关网页、多人同看,都以此为准。

服务端权威运行态:多台设备共用一个工作台
CONTINUITY

换设备接着用

另一台设备打开网页,按服务端记着的标签 id 接管那条已有终端:看到的是原来那条连接和它已有的输出,不是一个新开的空 shell。

PRESENCE

多端同看,键盘只有一把

终端可被多台设备观看,同一时刻只有一台能操作。非控制者写入被拒并提示「接管控制」,点一下即换人,PTY 按接管者的窗口重排。

PERSISTENCE

关网页不丢会话

关网页只断这一端的订阅,进程与回滚继续在服务端跑。关闭标签不再三选一:SSH 守护终端直接转入「后台会话」,之后可随时接管;本机、WinRM 非交互与容器 exec 等普通终端随标签关闭结束,关闭前会再确认一次。

nexterm --layout

布局也归服务端

工作区、分屏与标签结构带一个 revision 存在服务端;任一端改动即广播给其余各端,打开时照此重建。

  • 乐观锁:写布局要带上「我这份基于哪个 revision」,对不上就不写。
  • 冲突不自动合并:布局没有可合并的语义,界面拉最新的一份让你再决定。
  • 广播带 revision:收到的一方能认出「这是我自己刚写的那次」,不会自己触发自己。
FORWARD · BY PLATFORM

转发端口的地址,看部署形态

同一条「把远端端口搬到服务端」的功能,监听在哪由部署形态决定。

  • 桌面 App:127.0.0.1,转发只给自己用
  • 自建服务端:0.0.0.0,可把远端服务搬到服务端端口上
  • 懒猫微服:不可用。平台侧端口暴露无鉴权,界面直接说明并指你改用平台原生转发
nexterm --sync

跨实例资产同步

桌面把主机、分组与凭据配好,一键送到对端;之后手机、平板、浏览器接着用。

跨实例资产同步:数据密钥客户端密封,服务端只存密文
DIRECTION

方向显式

分组、资产、凭据、片段整组同步,按「推送到云端」或「拉取并应用」,方向由你按按钮定;SSH 私钥这类载荷不做自动合并,逐对象按修订号裁决。

CONFLICT

默认不覆盖更新的那份

本机较新的条目先跳过、随推送覆盖云端;每轮报告分类计数。删除以墓碑同步,两端收敛一致。

CREDENTIALS

凭据端到端加密

同步内容在客户端加密,同步对端只存密文;同一账号的其他设备用账号密码解锁数据密钥,解密后应用到当前实例。

nexterm --connect

一个账号,两个部署位置

在「设置 → 账号同步」填「服务端地址 + 用户名 + 密码」登录就能连上,不用管对端装在哪:懒猫微服或自建服务器,账号是同一套机制。

  • 懒猫微服:平台公网入口默认要求登录,网关注入内部链路密钥后请求才到达容器。
  • 自建服务器:不经平台网关,直接连到服务端。
  • 两种方式都由应用自己校验账号会话,无效就拒绝。
连接对端:一个账号,两个部署位置
nexterm install

获取与部署

每次发版八个产物:Windows / macOS / Linux 桌面客户端(各 amd64 与 arm64)、Linux 服务端包(amd64 与 arm64);懒猫微服专版在应用中心安装,不经 Release 下载。

nexterm install

部署提示

  • sync-only 不是独立包:同一个二进制加 --sync-only 即只挂同步端点
  • 桌面版自动更新:启动静默检查 Release,校验 SHA256SUMS 后安装
  • 从源码构建:Go 1.26 + Node(20.19+ 或 22.12+)+ pnpm
nexterm-server - bash
# 完整版:界面 + 全部命令
# 裸启动就是 serve(容器里就这条)
$ nexterm-server

# sync-only:同一个二进制,只挂账号与同步路由
$ nexterm-server --sync-only \
      --data-dir /var/lib/nexterm

# 首次启动打印一次性初始化码,浏览器打开完成超管初始化
$ nexterm-server --data-dir /var/lib/nexterm

# 自查:sync-only 不挂 /rpc(404),/healthz 如实上报命令数
$ curl -s 127.0.0.1:8080/healthz
  # "syncOnly":true,"commands":3
LINUX · 完整版

自建机器 / 内网 VPS

带完整浏览器界面,打开 http://<地址>:8080 即用。

  • 解压即得二进制、前端产物、systemd 单元
  • 单元默认只听 127.0.0.1 并显式声明 --auth on,对外自己接反代
  • 访问控制默认开启(--auth on):/rpc、/ws、/files/blob 一律要求登录账号会话(/healthz 与页面公开),浏览器首次打开进入初始化或登录页,公网仍建议套 TLS 反代
NexTerm-server_x.y.z_linux_amd64.tar.gz · _arm64.tar.gz
LINUX · SYNC-ONLY 模式

公网只做同步中转

同一个二进制加 --sync-only:只挂 /auth/*、/admin/*、/sync/v2/*、/sync/rpc 与 /healthz。

  • 不注册任何终端命令:浏览器界面与 /rpc 都不存在;/sync/rpc 只有对端同步三命令(digest / export / import)
  • 同步数据按账号隔离、端到端加密,服务端只存密文
  • 同一个服务端包内附 nexterm-onlyserver.service,换装即切换
随 NexTerm-server 同一个 tar.gz 分发
man nexterm-faq

常见问题

支持哪些操作系统?
桌面版支持 Windows 10/11、macOS 与 Linux(amd64 / arm64 安装包);服务端是同一个 Go 核心编译的 Linux(amd64 / arm64)静态二进制,可装进容器,也可直接装在任意 Linux 机器上、用浏览器访问,因而不限客户端操作系统。
服务端放公网安全吗?
完整版默认开启账号鉴权(--auth on):/rpc、/ws 与 /files/blob 没有登录会话一律拒绝,/healthz 与页面静态资源公开;浏览器首次打开会进入初始化或登录页(账号未初始化时,一次性初始化码打印在服务端控制台)。回环免登录仅限显式 --auth loopback(会校验 Host 防 DNS 重绑定),且不适合反代场景。会话走 Cookie,公网部署前面必须终止 TLS,并建议用防火墙限制来源。公网只想做资产同步,请用 --sync-only 模式:它只挂账号与同步路由,不注册任何终端命令。懒猫微服上由平台登录门加网关注入的网关密钥放行内部链路,无需额外配置。
服务端和桌面版是两套代码吗?
不是。两端共用同一个 Go 核心与同一份命令清单,差异由平台门控收束,所以界面与行为一致。区别在运行态:桌面版的进程随窗口结束,服务端版把终端进程、回滚缓冲与工作区布局都留在服务端,于是关掉网页不丢、换设备能接着用。
几个人可以同时用同一台服务端吗?
可以。终端能被多台设备一起看,但同一时刻只有一台能操作:控制权认的是设备身份(存在浏览器本地,同一台设备多开几个页面算同一台),后来者默认是观察者,点「接管控制」即可夺得键盘,原操作者当场转为只读。关闭标签不再三选一:SSH 守护终端直接转入「后台会话」继续运行,随时可在「后台会话」面板重新接管;本机、WinRM 非交互与容器 exec 等普通终端随关闭结束,关闭前会再确认一次。
支持多用户、设备管理与分享吗?
服务端内置多用户账号:超管初始化后创建用户,或开放注册让同事自助加入;各账号的同步数据互相隔离。主机安装设备 agent 后进入设备列表,可远程打开设备终端。主机可以分享给指定注册用户,对方在有效期内随时开新终端;也可以生成公开链接,默认只读、可勾选允许读写,限时、可撤销,访问与输入都留审计。两种分享全程不暴露主机密码与私钥。
如何把一台设备接入设备管理?
用浏览器连接服务端并登录(桌面端没有设备管理)。打开「设备管理」,点「接入新设备」签发一次性接入码:接入码单次使用、限时、只显示这一次;超级管理员先在「接入地址」里添加并保存接入地址。然后在设备上执行 nexterm-server agent enroll --server <接入地址> --code <接入码>,把接入码兑换成设备凭证,再执行 nexterm-server agent install 把设备 agent 装成随登录自启的 per-user 服务。回到「设备管理」刷新,设备显示「在线」。全新 Linux 机器(无需已装二进制)可用面板里的一行安装命令一次完成下载、校验、注册与服务安装。
懒猫微服上的端口转发为什么不可用?
平台提供的端口暴露是裸 TCP,且平台文档写明「从原理上无法提供鉴权流程」,应用侧补不上这个洞。所以在这个平台上这一功能被关闭,界面会直接说明并建议改用微服平台自带的转发功能,而不是画一个连不上的地址。自建服务端上转发正常可用,监听 0.0.0.0,可以把远端 127.0.0.1 上的服务搬到服务端端口上访问。
同步会把我的密码传到别人的服务器吗?
只在你指定的对端之间传。同步内容端到端加密,服务端只存密文;账号密码只用于登录认证和在本机解锁数据密钥。公网地址强制 HTTPS,明文 HTTP 只对本机与私有网段放行。
凭据如何保护?
主密码经 Argon2id 派生密钥,凭据以 AES-GCM 信封加密存储;可选 Windows DPAPI / macOS 钥匙串免主密码模式;日志输出统一脱敏。桌面端凭据只存在本机;部署成服务端时,凭据库与主密钥在服务端这一侧。
终端历史会记录键盘输入吗?
会。每条终端会话自动录制,终端输出、你键入的键盘输入和窗口尺寸变化都按时间顺序记入本地数据库,可在「终端历史」里按文本查看、搜索或按时间轴回放。界面上的文本视图与回放只呈现输出(回放同时呈现窗口尺寸),键盘输入不会显示;但输入会原样留在记录里 —— 在终端中输入的密码、令牌等敏感内容也会进入记录,敏感操作请留意。记录默认只存本机、不参与同步,可对单条记录开启端到端加密同步,也可逐条删除。
AI 助手接入什么模型?
任意 OpenAI 兼容端点均可接入。API 密钥保存在运行 NexTerm 的这一侧:桌面版在本机,服务端部署时在你的服务端;密钥只发往你配置的模型端点,不经第三方中转。
桌面版会自动更新吗?
桌面版启动后静默检查一次 GitHub Releases,发现新版本时窗口顶部显示横幅,并在「设置 → 软件更新」卡片里展示版本号、安装包大小与更新说明,可手动「立即检查」「下载并安装」或忽略该版本。安装包下载后先按 Release 附带的 SHA256SUMS 校验,校验通过才安装:Windows 运行 NSIS 安装器静默安装(失败自动回滚),macOS 用 dmg 里的新 .app 替换 /Applications 中的 NexTerm,Linux 原子替换当前可执行文件,完成后点「立即重启」生效。更新通道跟随当前版本:预发布版收预发布更新,正式版只收正式版更新。限制:检查走 GitHub API 匿名调用,受匿名速率限额约束(每 IP 每小时 60 次),超限后本次检查失败、稍后再试即可;Windows 与 macOS 的真实安装链路未在 CI 中覆盖,应用内安装失败时可到 Releases 页面手动下载。服务端不自动安装,按部署包说明升级。
采用什么开源协议?
项目遵循 MIT 协议,可自由使用、修改与二次开发。
如何参与贡献?
前往 GitHub 仓库提交 Issue 与 Pull Request,构建与测试步骤见仓库 README。