跳到正文

命令行

三个程序各管一台机器:nhub 是中枢,nagent 是被控端,nclient 是客户端。这一页只列子命令和参数,怎么做某件事在各自的指南页里。

nhub 除了 runscan-secrets,每个子命令都要 root;没加时它打印带 sudo 的那一行并返回 2。nagent 每个子命令都要 root,各有各的理由。nclient 拒绝以 root 运行,那句话是「客户端以个人身份运行,绝不以 root 运行」,返回 2。三个程序都一样:不给子命令就打印帮助并返回 2;nhub 被 Ctrl-C 打断时打印它被停止并返回 130。没有 nagent gui,没有 nagent module,也没有 nagent service,面板里还提到第一个,它不存在。nhub setup 没有 --yes,非交互的写法是 --stdin--json PATH--dev 只有 nhub 有,不在工作副本里跑会被拒绝。

nhub

顶层参数:--version--dev(在工作副本的 hub_dev_root/ 下运行)、-h

子命令参数root做什么
setup--stdin(从标准输入读一个 JSON 对象,作为全部答案)、--json PATH(从这个 JSON 文件读全部答案),二选一把这台网关配置一次,见《快速上手》
run--host(绑定地址)、--port(绑定端口,默认取自配置)、--reload(源码变动就重启面板)、--interface(按接口的引擎用哪个接口)、--only-web--only-xray--only-cliproxyapi--only-dnsmasq--only-supplicant--only-dhcpcd(只跑这一个进程,和它的单元一样)不要在前台运行控制面板
stop--interface,以及 --only-web--only-cliproxyapi--only-dnsmasq--only-xray--only-router--only-supplicant--only-dhcpcd 之一(只停这一个服务)停掉中枢在这台机器上跑的东西
apply--only {router,xray,dnsmasq,cliproxyapi,easytier}(可重复,默认全部)、--dry-run(只渲染并打印,不写不应用)、--skip-apply(写文件但不重启任何服务)config/ 渲染每一份配置,校验,然后应用,见《代理》《网络模式》
unlock清掉登录锁定和 SSH 封禁,见《升级与重置》
reset位置参数 {all,password}--stdin(从标准输入读新密码,不再提示)把这台机器的一部分退回初始状态,见《升级与重置》
vault rekey--stdin(从标准输入读新口令,不再提示)用新的主口令重新包住数据密钥,见《备份与恢复》
scan-secrets--staged(只看下一次提交要带的文件)、--history(每个可达提交里的每个 blob,而不是工作树)、--no-entropy(跳过噪音最大的高熵规则)、--no-vendor(即使装了也跳过 detect-secrets 和 gitleaks)、--quiet(只打印命中,不打印汇总)不要检查一次提交会带走什么

run 不受 root 检查约束,因为它是每个单元的 ExecStart,systemd 是有意让代理核心以非特权身份启动的。单元文件随包发布,不由渲染生成,升级带来的单元变动落在 apply 这一步,已经是最新的单元不动它。vault 目前只有 rekey 一个动作,已封存的东西不会重新加密,变的只是打开它的那把口令。scan-secrets 是开发用的命令,和运行这台设备无关。

nagent

顶层参数:--version-h。没有 --dev

子命令参数要 root 的理由做什么
connect [link]link(hub 给的 neutrino://enroll 链接,不写则在提示符下粘贴)、--yes(直接顶掉已有绑定,不再询问)它写下绑定关系并把服务拉起来加入链接指向的那个 hub,见《设备与远程桌面》
disconnect它移除绑定关系离开这个 hub
status它要经被控端那个仅 root 可用的控制套接字去问这台机器绑在谁上
sync同上立刻向 hub 要一次这台机器的状态
run被控端管着这台机器在前台运行被控端
rdp start--user USER(共享谁的桌面,不写则是执行 sudo 的那个账号,或者屏幕前唯一那个账号)它要配置这台机器的桌面共享用 hub 设好的坐席密码共享这个桌面
rdp stop同上停止共享这个桌面

nagent rdp 不给动作时打印 rdp 那一层的帮助并返回 2。机器本来就没在共享时,nagent rdp stop 打印这台机器的桌面没有共享,返回 0。

nclient

顶层参数:--version-h

子命令参数做什么
connect [link]link(hub 给的 neutrino://enroll 链接,不写则在提示符下粘贴)、--yes(直接顶掉已有绑定)加入链接指向的那个 hub,见《客户端》
disconnect离开这个 hub
status这个人绑在谁上
gui--hidden(起来时不显示窗口)运行客户端和它的窗口
quit停掉正在运行的客户端
service list列出发布给这个人的每一个条目,按类别分层
service web openref在浏览器里打开一条链接
service port forwardref--local-port LOCAL_PORT把一个端口中继到这台机器的回环地址上
service port unforwardref关掉那条中继
service file configref--path PATH(必填)、--username USERNAME保存一个共享的登录信息和路径,并挂上它,见《客户端》
service file mountref用存好的登录信息再挂一次
service file unmountref卸载一个共享,存好的登录信息保留
service ai show这个人的工具当前指向哪里
service ai apply{hub,off}--claude-default--claude-opus--claude-sonnet--claude-haiku--codex-model--gemini-model--codex-efforthub 把工具指向网关,off 把它们放回去,见《AI 网关》
service desktop connectref打开查看器连上一个共享的桌面

到处出现的 ref 是这个条目在 service list 里的编号,或者它的 id。五个类别的说明分别是:web 发布的链接、port 发布的端口、file 发布的共享、ai AI 网关服务、desktop 机群共享的桌面。每个模型参数后面都跟着同一句:不写就保持原样,传 '' 表示用网关默认值;--codex-effortminimallowmediumhigh 或者 ''

nclient service 不给类别时打印 service 那一层的帮助并返回 2,给了类别不给动作时打印那个类别的帮助并返回 2。

通用参数

参数在哪做什么
--version三个都有打印包的版本号并退出
-h--help每个程序的每一层打印帮助并退出
--dev只有 nhub在工作副本的 hub_dev_root/ 下运行
--stdinnhub setupnhub resetnhub vault rekey从标准输入读那份秘密,不再提示
--yesnagent connectnclient connect直接顶掉已有绑定,不再询问

Neutrino · 个人开发基础设施