Uh oh!
There was an error while loading. Please reload this page.
Add headless deploy guide - #986
Conversation
philcunliffe
commented
Aug 21, 2026
neutral review: changes requestedDocs-only change (README link + new What verified clean (no action needed): Finding 1 (medium): "nothing on the server needs cleanup" contradicts what a re-mint actually does
Re-minting is not a swap of one credential in place. Per LLP 0298 D2 (
So the consequence of the advice as written is exactly the thing this guide sold three paragraphs earlier at Recommend: say that minting a replacement creates a new gateway row, so runs before and after the swap group under different gateways, and name whatever the server-side disposition of the old row is (or say it is left in place). Finding 2 (medium): the join troubleshooting bullet describes failures |
philcunliffe
left a comment
There was a problem hiding this comment.
Blocking findings (full evidence in the neutral review comment on this PR).
medium -
docs/HEADLESS.md:39-40: "nothing on the server needs cleanup" on an expiry swap. Re-minting creates a second gateway row (LLP 0298 D2;src/core/cli/remote_commands.js:1143-1146), so runs before and after the swap land under different gateways, contradicting the grouping promised atdocs/HEADLESS.md:19-21, and the old row stays server-side.medium -
docs/HEADLESS.md:116-118: the join troubleshooting bullet blames a/v1/mcpURL or an expired token for a hang / nonzero exit.runJoinnever contacts the server (src/core/commands/central.js:46-180): it syntax-checks the URL, writes the seed, and returns 0 at:166-169. Both named causes succeed at join and fail later at daemon bootstrap. The actual CI hang is join blocking inreadAllStdin(central.js:80-85) when nothing was piped.medium -
docs/HEADLESS.md:100-105: "it survives reboots" is unqualified in the long-lived-headless-machine section. Linux installs a systemd user unit (src/core/daemon/platform.js:53-59,linux.js:141,214,241), which does not start at boot on a headless host withoutloginctl enable-linger; nothing in this repo sets or mentions linger. macOS's LaunchAgent needs a logged-in session.low -
docs/HEADLESS.md:112-113:hyp statusnever prints a server URL or gateway id (src/core/commands/status.js:591onward, and no such field in the JSON report).docs/TEAM_SETUP.md:66-68already has accurate phrasing.
Everything else verified clean against the tree at 70ea5c7: mint flags and default expiry, stdout-only token, stdin join, hyp daemon run --foreground, hyp sync --yes, the no-first-sync-hold claim, the 404 line, Node 22.12, the #hyp-remote-mint anchor, and no em dashes. This is a text-accuracy pass, not a rewrite.
platypii
commented
Aug 24, 2026
Thanks, all four fixed in ae2f05c. Docs-only,
Left the backgrounded |
philcunliffe
commented
Aug 24, 2026
neutral review: approvedRe-review at The four prior findings, re-verified1. Re-mint cleanup (was medium) - fixed. 2. Join troubleshooting (was medium) - fixed. Split into two accurate bullets at 3. Reboot durability (was medium) - fixed. 4. Re-verified clean on this commitEvery command, flag, path, and anchor the guide tells a reader to type:
Nit (not actionable, no change requested)
The backgrounded VerdictApproved. Docs-only, factually accurate, internally consistent with the existing guides, links resolve, prose rules honored. |
philcunliffe
commented
Aug 24, 2026
neutral verdict: approvedAll four blocking findings from the Re-verified the rest of the guide on this commit: mint flags and the 365-day default, stdout-only token, One non-actionable nit recorded in the full review ( Full evidence in the review-record comment on this PR. |
Uh oh!
There was an error while loading. Please reload this page.
Adds docs/HEADLESS.md: how to run HypAware on CI runners and headless servers with a pre-minted enrollment token (hyp remote mint, #969). Covers the one-time mint, the per-run join / foreground daemon / sync flush recipe, a GitHub Actions example, long-lived servers, and troubleshooting. Links it from the README docs list.