Knowledge representation as a category lattice, on content-addressed storage.
I build a small stack of tools for representing knowledge as a category lattice and keeping it on content-addressed storage — no server to trust, no database to run.
The thread running through all of it: the internal structure of a sparse neural code is a good way to represent semantic structure, and Formal Concept Analysis makes that correspondence exact. That turns the interesting questions into engineering ones — how do you learn a good lattice from data, how do you persist one without a server, and what is it actually like to use one as everyday infrastructure?
recordstore and swarmfs are siblings, not a stack: each talks to a Bee node directly. recordstore's own /bytes client is its byte path, and it borrows swarmfs only optionally, to compute Swarm-native content addresses and to validate postage batches.
odag get Flight 'time(2026-06-01..2026-08-31)' answers from exact rational arithmetic over SI anchors, with no edge ever stored between the dates. An answer can travel on its own: an is_below certificate is checkable by anyone holding only the root — no store, no network, no trust in the prover. Agents get the same read-only surface over MCP.
--as-of browses any past version of a store, because a version is a root. (v0 read-only browsing complete and FUSE-mountable; v0.1 — filing through the mount — in progress)
==, and a store remembers the roots it has passed through, which makes undo() a matter of pointing back rather than replaying a diff. Concurrent writers need no lock server: a pointer that moved under a commit three-way merges and retries.
bzz:// URLs for pandas, dask, zarr, xarray, pyarrow and DuckDB. Writes are transactional copy-on-write, so every commit is a snapshot; feeds give mutable bzzf:// mounts; and in local-first mode offline is the normal case — commits land on disk instantly and sync in the background, with fs.sync() as the certainty barrier.
"No server to trust" has a matching option for "no host to trust". swarmfs encrypts node-side on request and swarmlite publishes that way, where the 128-hex reference carries the decryption key — the URL is the secret. ontodag encrypts rs: stores at rest under a key of your own, records and trie structure alike, and deterministically, so two devices holding the same key still converge on the same root.
Earlier research on sparse coding, neural population decoding, and information theory in neuroscience — including the formal concept analysis work these projects grew out of: publications, 1987–2018.