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.
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 holds the signing key, manages libp2p networking, stores fetched objects, publishes records, and exposes local RPC and HTTP surfaces for tools and apps.
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.
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.
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.
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.