
Mithrandir

Code remembers what.
Mithrandir remembers why.
The decisions behind your code live in Slack threads, meetings, and tickets, and vanish when people leave. Mithrandir permanently connects every piece of code to the reasoning that explains it.
mithrandir mcp · simulated session
you
agent · director clearance
vs intern · adds the incident thread and the decision to ship the workaround
The outage traced back to a timezone conversion that assumed a fixed UTC offset.
The original incident thread shows the team debated a full refactor vs. a cache-layer workaround.
They chose the workaround: a major customer launch was 48 hours out, and the proper fix touched 3 services.
The follow-up ticket to remove the workaround was deprioritized two quarters in a row. That context is why it resurfaced.
tool calls
search_decisions"DST bug" scheduling
trace_rationalepayments/cache_workaround.ts:12
get_contextclearance: director
- 4 records assembled · full rationale · one hop from code
Simulated session over a fictional codebase. Pick a question, flip the clearance, and click any citation to open the record behind it. Or skip the recording: the live demo runs the same agent over a real codebase, no signup.
Your tools know what changed.
None of them know why.
The workaround and the reason it exists live in different worlds. One is versioned forever. The other was archived with the channel.
payments/cache_workaround.ts
git blame
a41f9e3 maya 2023-03-14 if (tz === FIXED_OFFSET) {
a41f9e3 maya 2023-03-14 return cachedWindow(ts); // workaround
9c02b1d tomas 2023-03-14 }
7e55d20 priya 2022-11-02 const window = schedule(ts);
A diff, a name, a date. Not one word of reasoning.
#incident-payments
archived · aug 2023
maya · 14:02
“The proper fix touches three services. We don't have 48 hours.”
tomas · 14:04
“Ship the cache workaround. We'll document it after launch.”
The entire rationale. Gone when the channel was archived.
Six months later, someone new “cleans up” the workaround, and reintroduces the exact incident it was protecting against. The knowledge wasn't lost in the code. It was lost in an archived channel, a meeting nobody transcribed, a ticket nobody linked.
Every company is quietly forgetting why it made its most important decisions.
Two brains, one memory
Structure on one side, reasoning on the other, and a bridge that keeps them permanently in sync.
Understands your codebase the way a senior engineer does: files, classes, functions, and how they depend on each other. The structural spine of your company.
CALLED BY · 4
DEPENDS ON · 3
WHAT CALLS THIS · WHAT BREAKS IF IT CHANGES · FROM THE LIVE DEMO GRAPH
Security your CISO can verify, not hope for
The uncomfortable truth about most enterprise AI: it filters answers, not access. Mithrandir is built the other way around.
Not a rule the AI follows
Others retrieve everything and then ask the model to be discreet. Prompt-level rules can be argued with. Mithrandir's access control isn't an instruction. It defines what the AI can reach.
Never in the context at all
Restricted information is never assembled into the model's context in the first place. No clever prompt, jailbreak, or paraphrase can extract what was never there.
Complete for each clearance
An intern and a director asking the identical question each get an answer that is complete for their access level, not an error, not a redaction, and never a leak.
80 OF THE LIVE DEMO GRAPH'S 177 NODES · REACH COMPUTED, NOT DRAWN
A knowledge layer, not another chat window
Mithrandir isn't a destination your team has to visit. It ships as its own MCP server, a layer any AI tool can query mid-task: your everyday tools ask while they work, and get back institutional context that is semantically relevant and access-controlled for the person driving.
- Claude
- Cursor
- ChatGPT
- Gemini
- Your internal agents
One integration point. Every agent your company runs gets a memory.
claude · mid-task
“Why does this retry cap exist?”
Capped at three since the June pilot. Finance flagged duplicate invoices. The full thread is available at your clearance.
answered · scoped to the asker
Save time and compute
Retrieval tools fetch everything and hope the model ignores the noise. Mithrandir instead treats depth as a dial. A shallow query stays among an anchor's structural neighbors in the Left Brain; go one Bridge deeper and the answer picks up the rationale, the decision that explains the code. You only pay for the reach you ask for, so the “why” is there when you want it and never a tax when you don't.
Structural questions stay in the Left Brain
“What calls this? What breaks if I change it?” are answered purely in code, a few cheap hops from the anchor. Nothing from the Right Brain is dragged in, because none of it is needed yet.
The reasoning is one crossing away
Ask why the code is the way it is, and the traversal crosses a Bridge into the permanent decision record. Linking code to the decision behind it is the thing document search can't do, and it's exactly one hop.
You pay for how far, not how big
A 200-person company and a 20,000-person one cost the same at the same depth. You pay for how far the answer reaches, a fact or the reasoning behind it, never the size of the graph.
Answer depth
Pick a depth and watch a real traversal sweep outward from its anchor across the live demo graph. Dim nodes were not touched at that depth. That's the compute you never paid for.
Fewer tokens. Better answers.
Same model. Same five questions. Mithrandir reached the answer with less than half the total token budget. It improved judged quality every time, too.
- 2.3 times
- fewer tokensMedian across five code-reasoning questions
- 52.7 percent
- less token usage75,595 tokens vs. 159,902 in aggregate
- 100 percent
- of answers judged better5 of 5 beat the full-context baseline
- 75.6 thousand
- Mithrandir tokensDown from 159.9k with the full-context baseline
- 14.28 out of 15
- mean answer qualityCompared with 12.38 for the baseline
- approximately 1.5 seconds
- retrieval overheadUnoptimized PoC steady-state latency
PoC run · 29 July 2026 · claude-haiku-4-5 · ~32k-token corpus · blind LLM judge, mean of 3 runs · embedding and ingestion excluded
measured, not estimated
A different architecture, not a better index
Understands code structure (not just text search)
- MITHRANDIR
- Built on a structural model of the codebase
- GLEAN
- Document search
- MICROSOFT COPILOT
- Code-aware in IDE, no org-wide structural graph
- NOTION AI
- Not code-focused
Permanent decision record
- MITHRANDIR
- Immutable by design: nothing deleted or overwritten
- GLEAN
- Indexes live sources; not designed as a permanent record
- MICROSOFT COPILOT
- Bound to M365 retention
- NOTION AI
- Editable workspace pages: built for collaboration, not as a permanent record
Links code to the decision behind it
- MITHRANDIR
- Core function (the Bridge)
- GLEAN
- Not a design goal
- MICROSOFT COPILOT
- Not a design goal
- NOTION AI
- Not a design goal
Access control model
- MITHRANDIR
- Structural: restricted context is never assembled
- GLEAN
- Permission-aware search results
- MICROSOFT COPILOT
- Permission-trimmed retrieval
- NOTION AI
- Page-level sharing
Serves other AI tools mid-task (MCP)
- MITHRANDIR
- Native distribution model
- GLEAN
- Emerging connectors
- MICROSOFT COPILOT
- Oriented to Microsoft's own surfaces
- NOTION AI
- Locked to Notion
Based on each product's publicly documented architecture as of 2026. This table is about design choices, not marketing, and we're happy to be corrected.
Backed by ongoing research
at Carnegie Mellon University,
School of Computer Science,
Language Technologies Institute,
on the limits of determinism
and rule-following in LLMs.
Remember why.
Mithrandir is being built with a small group of teams, around the real workflows where their context keeps getting lost. Bring one of yours and shape v0 directly with the founders.
Not ready to partner? Join the waitlist for product updates and early-access invitations. No account, and no inbox noise.
By joining, you agree to our Terms and Privacy Policy.
