One writer on loopback. Cards are files. Atoms are LMDB. milli is a projection. Every agent is an HTTP client.

Contract#

  • URL: PACKSET_URL (INSIDE_MEMORY_URL alias); unset, http://127.0.0.1:8761; off means no pack

  • Host: 127.0.0.1 only. Never localhost.

  • Port: 8761 (PACKSET_PORT)

  • Health: packsetd ok

Split#

Crate

Role

packsetd

writer (Rust, crate packset-daemon)

packset-core

named fuse/diversify/decay panel

packset-client

HTTP

packset-embed

optional dense encoder

Host panel env: PACKSET_FUSE PACKSET_DIVERSIFY PACKSET_DECAY. Default combmnz / mmr / fsrs. Unknown names fail closed. Cross-encoder second stage: PACKSET_RERANK or /v1/search?rerank=1, off by default.

Clients do not open the LMDB.

Entities, and the one that is a citation#

An entity is a free-form name and nothing checks it. The exception is an entity opening deed- or sha256:, which names a product in a deed store, and there the shape is checked where the atom is written rather than found later by a reader. A bare prefix and a separator that would split the entity into two are both refused; whether the deed exists is a question the pack cannot ask and does not try to.

The rule lives in packset_core::atom (check_entity and is_accession). The daemon inherits that copy. There is no Python writer.

$ packset accessions git:github.com/leidarljos/packset
deed-patch-overlay
sha256:aabbccdd

That is the pack’s half of the two checks a citation is worth: pipe it into deedar evidence - for whether the bytes are intact, or deedar current - for whether the thing cited is still the tip.