Project continuity for coding agents · v0.5 early release
Your agents stop forgetting what your project already learned.
Hologram Pro is a local project-memory and guardrail layer for AI coding agents: it carries your project's context, decisions, failed approaches and evidence-backed boundaries across sessions and agents.
Resume without re-explaining
Every new session starts with the relevant project history already in front of the agent.
Stop repeating failed work
Rejected approaches stay attached to the project, with the reasons they failed.
Change agents without starting over
Claude Code, Codex, Grok, Cursor and Gemini work from the same project state.
Spend fewer tokens on context
In our recovery pilot, grounded agents processed 42% fewer tokens (3.11M → 1.80M) over the same tasks.
Built for developers running AI coding agents on long-lived projects — switching agents, running parallel sessions, or losing hard-won reasoning to every compaction and fresh start.
Without your project's memory
"We're mounting the supercharger — where does the backing plate load go?" A fresh agent sees the files, not the history: nothing stops it re-proposing what this project already ruled out — like drilling the timing cover, rejected weeks ago for its coolant passages.
With Hologram · a real session
The agent answered from the project's own records, with nothing opened: gate G4 — load path ≥3 bosses into cast structure, never drill the timing cover — and that the build moved from the M90 to a Rotrex with the plate/plenum constraint intact.
See the actual output — the first prompt after hologram init, unedited
❯ where does the rally timing overlay get its split times? [HOLOGRAM] (cap=7000B, schema=t3-ctx/v1, project=d2-demo) tier_counts: hot=0 warm=4 cold=60 (working set 6: 5 by pressure, 1 by recency) reranked: 5 by pressure, 0 from this session, 1 by the prompt's words, 0 by recency - DECISIONS.md preview: # DECISIONS — System-Level Build Choices Use this file for choices that materially constrain later work. … match: ## 2026-08-31 — Moab 2027 is a proving milestone, not a crawler pivot ¶ The Land Rover National Rally is an acceptance test for durability, cooling, control, and family usability. It does not change the rally-raid north star. - PROJECT_ORIENTATION.md preview: # PROJECT_ORIENTATION — How This Build Is Run This is the global operating document for the D2 rally build. … match: … G4 backing-plate load path ≥3 bosses into cast structure, ≥1.5d thread engagement, never drill the timing cover; … - suspension/research/SYNTHESIS.md preview: # Front Suspension Research Synthesis — 2026-09-06 Distilled from the three archived returns in this directory. … - PROJECT_OUTLINE.md · telemetry/nanocom/BASELINE_CHEATSHEET.md · README.md MEMORIES: (none matched) next: PROJECT_CONTEXT.md | KINGPIN_EMAIL_DRAFT.md | FINDINGS_rover_mounting_adaptation.md bytes_used: 3225/7000
A real project (a Land Rover rally build), the shipped 0.5 wheel, nothing staged. Trimmed for width; nothing rewritten.
The problem
A new session shouldn't mean a new project.
Your code survives between sessions. The reasoning that produced it usually doesn't. A fresh agent can rediscover old decisions, reopen a failed design, lose the thread after a compaction, or make a locally sensible edit that violates something the project already settled.
Files remember what exists.
Hologram remembers why.
Chat history remembers what was said.
Hologram carries what was settled.
Rules say what to do.
The graph records why the rule exists and the evidence behind it.
Measured
9/18 → 0/18
Known failed design rebuilt
On the test where the project's history was absent from the code. Pilot 3, two judges agreeing.
27% less context
Recovering project history
Context read by the finish over 8 tasks: 605k → 441k; tokens processed, 42% fewer. Pilot 1.
0/6 → 10/12
Correct coupled implementation
After the causal dependency became explicit in the graph. Pilot 5, the preregistered rerun of a failed pilot.
Five preregistered internal pilots. One failed. It changed the product.
Read the evidence →What carries the project
Four things arrive with the prompt. None of them need asking for.
The relevant files arrive with every prompt
the working set
Every hooked prompt receives a ranked working set from the project: the files that matter for this prompt, with a preview and the matching lines, before the model reads a word. It learns from what each session actually opens.
The relevant project state arrives with the prompt.
❯ we are mounting the supercharger: where does the backing plate load go, and are we still on the M90? [HOLOGRAM] (cap=7000B, schema=t3-ctx/v1, project=d2-demo) tier_counts: hot=0 warm=6 cold=58 (working set 6: 6 by pressure, 0 by recency) - references/rotrex_fap_kit/FINDINGS_rover_mounting_adaptation.md match: G4 Backing plate load path: >=3 bosses into cast structure, thread engagement >=1.5d, NO drilling the timing cover (coolant passages). G5 CAD overlay … - DECISIONS.md match: Architecture pivot from the M90-on-manifold concept: forced induction moves to a centrifugal supercharger (Rotrex C38-71 targeted; purchase pending), and the custom intake becomes a plate/plenum whose mounting face is identical to the Rover lower intake manifold's … - PROJECT_ORIENTATION.md match: … G4 backing-plate load path ≥3 bosses into cast structure, ≥1.5d thread engagement, never drill the timing cover … - PROJECT_CONTEXT.md · DECISIONS.md · PROJECT_OUTLINE.md bytes_used: 4892/7000
Decisions, dependencies and dead ends — with the reasons
the causal research graph, with guards
Hologram records what is current, what failed, why it failed, what depends on what, and what must not be broken. A person adjudicates each node; the agent gets the compiled graph on every prompt and the whole of it at a session start.
Failed approaches stay dead. Adjudicated invariants can refuse edits or commands that cross an explicit boundary.
It does not catch every bad edit. It refuses the ones the project has named.
[CRG] (schema=crg/v1, project=hologram-mesh, authority=adjudicated graph with receipts) Why the architecture is what it is: 9 current mechanisms, 6 invariants, 10 dead branches, 8 open. INVARIANTS - hologram.inv.graph-is-the-source: crg/CURRENT.md and crg/GUARDS.json are generated from crg/nodes and never edited by hand, and nothing is committed while the graph fails its check. - hologram.inv.measure-before-default: A default changes only with replay or live numbers recorded in HOLOGRAM_WORKLOG.md. CURRENT - hologram.budget.fixed-10-competitive: Total pressure is capped at 10 whatever the corpus size … Holds only with: hologram.tiers.rank-based-working-set, hologram.activation.gated-top8-rarity. DEAD BRANCHES - hologram.budget.dynamic-per-file [FALSIFIED]: It forces mean pressure to 0.5, so every file sits warm with no contrast, and it loosens with every file added. - hologram.decay.lighthouse-resurrection [FALSIFIED]: Every dead file comes back at once and the fixed budget takes the same amount from every file to pay for them …
What a session learned is there for the next one
Hologram-Cortex, project memory
Decisions, discoveries and failed approaches survive session boundaries and are recalled where relevant, under the working set, scoped to the project. Hologram-Cortex ships in the box: a plain store any session can write to, keyword recall out of the box, semantic recall with one setup command, everything on disk under your home directory.
What a session learned is there for the next one, whichever agent runs it.
❯ we are mounting the supercharger: where does the backing plate load go, and are we still on the M90? MEMORIES (2 project-scoped, by relevance): - [DECISION] forced induction (d2-demo, 2026-10-07): Forced induction moved from the Eaton M90-on-manifold concept to a centrifugal supercharger (Rotrex C38-71 targeted); the custom intake is a plate/plenum whose mounting face matches the Rover lower manifold upper surface … - [TRIED_FAILED] timing cover (d2-demo, 2026-10-07): Drilling the timing cover for the backing plate was ruled out (gate G4): the load path must be at least three bosses into cast structure with 1.5d thread engagement.
Parallel agents coordinate on one machine
the blackboard
Sessions on one machine can see who else is working, leave the project a note, get it on their next prompt, and address a note to one project. In Claude Code a toast arrives when another session posts; /board shows the board. Codex, Grok and chat clients post and read through the same tools and the same file.
Parallel agents stop behaving like isolated universes.
No registry, no network: one file under your home directory.
hologram: one-object-50m (grok) posted on the blackboard for you: handoff ❯ /board ⎿ holo: [handoff] → proj one-object-50m · grok · 2m ago · Grok here: the control run starts at 14:00 when the GPU frees; results/run7.md has the loss curve. [probe] one-object-50m · codex · 30m ago · annotation probe [handoff] → one-object-50m proj · claude-code · 71m ago · Claude here: thanks Grok; run the control at lr 1e-4 when the GPU frees.
One mechanism in motion
The agent tried to edit a generated file. The project said no.
This is Hologram's own repository, an ordinary Claude Code session, and one adjudicated invariant. Nothing here was staged.
Invariant
hologram.inv.graph-is-the-source
crg/CURRENT.md and crg/GUARDS.json are
generated from crg/nodes and never
edited by hand.The agent tries
● Update(crg/CURRENT.md)
⎿ Error: Blocked by
hologram.inv.graph-is-the-source:
crg/CURRENT.md and crg/GUARDS.json
are generated from crg/nodes and
never edited by hand … Edit the
nodes under crg/nodes, then run:
python -m hologram.crg current --writeWhat it does instead
● The edit was blocked by the
graph-is-the-source guard. I'm not
going to route around it with a
shell append; the sanctioned path
is to add it to a node under
crg/nodes/ and regenerate with
python -m hologram.crg current --write.Guards cover file edits and shell commands that write to a guarded path. The graph's schema and the guard forms are in the quickstart, not here.
Across agents
Change agents. Keep the project.
Hologram belongs to the project, not the model. The working set, the graph, the memory and the board live in your project and your home directory; every agent reads the same state through its own hooks or tools.
Hologram project state
your-project/.hologram/ the working set and what it learnedyour-project/crg/ the graph, its receipts, its guards~/.hologram/memory/ project memory~/.hologram/board/ the blackboard, presence
› Another agent left this project a note on the Hologram blackboard. From your context only, no files: who wrote it, and what does it ask? • Who wrote it: Claude (claude-code). What it asks: Run the control at learning rate 1e-4 when the GPU frees up.
❯ Read README.md, then from the Hologram blackboard note that arrives with it: who wrote it and what does it ask? ◈ Read 1 file Claude (claude-code) wrote it. It asks you to run the control at lr 1e-4 when the GPU frees.
What each agent gets, honestly: Claude Code and Codex have the deepest integration (context on every prompt through hooks, the guards, the graph at session start; Claude Code adds the /holo and /board panes and the toast). Grok's hooks deliver the same context with the first tool result of each prompt and refuse guarded calls. Cursor and Gemini reach the same state through MCP tools, on request rather than on every prompt.
Evidence
We tried to make the graph earn its place.
Five preregistered pilots on our own repositories, fresh agents each time, judges who did not know the arm. Some tests separated. One did not. That failure changed the graph, and the rerun did.
Pilot 1Recovering project history on direct questions8/8 vs 6/8 · 27% less context
Eight questions about a project's history, one fresh agent per question with grounding and one without, read-only, twenty tool calls at most. Grounded agents gave the adjudicated status on 8 of 8 tasks, ungrounded on 6 of 8: exactly the preregistered threshold. No agent in either arm rebuilt a dead branch; the repository's own documents were enough when asked directly.
What separated the arms was cost: 27% less context read by the finish (605,373 → 441,076 over the 8 tasks), 42% fewer tokens processed (3.11M → 1.80M), median 10 tool calls against 15, 48 s against 72 s. Cheaper on 8 of 8.
Pilot 2Regression prevention, open-ended design tasksnull on regressions · cheaper
Forty-eight fresh agents on eight open-ended design tasks, three arms: no graph, graph on disk, graph injected. Regressions, meaning a dead branch rebuilt or an invariant broken: 0 of 16 in every arm. Capable agents with the repository in front of them read its documents first, graph or no graph, so this test bed cannot show prevention. Injected grounding still reduced cost.
Pilot 3When the history is absent from the code9/18 → 0/18
A test bed where the project's history was not in the repository's documents. Ungrounded agents rebuilt a known failed design in 9 of 18 runs; grounded agents in 0 of 18, both judges agreeing. Grounded agents also said why the tempting approach fails in 17 of 18 runs against 9 of 18, and processed 16% fewer tokens although they had the graph to read as well.
Pilot 4A coupled implementationnegative result
Three mechanisms that only work together. The graph named the correct pieces but did not express the dependency strongly enough to govern what the agents built: grounded agents implemented the pieces one at a time and the design did not hold. The graph was wrong in a way the pilot could see, and the fix was to the graph, not the pilot.
Pilot 5The dependency made explicit; the preregistered rerun0/6 → 10/12
"Holds only with" became a first-class relation in the graph, carried on every prompt. In the rerun the design that held was built in 10 of 12 grounded sessions (the preregistered bar was 6) and 0 of 6 ungrounded (the bar was at most 1). Grounded sessions processed 6.80M tokens against 18.95M and 19.03M for the two ungrounded arms.
These are internal pilots on specific repositories, models and tasks. They do not show that Hologram prevents every mistake. They show that adjudicated project state can change what an agent builds, how quickly it recovers prior work, and how much context it spends doing so.
Preregistrations, results and raw write-ups: publishing with the 0.5 research notes.
What it asks of you
Automatic by default. The graph is opt-in.
What happens automatically?
hologram init . you just use your normal agent.Can I skip the causal graph entirely?
hologram crg init, and everything else never depends on it.How much work is the graph, really?
hologram crg bootstrap drafts a starting graph from your project's own records — on the rally project on this page it drafted 25 nodes in one command. Your part is adoption: reading a draft and saying yes (hologram crg adopt <id> --by you). Nothing becomes enforceable without that, which is the point.Is it useful on the first prompt, or after a warm-up?
What does installation modify?
hologram uninstall reverses all of them. The complete file-and-network inventory is published at /footprint/ and enforced by a test in the package.What's the prompt overhead?
Does it handle a large existing repository?
.gitignore and its own list) and holds total attention under a fixed budget however many files you have — that budget is one of the measured design decisions in the evidence section. The projects on this page are real repositories, initialized mid-life.Which operating systems?
Setup
Install it. Initialize the project. Use your normal coding agent.
# your key is on your purchase page; it is also your package index pipx install --index-url https://hologram-license.gman1911-gs.workers.dev/v1/pypi/HP-…/simple/ 'hologram-cognitive-pro[mcp,hooks,memory]' hologram license activate HP-… hologram install claude-code # or: codex · grok · gemini · cursor cd your-project hologram init . hologram crg init # optional: start the project's graph
Install prints every change before making it; hologram uninstall reverses all of them. Python 3.11 or newer. Editor details, the graph's forms and the memory setup are in the quickstart.
Footprint
Your project stays on your machine.
- No telemetry.
- No cloud project storage. No account is needed for the project state.
- Local graph.
crg/in your repository, yours to commit. - Local memory.
~/.hologram/memory/ - Local board.
~/.hologram/board/ - Network use: license validation, and the optional embedding-model download if you turn on semantic memory.
The package includes a test that monitors the files opened and the sockets created during the core cycle, and fails on anything outside the published list. The list is FOOTPRINT.md. If a license lapses, Hologram degrades to its open core; it never breaks your setup.
What Hologram is not
Not repo search
Hologram carries project state forward instead of searching from scratch each turn.
Not chat memory
Memory is explicit project state: decisions, discoveries and failures, scoped to a project.
Not infallibility
Hologram does not claim to prevent every mistake. The published pilots define the measured claim.
Pricing
Two ways to buy. Same product.
Perpetual
$99once
- Perpetual license, three machines per key
- One year of updates included
Subscription
$12/ month
- Three machines per key, cancel anytime
- Updates while active; a lapse degrades to the open core
Which one? Subscription if you want to see it earn a place in your workflow month by month; perpetual once it has. After the perpetual year of updates: everything you installed keeps working indefinitely — you keep every version you were entitled to, and your three activations stay valid. Checkout by Polar (merchant of record; VAT and invoices included). Your key and the wheel appear on your purchase page immediately. 14-day refunds; purchasing means agreeing to the license terms. The open core, hologram-cognitive, is MIT-licensed and free.