Nomad hosting live interop
Manual verification that mesh-client’s static Nomad host interops with other Nomad Network clients. Automated tests cover path hashes, the Link request handler, and My Pages UI; this checklist is for a live stack.
Prerequisites
- Repo-local
.rsstack/checkouts (./scripts/clone-ratspeak-stack.sh) and anrns-stacksidecar build - Reticulum stack running in mesh-client (Connection → Reticulum)
- Shared path to peers: TCP hub, I2P/Ygg, or RF — same network as the peer client
- Optional: a site folder such as sibling
nomad-pagewithpages/*.mu
Host setup (mesh-client)
- Open Nomad Network → My Pages.
- Click Choose folder and select a site root (directory containing
pages/) or thepages/directory itself. - Set a display name → Start serving.
- Confirm destination hash is shown and Serving to network chip appears.
- Edit a
.mufile on disk in that folder — the watcher reloads routes without further UI action. - Click Open in browser — local
index.mushould load without a second peer. - Quit the app (or stop/start the stack), relaunch, start the stack — hosting should resume automatically without toggling Start serving.
Peer checks
Repeat with each peer you care about:
- Python NomadNet — node appears in announces; open destination; view index page; download a file under
/file/if present. - MeshChat (if available on the same network) — same announce → page → file path.
- Second mesh-client — Announces list → open node → page + file download.
Pass criteria
- Peer sees announce with expected display name (or destination hash).
/page/index.mucontent matches what is on disk in the chosen folder.- Host My Pages does not list dotfiles or
*.allowed; peer cannot fetch them as content. - After quit/relaunch with serving left enabled, hosting is running again once the stack is up.
- If the folder is moved/missing after restore: no green Serving chip; My Pages shows an error;
[nomad-serving]/[NomadHosting]warnings appear inmesh-client.log, the Analyze modal (reticulum-nomad-hosting), and Export for GitHub/Developer bundles.
Record
Note date, hub/interface used, peer software versions, and pass/fail for page + file in the PR or issue that closes hosting follow-up work.
Automated stand-ins (CI)
When NomadNet / MeshChat are not installed in the environment:
nomad-coretests: Link request handler serves page + file by path hash; request budget rejects over-concurrency; listing skips dotfiles/*.allowed;encode_request_fields/decode_request_fieldsround-trip MessagePack form bodies- Sidecar:
nomad_page_request_payload(base64 JSON →encode_request_fields) plus content-source layout resolve + persistence ofnomad_serving_content_source - mesh-client Vitest: My Pages folder choose, start gated on content source, read-only page/file lists, and Open in browser wiring
Treat the peer table above as the release gate for cross-client hosting.