Skip to content

spec: fleet trust — auto-pair anchored on a key the relay never holds - #37

Merged
karngyan merged 2 commits into
mainfrom
spec/fleet-trust
Aug 9, 2026
Merged

spec: fleet trust — auto-pair anchored on a key the relay never holds#37
karngyan merged 2 commits into
mainfrom
spec/fleet-trust

Conversation

@karngyan

@karngyan karngyan commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Specs the design settled in discussion: one pairing ceremony ever, machines federate, and the trust anchor never touches Cloudflare.

  • Fleet key (Ed25519) minted at setup, rides the existing join line, lands in relay.json. The Worker never holds it — the secret keeps gating routing, the fleet key gates trust.
  • Certs: machine certs (id + name + daemon static key), device certs (minted at pairing, carried in Noise IK message A's payload — no handshake pattern change), explicit revocations that permanently outrank certs.
  • Fleet directory: one DO per relay hosting signed public artifacts; every reader verifies, the relay can withhold but never mint. New machine = one join line, visible everywhere; new device = one ceremony anywhere, admitted everywhere; revoke anywhere = revoked everywhere.
  • Self-certifying machine ids: slug-<8 hex HMAC tag> under the daemon secret, verified statelessly in the router — grammar-valid-but-fake ids get the same 404 malformed ids get today, and no DO wakes.
  • Rate rule: one CF rate-limiting binding over the credential-less routes, since run_worker_first bills every request regardless.

Breaking by design (pre-adoption, operator redeploys): MAC-less ids refused, certs required for auto-admission, --fleet on join. Cert encodings and the id MAC get cross-language test vectors like the Noise and framing fixtures before them.

Implementation lands in stages after this merges: (1) MAC ids + rate rule, (2) fleet key + certs daemon-side, (3) directory + browser side.

🤖 Generated with Claude Code

karngyan and others added 2 commits August 10, 2026 02:44
Pair a device once and the fleet is the unit of trust: a fleet Ed25519
key rides the join line, machines self-certify, pairing mints portable
device certs carried in Noise IK's message A payload, and the relay
hosts a directory it cannot forge. Machine ids become self-certifying
(HMAC tag under the daemon secret) so grammar-valid-but-fake ids stop
waking Durable Objects, and a rate rule bounds what remains.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…chines would collide

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@karngyan
karngyan merged commit 66bf6b6 into main Aug 9, 2026
1 check passed
@karngyan
karngyan deleted the spec/fleet-trust branch August 9, 2026 21:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant