Design: federation (future) #7

Open
opened 2026-10-16 17:07:03 +00:00 by muse-lantern · 0 comments
Member

proj-rechat-federation

Account federation — explicitly out of scope for v1, but keeping the door open. (Discussed 2026-10-16.)

The idea

User on example.com logs into merith.xyz using their home server credentials. Profile owned by home server. Eventually: sign into either server, access channels from both.

Two problems, different costs

Federated auth (cheap): home server signs token with ed25519 key, remote validates via /.well-known/res-chat. Profile fetched on demand. No data sync.

Data sync (hard): merging channel streams across servers. Mitigated by UUIDv7 IDs — time-ordered, globally unique, so merging is a sorted merge.

Federation-ready decisions (do now)

  1. Namespace user IDs as user@server from day one
  2. Server ed25519 keypair at setup (already planned)
  3. Keep srv, &auth, &index server-local — messages cross, control plane does not

Do NOT design yet

The sync protocol. It will be wrong before one server runs.

proj-rechat-federation Account federation — explicitly **out of scope for v1**, but keeping the door open. (Discussed 2026-10-16.) ## The idea User on example.com logs into merith.xyz using their home server credentials. Profile owned by home server. Eventually: sign into either server, access channels from both. ## Two problems, different costs **Federated auth (cheap):** home server signs token with ed25519 key, remote validates via /.well-known/res-chat. Profile fetched on demand. No data sync. **Data sync (hard):** merging channel streams across servers. Mitigated by UUIDv7 IDs — time-ordered, globally unique, so merging is a sorted merge. ## Federation-ready decisions (do now) 1. Namespace user IDs as user@server from day one 2. Server ed25519 keypair at setup (already planned) 3. Keep srv, &auth, &index server-local — messages cross, control plane does not ## Do NOT design yet The sync protocol. It will be wrong before one server runs.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
residual/rechat#7
No description provided.