# Knowledge Formats — which one, when lean-ctx can move a project's knowledge in and out through several formats. That is deliberate: they serve genuinely different jobs, and no single format is best for storage *and* distribution *and* hand-editing. This guide is the map, so you never have to guess — and so the choice never fragments into "which export did I use again?". > **One model, many renderings.** Every outbound format is rendered from the same > in-memory `KnowledgeSnapshot` (facts + patterns + insights + relations). They > can differ in *packaging*, never in *what the project knows*. ## TL;DR decision table | I want to… | Use | Command | Signed | Portable / hand-edit | Where it goes | |---|---|---|:---:|:---:|---| | Keep the durable, lossless store | **native JSON** | `knowledge export --format json` | – | – | `knowledge.json` (the store) | | Back up / move between machines, full fidelity | **native JSON** | `knowledge export --format json --output kb.json` | – | – | one file | | Hand-edit in git, share vendor-neutrally, no lock-in | **OKF** (Markdown bundle) | `knowledge export --format okf --output ./kb-okf` | – | ✅ | a directory of `.md` | | Interop with a simple, community fact list | **SimpleFact JSON / JSONL** | `knowledge export --format simple` / `jsonl` | – | ✅ (flat) | one file | | Distribute / sell a curated pack, verifiable | **ctxpkg** | `pack create …` → `pack publish` | ✅ | – | `.ctxpkg` → ctxpkg.com | | Give an agent standing instructions | **editor rules** | `init --agent ` | – | ✅ | `AGENTS.md` / `CLAUDE.md` | Everything above is **local and free** except publishing a ctxpkg to the hosted registry. Nothing here is deprecated — pick by the job, not by recency. ## The formats in one line each ### native JSON — the source of truth `knowledge.json` is the durable store: every field, full history (superseded facts included), byte-for-byte lossless. Export it with `--format json` for a backup or a machine-to-machine move where fidelity matters more than readability. This is the only format that round-trips *everything*. ```bash lean-ctx knowledge export --format json --output kb-backup.json lean-ctx knowledge import kb-backup.json --merge skip-existing ``` ### OKF — the portable, human-editable format The [Open Knowledge Format](okf-interop.md) is a *directory of Markdown files*, one concept per file, each with a tiny YAML frontmatter and a Markdown body; relations are ordinary Markdown links. It is vendor-neutral, git-diffable, and editable by hand or by any other tool that speaks OKF. Use it when the knowledge should live in a repo, be reviewed in a PR, or leave lean-ctx without lock-in. ```bash lean-ctx knowledge export --format okf --output ./kb-okf lean-ctx knowledge import ./kb-okf --merge append ``` OKF exports are **deterministic** (byte-identical for the same snapshot), so they diff cleanly and never churn your git history. ### SimpleFact JSON / JSONL — the lowest common denominator A flat `[{category, key, value, confidence?, source?, timestamp?}]` list (or one JSON object per line for JSONL). No relations, no archetypes — just facts. Use it to import a community fact list or to feed facts into a tool that only understands a flat array. ```bash lean-ctx knowledge export --format jsonl --output facts.jsonl lean-ctx knowledge export --format simple --output facts.json ``` ### ctxpkg — the signed, versioned distribution unit A `.ctxpkg` is a signed, versioned bundle (manifest + content layers) built for *distribution*: share a curated knowledge/graph pack with a teammate, pin it in `.lean-ctx/ctxpkg.lock`, or publish it to [ctxpkg.com](https://ctxpkg.com) where consumers verify its signature before installing. This is lean-ctx's distribution and monetization rail — the answer to "ship this knowledge to others, provably". ```bash lean-ctx pack create @me/auth-kit --version 1.0.0 # → .ctxpkg lean-ctx pack verify @me/auth-kit-1.0.0.ctxpkg # check integrity/signature lean-ctx pack publish @me/auth-kit-1.0.0.ctxpkg # → ctxpkg.com (token required) ``` ### editor rules — standing instructions, not a knowledge store `AGENTS.md` / `CLAUDE.md` blocks are how agents get their *behavioural* rules (tool preferences, conventions), generated by `lean-ctx init`. They are not a knowledge export — they tell the agent *how to act*, not *what the project knows*. Listed here only so it's clear where the boundary is. ## OKF vs ctxpkg — the two you'll actually weigh They look similar ("a bundle of knowledge") but sit on opposite ends of one axis: | | **OKF** | **ctxpkg** | |---|---|---| | Shape | directory of Markdown | single signed archive | | Audience | humans, git, any OKF tool | consumers who install/verify | | Editable by hand | yes | no (signed) | | Integrity / provenance | git history | Ed25519 signature + manifest | | Distribution | copy the folder | registry (ctxpkg.com) | | Best for | openness, review, no lock-in | shipping / selling a pack | Rule of thumb: **OKF to open it up, ctxpkg to lock it down and ship it.** Both render from the same snapshot, so exporting one never invalidates the other. ## Related - [OKF interop walkthrough](okf-interop.md) - [Journey 3 — Memory & Knowledge](../reference/03-memory-and-knowledge.md) - [Publishing packages](publishing-packages.md)