Skip to content

docs(spec): B2 wallet device registry — design + plan (for review)#47

Merged
frahlg merged 1 commit into
mainfrom
b2-device-registry-spec
Jun 14, 2026
Merged

docs(spec): B2 wallet device registry — design + plan (for review)#47
frahlg merged 1 commit into
mainfrom
b2-device-registry-spec

Conversation

@frahlg

@frahlg frahlg commented Jun 14, 2026

Copy link
Copy Markdown
Member

The next iteration: B2 — wallet device registry. Pays off the wallet identity (B1) and
kills the re-pair-every-machine friction. Spec + plan only, no code — for your review
before implementation (it touches mir-signal, so a deploy is your hand).

The idea

Add a device = have the wallet (passkey-sync or mir wallet import-phrase) + start serving →
it appears, by name, on all your devices, attachable with no pairing, no add-machine.

Locked decisions (from brainstorm)

  1. Encrypted, relay fully blind — records AEAD-encrypted under a wallet-derived key.
  2. Relay stays STATELESS — the registry is in-memory soft-state riding the live agent
    registration (rebuilt on reconnect), not a database. No disk, no persistence.
  3. Zero-touch + notify — a wallet-holding device self-publishes and works immediately;
    others print a one-line "new device joined" notice.

Why it stays true to the thesis

ChaCha20-Poly1305 with machine_id as AAD gives encryption AND authenticity for free: a
forged blob from a non-wallet-holder fails to open and is silently dropped, so the relay
verifies nothing, decrypts nothing, persists nothing — blind and stateless. Discovery
only: B1.4 acceptance and offline LAN-direct are untouched; pair/add-machine stay for
cross-wallet (Track D).

Trade-off (accepted)

Online-only discovery — a powered-off machine isn't listed until it reconnects (you can't
attach to it anyway). Revocation = power off / rotate the wallet (no persistent tombstone).

Slices

B2.0 crypto (Go+JS+vector) · B2.1 relay (blind/stateless) · B2.2 agent publishes + auto-serves
own wallet · B2.3 client discover/merge/notify · B2.4 browser auto-list · B2.5 e2e + deploy.

Review the spec/plan; say kör and I start with B2.0 (crypto, no infra) and work up — the
mir-signal deploy in B2.5 is your hand.

🤖 Generated with Claude Code

Stateless, encrypted, blind-relay device registry: your machines appear
everywhere by name with no add-machine and no SAS. Decisions: encrypted
(relay fully blind), relay stays STATELESS (in-memory soft-state riding the
live agent registration, rebuilt on reconnect), zero-touch enrollment +
notify. AEAD (ChaCha20-Poly1305, machine_id AAD) gives encryption AND
authenticity, so the relay verifies nothing. Discovery-only — B1.4
acceptance + LAN-direct unchanged; pair/add-machine kept for cross-wallet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@frahlg frahlg merged commit 10b1fb5 into main Jun 14, 2026
2 checks passed
@frahlg frahlg deleted the b2-device-registry-spec branch June 14, 2026 08:16
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