Skip to content

lane: Verso local sync — iroh bilateral P2P (Verse Tier 1) #274

@mark-ik

Description

@mark-ik

Goal

Track implementation of Verso's local collaboration layer: iroh-based bilateral sync between devices on the same identity. This is Verse Tier 1 — private, device-to-device, offline-first. Distinct from Verse Tier 2 (public community network, libp2p, long-horizon).

Scope

All features in the Local Collaboration section of the feature inventory:

  • Ed25519 keypair (shared between web viewer and sync layers)
  • OS keychain storage via keyring
  • Trust store (IdentityRegistry): TrustedPeer records
  • iroh QUIC transport (magic sockets, NAT traversal)
  • SyncWorker (tokio task, ControlPanel-supervised)
  • SyncUnit wire format (rkyv + zstd delta batches)
  • Version vector (per-peer monotonic sequence numbers)
  • Delta sync (send only changed intents since last contact)
  • Conflict resolution: Last-Write-Wins (metadata), additive (edges)
  • SyncLog (append-only local intent journal, AES-256-GCM at rest)
  • QR code pairing ceremony (qrcode crate)
  • Invite link pairing (verso://pair/{NodeId}/{token})
  • mDNS local network discovery (mdns-sd crate)
  • Workspace access grants (ReadOnly / ReadWrite)
  • Selective workspace sharing
  • Offline-first operation
  • Sync status indicator in workbench
  • Sync Panel (peer list + sync state pane)
  • Conflict resolution UI (toast + manual)
  • Noise protocol transport authentication

Pre-staged crates needed

keyring, aes-gcm, qrcode, base64, mdns-sd, rkyv, zstd — all already in Cargo.toml as pre-staged.

Source Docs

  • design_docs/graphshell_docs/technical_architecture/VERSO_AS_PEER.md
  • design_docs/graphshell_docs/implementation_strategy/2026-03-01_complete_feature_inventory.md (Local Collaboration section)
  • design_docs/graphshell_docs/technical_architecture/2026-03-01_dependency_inventory.md (pre-staged crates)

Dependencies

  • Verso ModManifest declaration (#383 in feature inventory — Planned)
  • Ed25519 keypair: shared with ed25519-dalek already active in codebase
  • iroh transport: already active in codebase

Child issues

  • Verse Tier 1: Ed25519 identity + OS keychain storage (keyring)
  • Verse Tier 1: SyncWorker scaffold (tokio task + ControlPanel supervision)
  • Verse Tier 1: SyncLog append-only WAL + AES-256-GCM at-rest encryption
  • Verse Tier 1: SyncUnit wire format (rkyv + zstd delta batches + version vector)
  • Verse Tier 1: QR code pairing ceremony + invite link scheme
  • Verse Tier 1: mDNS local peer discovery (mdns-sd)
  • Verse Tier 1: Sync Panel UI (peer list + sync state + conflict resolution toast)

Done Gate

  • All child issues closed with linked evidence.
  • Offline-first invariant validated: full app functionality with no peers connected.
  • Sync round-trip test: intent emitted on Device A appears correctly on Device B.
  • At-rest encryption validated on SyncLog.

Metadata

Metadata

Assignees

No one assigned

    Labels

    architectureImported from backlog ticket stubslane:verse-local-syncVerso iroh bilateral sync (Tier 1 local P2P): SyncWorker, SyncLog, pairing, mDNSstatus:queuedImported from backlog ticket stubstype:hubLane/epic tracker issueverseImported from backlog ticket stubs

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions