From b39c83e385b7d1e1febfc625da887515cc6893bc Mon Sep 17 00:00:00 2001 From: Christophe Besson Date: Sun, 20 Sep 2026 01:52:06 +0200 Subject: docs: the node key is linked from Profile, not Settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QUICKSTART Step 4 named the wrong page. Recorded in §15.3 alongside it: the key is read from `meshbay-node status` or the desktop client and from nowhere else, which is a decision rather than a gap — anyone linking a node is already at a shell prompt. Co-Authored-By: Claude Opus 5 --- docs/MESHBAY_DESIGN.md | 1 + docs/QUICKSTART.md | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/MESHBAY_DESIGN.md b/docs/MESHBAY_DESIGN.md index 76c8b08..b859016 100644 --- a/docs/MESHBAY_DESIGN.md +++ b/docs/MESHBAY_DESIGN.md @@ -3130,6 +3130,7 @@ process runs it — `systemctl --user` on Linux, Task Scheduler on Windows. | **The relay registry** | **Closed in the code**: `relay.RELAYS_ENABLED` is False and every `/v1/relays` route answers 503, as federation does. Nothing in the tree calls them, node or client, and §11.1 measured two ISPs with no TURN relay needed. Kept code that nothing calls is what **L7** says not to keep; it stays only as the proof-of-possession design (**AV6**) until a node needs a relay or it is deleted | | **Per-device revocation has no CLI** | A device is revoked over MNP (`roster.revoke_device`), from a device the node has already pinned. On a headless node the operator's only lever is `member unpin`, which removes **every** device of that account — so the per-device control the roster is built around is reachable from an interface and from nowhere else. §6.7 listed a `meshbay-node member device list\|revoke` verb that was never written, and that listing is how this was found: `USERGUIDE.md` was the first document written by reading the CLI rather than this specification, and the verb it copied out did not run | | **Migrations run on SQLite only** | The chain reaches head and agrees with the models there (§12), which is not where it ships. **The exposure is one revision deep, not the whole chain**: every revision behind the first packaged release was development that no installation ever ran, so nothing replays them on PostgreSQL. What is unguarded is the *next* migration — a default, an index type or a constraint PostgreSQL refuses reaches a deploy without the suite saying so | +| **A node key is read from the terminal or the desktop client, never a browser** | **Accepted.** `meshbay-node status` on the node's own machine and Node → Overview in the desktop client are the two places the key can be read; the Node page is Electron-only, because `platform.node` resolves to "not available" without the bridge, and no hub route exposes the key. The create-group wizard links it automatically over that same bridge, so the manual paste in **Profile → Link Node** exists for the operator who runs the node from a terminal and the hub from a browser — who has a terminal by definition. Anyone linking a node is already at a shell prompt, so a browser-reachable copy would buy nothing and widen what the hub knows about the node | --- diff --git a/docs/QUICKSTART.md b/docs/QUICKSTART.md index 9a418f2..92a5cad 100644 --- a/docs/QUICKSTART.md +++ b/docs/QUICKSTART.md @@ -144,12 +144,19 @@ and prints something like: Node key: 7mK2p...base64...= ``` -**Copy that key.** In your browser, on meshbay.org: **Settings → Link Node**, -paste it, submit. +**Copy that key.** In your browser, on meshbay.org: **Profile → Link Node**, +paste it, submit. It is on the Profile page, not Settings — next to your +passphrase and recovery phrase, which is where everything tied to your identity +rather than to this browser lives. This is what lets the hub introduce your members to this machine. It is a public key; it identifies the node and unlocks nothing. +If you lose it, `meshbay-node status` prints it again at any time. Those are the +two places it can be read — that command, and **Node → Overview** in the desktop +client. A browser cannot reach the node's own control API, so it cannot show you +the key; pasting it here once is what a browser-only operator does instead. + --- ## Step 5 — Start the node -- cgit v1.2.3