The .laplaspack format, in plain words
One markdown dialect, two layers, one SQLite file, one signature. Everything inside a soul, with no mystery left.
People keep asking what is actually inside a .laplaspack. Fair — we keep calling it a soul, and "soul" is not a file extension you can google. So here it is in plain words. No mystery is the point: this is the format your mind lives in, and you should be able to explain it at a whiteboard.
LMD — markdown that knows what it said
Everything starts as LMD, LAPLAS Markdown. It is ordinary markdown with three small additions. Wrap a name in [[double brackets]] and it becomes an entity. Write >>field: value and it becomes a structured fact on that entity. Give a note a causal role — derived-from, supports, closes, supersedes, contradicts — and it becomes an edge in a graph.
# switched the pack format to sqlite
[[laplaspack]] >>format: single sqlite file
[[laplaspack]] >>seal: ed25519
derived-from [[pack-format-debate]]
supersedes [[tarball-prototype]] — kept corrupting on partial copies
supports [[offline-verification]]
That is the whole trick. You write notes; the brackets and roles are enough for LAPLAS to assemble a knowledge graph underneath them. Entities connected by why, not just by keyword.
Two layers
The graph splits into two layers, because a mind holds two kinds of content. The facts layer is what's true: entities and their fields. The project uses SQLite; the deadline is March. The thinking layer is why it's true: the causal edges. This decision derived from that failure. This result closes that question. This note contradicts what we believed in January.
Most tools store the first layer. The second is the one that evaporates everywhere else — and it is the one a soul exists to carry.
One file
A .laplaspack is a single SQLite file. We chose boring on purpose: SQLite is one of the most durable, most widely readable formats ever shipped. Inside:
mind.laplaspack
├── entities every [[name]], with its >>fields
├── edges the causal graph — derived-from, supports, closes…
├── documents the full source text of every note, unabridged
├── commits the history — what changed, when, in what order
└── seal the signature block
Nothing is summarized away. A pack carries the graph and the original words it was derived from, plus the commit history of how the whole thing evolved. Density you can verify, not a vibe.
The seal
The last table is what makes a pack a soul. On sealing, LAPLAS computes a digest of everything above, and the author's Ed25519 key signs it. Verification is offline math — no server, no account, no phone-home:
$ laplas verify mind.laplaspack
digest ok
signature ok
sealed by ◈ 9f3a…c41e
If one byte of the thinking changes after sealing, the math fails. That is the entire trust model, and it fits in a sentence.
The promise
One commitment ships with the format itself: your memory never stops opening. Pack readers will always read old packs. Whatever 2.0 looks like, a file you seal today will open in it. We would rather carry compatibility shims forever than orphan a single mind.
The full formal spec is being frozen for 1.0 — this is the shape it will keep.
If you want to build a reader, a visualizer, a migration tool, or something we haven't thought of: please do. It's your format too. That's the point.