Desktop "Add node" button invokes PIN-pairing, not manual-node registration — no UI surface for nvpair-manual-nodes
维护者通常 5 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 新手友好度
- 74/100
- Issue 类型
- 功能
- 描述清晰度
- 描述清楚
- 活跃度
- 活跃
- 技术栈
- electron, typescript
- 领域
- desktop
调研方向
从 desktop/src/ui/components/AddNodeModal.tsx 开始,并阅读 services/nvpair-manual-nodes/README.md 以了解 node/add 请求的结构。跟踪现有的 relay 和 desktop/src/electron/service-bridge/manual-nodes-store.ts,包括 modular-supervisor.ts:replayManualNodes()。当 Add node 流程提供手动节点注册、保存该条目并在重启后重放该条目时,即完成。
由索引模型根据 Issue 内容生成。
描述
Desktop "Add node" button triggers PIN-pairing, not manual-node registration
Summary
The desktop UI's Settings → Cluster → Add node button (AddNodeModal.tsx)
is the only obvious entry point for adding a node by IP address, but it
actually invokes PIN-pairing (useInvitePairing().start(ip)), not the
nvpair-manual-nodes registration that a user would expect from the label
"Add node". There is no UI surface anywhere in the desktop app to add a
node to nvpair-manual-nodes. Combined with the in-memory-only state of
nvpair-manual-nodes, this means a user with a peer reachable over Tailscale
/ VPN has no documented path to make the peer stay online.
Reproduction
- Open Settings → Cluster.
- Click Add node.
- Type the peer's Tailscale IP (e.g.
100.121.35.74) → click Invite. - Observe: pairing handshake fires (PIN prompt on the other side); on accept
the cluster membership grows butconfigs/manual-nodes.jsonremains[].
Code reference
desktop/src/ui/components/AddNodeModal.tsx:
const handleManualInvite = useCallback(() => {
const ip = manualIp.trim()
if (!ip) return
void pairing.start(ip) // <- PIN-pairing, not nvpair-manual-nodes
}, [manualIp, pairing])
The render shows this only as a manual-IP invite — there is no second button or
tab for "register as manual node".
Why this matters
The nvpair-manual-nodes worker exists specifically to probe peers by IP when
mDNS can't reach them (e.g. across VPNs). It is documented in
services/nvpair-manual-nodes/README.md and supported via JSON-RPC
(node/add with { address, name?, tls_port?, mtls? }). The Electron-side
store (desktop/src/electron/service-bridge/manual-nodes-store.ts) already
persists entries in configs/manual-nodes.json and replays them via
modular-supervisor.ts:replayManualNodes() on startup. All the wiring exists
except the UI surface.
Suggested fix
Add a second control to AddNodeModal.tsx (e.g. a tab "Add as manual node"
or a checkbox "Skip pairing — register for direct probing only") that calls
the broker's node/add relay with { address, name }. The store already
saves on success.
Workaround
Edit ~/.config/Nvidia Corporation/Personal AI Router/configs/manual-nodes.json
by hand with the documented schema [{id, address, name}] and restart the app
— the supervisor will replay it on startup. See companion issue for the
upstream symptom this addresses.
Environment
- nvpair 0.1.1
- Linux 7.2.5-3-omarchy
- 主要语言
- Go
- 星标
- 1.6k
- 派生
- 266
- 平均合并
- 3 天 15 小时
- 30 天内合并 PR
- 23
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
NVIDIA/Personal-AI-Router 的其他 Issue
-
enhancement
难度 4/5 一周以上 新手友好度 12/100
NVIDIA/Personal-AI-Router#162 ·
维护者通常 5 天内回复
-
enhancement
难度 4/5 3-5 天 新手友好度 25/100
NVIDIA/Personal-AI-Router#154 · 1 条评论 ·
维护者通常 5 天内回复
-
[Feature]: [Ollama] Alert the user about model pull failures可能已有人在做 @ckelseynv 于 2 天前认领。 未关闭enhancement
难度 3/5 1-2 天 新手友好度 56/100
NVIDIA/Personal-AI-Router#152 · 1 条评论 · 已指派 1 人 ·
维护者通常 5 天内回复
-
[Bug]: /v1/responses bypasses model-owner filtering in the Ollama proxy可能已有人在做 @ilaigold 于 3 天前认领。 未关闭
难度 3/5 半天 新手友好度 84/100
NVIDIA/Personal-AI-Router#146 ·
维护者通常 5 天内回复
-
Make model download cancellation asynchronous可能已有人在做 @ckelseynv 于 19 天前认领。 未关闭enhancement
NVIDIA/Personal-AI-Router#115 · 已指派 1 人 ·
维护者通常 5 天内回复
查看 NVIDIA/Personal-AI-Router 的全部 Issue
相似的 Issue
-
agent-butler-finding chore
难度 2/5 1-3 小时 新手友好度 78/100
jordansmall/spindrift#5128 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 84/100
维护者通常 2 天内回复
-
License GOtome under Apache 2.0 instead of AGPL-3.0可能已有人在做 @praetorianer777 今天认领。 未关闭area:workflow documentation
难度 2/5 1-3 小时 新手友好度 84/100
praetorianer777/GoTome#212 ·
维护者通常 1 天内回复
-
ci: pin Go version in Build and Unit Test workflows (>=1.26.6 floats to 1.27.2 and breaks golangci-lint)可能已有人在做 @leninmehedy 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 87/100
hashgraph/solo-weaver#1255 ·
维护者通常 1 天内回复
-
area/infra backlog type/chore
难度 2/5 1-3 小时 新手友好度 76/100
praetorianer777/Stator#374 ·
维护者通常 1 天内回复