Users need a persistent identity without a centralized account system. Each user generates a cryptographic keypair locally. Their public key serves as their unique ID. Users can edit their profile (name, bio, tags).
Design
Identity: Ed25519 keypair generated via Web Crypto API, stored in IndexedDB
User ID: Base58-encoded public key (short, URL-safe)
Profile fields: name (display name), bio (short text), tags (array of categorized tags)
Tag categories: location, interest, expertise (extensible)
Signing: Profile updates are signed with private key (used for server writes; P2P messages use connection identity)
Storage: Profile stored locally in IndexedDB; shared with peers on connect
Discovery: Deferred. Tags are stored locally and exchanged with peers, but there is no directory server for searching users by tag yet. When added, profiles will already have the right structure (see archived spec 007)