chum

Content-addressed object storage on AT Protocol.

The address is the content. Names resolve through a signed, append-only chain you can verify across time.

serving now · api.chum.blue

bafkreidr3vh5xjlqayw4hmnoi5jmgh3j55resat4m7kbhtzeiz7ykh3wmq

What conventional object stores ask you to trust

Two layers, one substrate

A bucket + key resolves to a CID; the bytes underneath stay content-addressed.

the pointer layer is signed and mutable; the object layer is immutable and deduped.

Verifiable across time

Each pointer record links the previous record's CID and is signed. The chain is append-only, so anyone can walk it offline and prove what a name resolved to, and when — that no record was altered and no link removed.

Who signed it — stated, not assumed. Every record now carries its trust tier, and the verifier reads it out. Tier 1: the writer signs with a self-custody key (did:key, did:web, self-hosted PDS) the operator never touches — shipped, zero ceremony. Tier 3: operator-signed, tamper-evident to everyone except the operator — what the public demo instance writes today. The tier is a machine-readable property of the chain; forging one upward is rejected. What's still open is the other half — an external party witnessing the head, so the operator can't omit or equivocate. Specified (anchor + writer's-PDS counter-ledger), not yet shipped. We'd rather you read this here than find it in the code.

Every read verifies the signature, the prev-CID link, and byte integrity — or it aborts.

Verify a record yourself →

See the pointer record lexicon →

Prove what a name resolved to — and when

A name's history is a list of dated, signed entries. Each one states the CID the name resolved to at that time, in append-only order. Today the operator signs that order; an independent external head-witness (in progress) is what will make omission and reordering detectable without trusting the operator.

One name's resolved-CID history, in append-only order.

See the full architecture →

It's live

chumd is deployed and serving — content-addressed reads and writes behind a TLS edge. The metrics endpoint stays private; only the API is public.

$ curl https://api.chum.blue/health
ok

this instance signs its pointer records as
did:key:zDnaeoYeKmUPkJLf3TUnDyvBgR11mto8xGjAL5nm4g9VyaMvp

For builders

chum put ./photo.jpg            # → bafy… (the CID is the receipt)
chum get bafy… > out.jpg        # content-addressed read
chum verify bafy… ./photo.jpg   # bytes match the address, or they don't

What's shipped

Built in public, decision by decision. Each milestone links its design journal where one exists.

  1. SP-0 2026-06-06 Auth + substrate ADRs ratified
  2. SP-1 2026-06-07 AT Protocol pointer store — signed name→CID chain
  3. SP-5 2026-06-09 Durable content-addressed substrate — filesystem + S3 CAS
  4. SP-6 2026-06-10 Deletion done right — signed tombstones + journal-gated reaper
  5. SP-7 2026-06-17 Multipart assembly — Merkle-root manifests
  6. SP-13 2026-06-24 Hardening — robustness, observability, per-IP rate limiting, security review
  7. SP-4b 2026-07-04 Capability enforcement — attenuable, revocable DID-scoped grants (ADR-0007)
  8. SP-4e 2026-07-15 Writer-signed records + machine-readable trust tiers (ADR-0008)
  9. SP-13e 2026-07-16 Visibility-gated blob reads — the byte endpoint is not an existence oracle
  10. SP-17 2026-07-27 Adversarial conformance suite — forgeries replayed against the live target

Where it stands

Built

  • Content-addressed substrate (filesystem + S3 CAS)
  • Signed name→CID pointer chain
  • Multipart upload with Merkle-root manifests (ADR-0003)
  • DID-scoped capability grants — attenuable + revocable (ADR-0007)
  • Writer-signed records + trust tiers (ADR-0008)
  • Adversarial conformance suite — forgeries replayed against the live target
  • chum put / get / verify CLI
  • Browser verifier — verify a chain client-side, trusting no server

Open, in progress

  • External head-witness — anchor + writer's-PDS counter-ledger
  • Tier 2 — the managed-PDS key-registration ceremony
  • Prefix listing at scale

Open decisions

Get involved

Chum is built in the open. The most useful contribution right now is discussion on the open decisions above.

Get early access