Skip to the content.

Roadmap

Phase 0 — Professional Bootstrap ✅

Phase 1 — Memory Spike (next)

Phase 2 — MCP Server

Phase 3 — Skills Port

Phase 4 — Daemon

v0.1.0 — First Public Release ✅


The Road to 1.0 — Round Table Edition

This section is committed, not directional. It is the path from v0.1.0 to v1.0.0, locked in 2026-04-08 after a round table of eight thinkers (Karpathy, LeCun, Sutskever, Hinton, Fuller, Peter Joseph, Alan Watts, Uncle Bob) reviewed the original “Long Road” plan and converged on five themes:

  1. Prediction-bound drawers — every drawer can carry claim, predicted_outcome, observed_outcome, delta, supersedes_id. The AutoResearch Loop’s substrate. Karpathy, LeCun, Hinton, Sutskever, Fuller, and Uncle Bob all flagged this independently.
  2. Consolidation + forgetting — verbatim is the floor, not the ceiling. Sleep-cycle pass that promotes derived drawers and demotes unused ones. Hinton, Watts, LeCun.
  3. Surprise as the load-bearing field — store what the system did not expect, not just what happened. Reconstruction-error / delta is the gradient when there are no weights. LeCun, Fuller, Hinton, Karpathy.
  4. Portable signed format = anti-capture — format is the product, not the implementation. Content-addressed, signed, gossip-importable. Peter Joseph, Fuller.
  5. Cut Team Memory — replicable beats shared. Team capability falls out of the portable format for free. Karpathy, Fuller.

v0.2 — Prediction-Bound Drawers + Eval-on-Every-PR

v0.3 — Consolidation, Forgetting, Contradiction

v0.4 — Surprise & Belief-as-Distribution

v0.5 — Portable Signed Format (Anti-Capture Lock)

v0.6 — Reason Loop Through Clean Ports

v1.0.0 — Library Extraction

Cut from the original v0.2-v1.0 plan:


The Road to 2.0 — Memory That Thinks Back

This section is committed, not directional. It is the path from v1.0.0 (shipped 2026-04-14) to v2.0.0, written 2026-04-14 in full awareness of what the v0.2 → v1.0 arc actually taught us.

The v2 North Star

A cairn is useful to a traveler. A cairntir is useful to a civilization.

v1.0 killed cross-chat amnesia for one developer’s sessions. v2 kills cross-chat amnesia for every agent, every project, every collaborator the memory touches. The fundamental shift: at v1.0 Cairntir is a passive store that humans query through Claude. At v2 Cairntir is an active participant — it runs recipes, it drives the Reason loop against real LLMs, it syncs across machines over files, and it grows structural memory whether or not any particular human is looking.

Five themes, shipped as six versioned phases.

  1. Real production reasoning. The v0.6 Reason loop has clean Protocol ports but no concrete adapters. v2 ships reference adapters against Claude so the loop actually runs, the calibration numbers actually compound, and the Signal Reader recipe can be invoked autonomously instead of hand-walked through each step.
  2. Cross-wing and temporal. The deferred MemPalace v3 feature finally lands — but falls out of existing supersedes_id chains, not a new triple store. Answers “what did we decide about X across every project?” and “what did I believe about X as-of date Y?”
  3. File-based team sync, no server ever. The portable signed format (v0.5) made this inevitable; v2 wires the watcher. One folder shared via git / iCloud / Dropbox / Syncthing becomes a team memory substrate. Content hashes deduplicate; signatures authenticate.
  4. Recipe runtime. Recipes become executable. A “signal-read this URL” command that actually invokes the protocol, writes the drawers, runs Crucible, commits predictions — all without a human driving each step.
  5. Agent Memory. Per-agent wings. Crucible remembers which assumptions it has stress-tested before. Quality remembers which patterns lead to ship-it verdicts. Reason remembers the rabbit holes it’s fallen down. The three skills get their own memory of their own work.

v1.1 — Reach (the post-launch phase)

v1.2 — Production Reason Loop — delivered ahead of schedule in v1.1 (2026-04-18), stdlib-only

Shipped in cairntir.production: ManualProposer, StoreBackedMemory, StoreBackedBeliefs, NullRunner. CLI cairntir reason "<q>" --wing X runs a real predict→observe→update cycle with the caller-supplied hypothesis. Zero network calls — Cairntir is not a second inference provider; the claim and predicted outcome come from wherever the caller chooses (human at a terminal, Claude Code session driving the CLI, a recipe’s declared inputs).

Future additions (separate phases, not v1.1):

v1.3 — Cross-Wing Queries + Temporal View — v1.3-partial delivered in v1.1 (2026-04-18)

Shipped: cairntir_cross_recall MCP tool + cairntir cross-recall CLI; cairntir.memory.temporal.walk_supersedes / as_of as pure query functions over the existing supersedes_id column. Still outstanding for a follow-up phase:

v1.4 — File-Based Team Sync

v1.5 — Recipe Runtime — delivered ahead of schedule in v1.1 (2026-04-18)

Shipped: cairntir.recipes package with RecipeContract, load_recipe, discover_recipes, RecipeRunner. cairntir recipe-list and cairntir recipe-run CLI. docs/recipes/signal-reader/recipe.toml bundled as the first shipped recipe. Recipe contracts declare input schema + output wing + ordered skill chain; malformed recipes fail loudly via RecipeError. Project recipes shadow user recipes when names collide.

v1.6 — Agent Memory

v2.0.0 — Distribution Split + Breaking Changes

Cut from v2:


Recipes — post-v1.0 protocols on the stable surface

A recipe is a repeatable protocol that chains existing primitives (the three skills + the memory layer) into a named discipline. Recipes land under docs/recipes/ and live or die by use, not by governance.

The three-skill core (crucible / quality / reason) is locked by design. Recipes are the escape valve: anything that would have been a fourth skill becomes a recipe instead. This keeps the protocol surface narrow and the pattern surface unbounded.

Signal Reader (shipped 2026-04-14)

Five-step structural-analysis protocol: split the headline story from the structural story, name the constraint that moved, project gains and losses, stress-test through Crucible, commit as a prediction-bound drawer in a signals wing. Every read carries a falsifiable claim; the belief-as-distribution scorer tracks calibration across months. docs/recipes/signal-reader/

Candidate recipes (not committed — surface when demand appears)


Beyond v1.0.0 — The Long Road

The following are directional, not committed. They exist to clarify that Cairntir is not a finished artifact — it is the first layer of something much larger.

v0.2 — Temporal Knowledge Graph

Borrowed from MemPalace’s v3 feature. Entity-relationship-time triples with validity windows. Answers questions like “who decided X as-of date Y?” Only builds if real users ask temporal-attribution questions.

v0.3 — Multi-Project Synthesis

“What patterns have we seen across all our projects this quarter?” Cross-wing queries, trend detection, decision archaeology. The point at which Cairntir stops being per-project memory and starts being career memory.

v0.4 — Team Memory (optional)

Shared wings across multiple developers. CRDT or simple lock-based sync. Only if demand exists. Will never be a cloud service. Self-hosted only.

v0.5 — Agent Memory

Per-agent wings. Crucible remembers the assumptions it has stress-tested before. Quality remembers the patterns that have led to ship-it verdicts. Reason remembers the rabbit holes.

v1.0 — Cairntir the Library

Extract the memory layer as an importable library that other tools can depend on. At v1.0, Cairntir stops being “a tool” and becomes “the thing other tools store their memory in.” This is when the network effect starts.


The Horizon — AI + Grand-Scale 3D Printing + Post-Scarcity

This section is mythos, not a commitment. It exists because every contributor deserves to know what Cairntir is ultimately pointed at.

The Observation

AI can model anything. Tomorrow, AI will print anything — not just at desktop scale, but at grand structural scale. Construction-scale 3D printing already exists (WinSun, ICON, Apis Cor). The bottleneck is no longer atoms or machines. The bottleneck is knowledge that compounds across iterations.

Every time a printer runs, it produces data: which temperature worked, which infill density failed, which nozzle wore out after how many meters, which grain orientation was load-bearing, which material substitution was within tolerance and which was not. Today, almost all of that data is lost. The next print starts from the same ignorance as the last print.

The Bridge Cairntir Builds

Cairntir is a memory layer that does not care what kind of thing is being remembered. Today it remembers code decisions. Tomorrow, with a different client, it can remember:

The MCP surface is already generic. A Blender MCP plugin that pushes print-outcome drawers into Cairntir is the same code shape as the Claude Code plugin that pushes decision drawers in. The memory layer does not need to know.

What This Enables, Eventually

A machine that prints its own thingamajigs needs to remember which thingamajig worked. When it remembers, the iteration cost drops. When the iteration cost drops toward zero, scarcity drops toward zero. When scarcity drops toward zero, the economics of giving things away change completely.

This is not a promise. It is a direction. Cairntir does not need to reach this horizon to be useful today. But the reason it is built the way it is — opinionated, local-first, MIT, verbatim, generic MCP surface — is because the form matches the destination. A centralized cloud SaaS cannot be the memory layer of a distributed post-scarcity maker civilization. A local-first file-backed open-source library can.

The Wager

“I’m going to take my chances with the best outcome for earthlings, the environment, and tech, all in one go. And if it doesn’t, then I’ll still die knowing that I tried.” — Patrick McGuire, 2026-04-08

Cairntir is that bet made small. The bet is: a memory layer that actually works will matter more than we can currently imagine, and building it in the open is the right move even if no one notices for five years.

If the bet is wrong, Cairntir is still a useful tool that killed a real annoyance for solo developers. That is already enough to justify its existence.

If the bet is right, Cairntir is an early load-bearing beam in a much larger structure.

Either way, we build.