blog · June 2026 · 3 min read

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.