Every layer of what your team knows —
one effective view.
Your notes, your team's runbooks, and company policy rarely line up, and your agent only ever reads one of them. ContextCake stitches all three into one graph: the closest layer wins each section, the rest carries through untouched, and wherever they disagree the agent sees both — with dates.
git clone https://github.com/siracusa5/context-cake.gitTeam knowledge doesn't agree with itself.
- Scattered
- It lives in repo READMEs, a wiki nobody has opened in months, and three people's heads. Ask two of those sources what's current and you'll get two answers.
- Agents read stale
- Point an agent at one document and it answers from that document alone. It has no idea a newer decision, one layer up, already overruled it.
- Overwriting loses the dissent
- The usual fix is to flatten everything into a single doc. That quietly erases the objection you'll go looking for the next time something breaks.
Stack the layers. Resolve at read time. Serve one view.
Stack
Each scope is its own repo: your drafts, the team's runbooks, company policy. If you can read the repo, you can read the layer. There is no second permission system to keep in sync.
Resolve
Read a concept and the resolver assembles it a section at a time. The closest layer wins each section; whatever it doesn't mention falls through to the layer below.
Serve
Agents pull the finished concept over MCP, every section tagged with the layer it came from and the day it was written.
A resolver, not another wiki.
Section-level merge
Layers merge a section at a time, not a file at a time. An override touches only the section it speaks to; everything else falls through from below.
Conflicts carry dates
When two layers disagree, the losing value doesn't disappear. It travels with its layer and its date, so nobody reopens a call that was already made.
Provenance on every section
Every section knows the layer it came from, and every field its origin. An agent can tell company policy from your Tuesday-night override before it acts on either.
Foreign graphs stitch in
A layer doesn't have to be markdown. Point one at a foreign MCP graph and ContextCake translates it to OKF as it reads, then merges it with everything else.
Captured from real work
It watches the work you're already doing, sorts the signal from the noise, and drafts concepts back. Safe ones land in the layer; anything sensitive waits for a human.
Zero dependencies
Plain Node 18 and nothing else. No npm install, no lockfile, no postinstall scripts — a supply chain you can read start to finish in an afternoon.
Playground
The same engine with a face on it: wire up sources, watch them merge in real time, and settle an N-way conflict by hand.
Speaks MCP. Answers with provenance.
Any agent that speaks MCP can query the resolved graph. Every read_file answer comes back with who said what, when, and where the layers disagree.
| Tool | What it does |
|---|---|
search | Full-text search across all layers; one entry per concept with its contributing layers. |
read_file | The resolved effective concept — section merge, provenance, per-section conflicts. Pass a layer for a raw single-layer read. |
list_concepts | All effective concept IDs with their contributing layers. |
get_links | Outgoing and incoming links, resolved against the effective graph. |
{
"id": "decisions/primary-db",
"contributors": [
{
"layer": "personal",
"level": 3,
"updated": "2026-06-28"
},
{
"layer": "team",
"level": 2,
"updated": "2026-06-20"
},
{
"layer": "company",
"level": 0,
"updated": "2026-05-01"
}
],
"frontmatter": {
"type": "decision",
"title": "Primary database",
"updated": "2026-06-28",
"owner": "me",
"tags": [
"database",
"local-dev"
]
},
"frontmatterProvenance": {
"type": "personal",
"title": "personal",
"updated": "personal",
"owner": "personal",
"tags": "personal"
},
"sections": [
{
"key": "choice",
"heading": "## Choice {#choice}",
"content": "Postgres in every shared environment. Locally I run SQLite for the test suite so I c …",
"sourceLayer": "personal",
"sourceUpdated": "2026-06-28",
"conflicts": [
{
"layer": "company",
"updated": "2026-05-01",
"content": "Postgres (org standard). All services provision managed RDS through the platform cat …"
}
]
},
{
"key": "notes",
"heading": "## My notes {#notes}",
"content": "The ClickHouse ETL job is flaky on my branch — see the deploy runbook rollback step …",
"sourceLayer": "personal",
"sourceUpdated": "2026-06-28"
}
]
}Quickstart
Plain Node.js ≥ 18. No dependencies.
git clone https://github.com/siracusa5/context-cake.git && cd context-cake
node classify-context.mjs --demo
node ingest.mjs --demo
node write.mjs --signals control-surface/signals.json --manifest layers.json --target-layer team
node mcp-server.mjs --manifest layers.json
npm run playground