ECHO · GENESIS

The number that's yours, forever.

Counter service v0.1 · hands out permanent, sequential Genesis numbers

Local-first generates your handle and your opaque uid. But a global, sequential rank — "Genesis #1284" — can't exist when every device only knows itself. This tiny service isthat one shared truth. It's the thing we refused to fake; now it's a few dozen lines of running code.

The number is shared truth. Everything about you stays yours. Those are two different problems, kept separate on purpose.
Governed by the Core Laws. Genesis is where Law 1 (you own your identity) meets the single unavoidable shared fact — and proves a server can hold that fact while learning nothing about you.Read the Laws →
CLAIM A NUMBER · LIVE

Take your place in line — for real.

Your device makes an opaque id, mines a small proof-of-work in the browser, and claims the next number from a counter backed by a real database. Claim again with the same id and you get the same number back, permanently.

THE SHARED COUNTER · LIVE ON NEON

Generates a throwaway opaque id, mines a real proof-of-work in your browser, then claims a permanent number from the Neon-backed counter. Demo ids only — no real vault is touched.

WHY IT HOLDS

The smallest piece of Echo that honestly needs a server.

Sequential

Numbers are handed out in order and never reissued. A global rank requires a shared source of truth — the one thing pure local-first can't provide alone.

Permanent · idempotent

A uid claims exactly once. Come back a year later and you get the same number. That's what makes “I was Genesis #1284” durable instead of a nice story.

Minimal knowledge

It keys on an opaque uid the device already generated. It never receives memory, content, or even your echoId handle. A breach yields (uid → number) and nothing else.

Friction, not surveillance

An open counter is Sybil-spammable. The honest fix is a small proof-of-work on every claim — cost on the claimer, never reading anything about them to decide.

The honest sharp edge: a counter you can claim from is one you can spam. Proof-of-work raises the cost of inflation without ever inspecting the user — and if it ever needs to be stronger, the fix is more friction on claiming, never reading anything about you. Stated here so it's a known trade-off, not a surprise.

IN THE ECHO ID FLOW

From placeholder to permanent.

A new vault identity starts with genesisNo: null — the card shows a blank#————————. To claim, the device sends its opaque uid:

POST /api/genesis/claim { uid: <vault's opaque uid>, powNonce }
   → { genesisNo, claimedAt, total }

Write genesisNo into the identity and the placeholder becomes #00001284, permanently. Nothing else about the vault changes — and the counter never learned which handle, or whose memory, sits behind that uid.