Desktop "Add node" button invokes PIN-pairing, not manual-node registration — no UI surface for nvpair-manual-nodes
Maintainer antworten meist innerhalb von 5 Tagen
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 74/100
- Issue-Typ
- Feature
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- electron, typescript
- Bereich
- desktop
Rechercherichtung
Beginne in desktop/src/ui/components/AddNodeModal.tsx und lies services/nvpair-manual-nodes/README.md, um die Struktur der node/add-Anfrage zu ermitteln. Verfolge das bestehende Relay und desktop/src/electron/service-bridge/manual-nodes-store.ts, einschließlich modular-supervisor.ts:replayManualNodes(). Als abgeschlossen gilt die Aufgabe, wenn der Add node-Ablauf die Registrierung manueller Nodes anbietet, den Eintrag speichert und ihn nach einem Neustart erneut abspielt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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
- Vorherrschende Sprache
- Go
- Sterne
- 1.6k
- Forks
- 266
- Ø Merge
- 3 T. 15 Std.
- Gemergte PRs (30 T.)
- 23
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus NVIDIA/Personal-AI-Router
-
enhancement
Schwierigkeit 4/5 Über eine Woche Anfängerfreundlichkeit 12/100
NVIDIA/Personal-AI-Router#162 ·
Maintainer antworten meist innerhalb von 5 Tagen
-
enhancement
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
NVIDIA/Personal-AI-Router#154 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 5 Tagen
-
[Feature]: [Ollama] Alert the user about model pull failuresEvtl. vergeben @ckelseynv hat das vor 2 Tagen übernommen. Offenenhancement
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 56/100
NVIDIA/Personal-AI-Router#152 · 1 Kommentar · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 5 Tagen
-
[Bug]: /v1/responses bypasses model-owner filtering in the Ollama proxyEvtl. vergeben @ilaigold hat das vor 3 Tagen übernommen. Offen
Schwierigkeit 3/5 Ein halber Tag Anfängerfreundlichkeit 84/100
NVIDIA/Personal-AI-Router#146 ·
Maintainer antworten meist innerhalb von 5 Tagen
-
Make model download cancellation asynchronousEvtl. vergeben @ckelseynv hat das vor 19 Tagen übernommen. Offenenhancement
NVIDIA/Personal-AI-Router#115 · 1 zugewiesene Person ·
Maintainer antworten meist innerhalb von 5 Tagen
Alle Issues in NVIDIA/Personal-AI-Router
Ähnliche Issues
-
[schema-coverage] elasticstack_kibana_security_detection_ruleEvtl. vergeben @github-actions hat das heute übernommen. Offenacceptance-tests phase-coding schema-coverage testing triaged
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
elastic/terraform-provider-elasticstack#5186 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
jaegertracing/jaeger#9830 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
apache/rocketmq-dashboard#6318 ·
Maintainer antworten meist innerhalb von 5 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 83/100
GoogleCloudPlatform/opentelemetry-operations-collector#710 ·
Maintainer antworten meist innerhalb von 1 Tag