System

One local daemon.
One shared network.

Lattice is small enough to reason about end to end: the daemon, the DHT, the browser extension, and signed records layered on top.

The daemon is the core

The daemon holds the signing key, manages libp2p networking, stores fetched objects, publishes records, and exposes local RPC and HTTP surfaces for tools and apps.

Name records

A name like mysite.loom resolves to a signed manifest record owned by an Ed25519 key. The ownership layer rejects conflicting updates from other publishers.

  • Name claims are first-come, first-served.
  • Updates are signature checked against the stored owner.
  • Heartbeats or republishes keep names fresh on the network.

Content-addressed blocks

Site files are hashed and chunked into blocks. The manifest points to those hashes. Peers can cache and serve blocks without needing to trust the source beyond the signed manifest.

Extension flow

The Firefox extension is just the local bridge. It intercepts .loom requests, forwards them to the daemon, and lets the daemon resolve, fetch, and serve content locally.

App namespaces

Fray and future applications publish records under app-specific namespaces on top of the same ownership and signing primitives. That keeps the base protocol small and reusable.