the category question

One memory across every tool.
Not one per tool.

Right now you give your AI context one of three ways: let it re-read the repo cold every session, hand-write a CONTEXT.md that quietly rots, or bolt a chat-fact memory API onto each tool. All three leave the same gap: the memory doesn't understand your code, doesn't stay current, and doesn't travel with you. That gap is where SecondOS lives.

Single-tool memory

Convenient there, and gone the moment you open a different tool. No portability, no code graph.

Memory APIs

mem0, Zep and friends, a different category: agent memory for chat-derived facts you integrate yourself. Genuinely useful for what an assistant said, but it holds free text, not your codebase, and every tool integration is your job.

SecondOS

One structure-aware map, bound to real symbols, read by every tool over MCP. It knows your code, notices when it changes, and stays yours.

CapabilitySecondOSSingle-tool memoryMemory APIs
Read by every AI tool One map, all toolsCursor, Claude Code, Copilot, Cline… over MCP One IDE onlymemory dies when you switch tools If you wire ityou build the integration per tool
Understands code structure Symbols + graphtree-sitter parse, cross-language call graph, routes Editor-localindexes the open workspace Text chunksstores facts, not a code graph
Memory bound to real code Anchored to symbolsresolved against the latest sync Session contextno binding to specific symbols Free-text factsno link to your codebase
Goes stale when code changes Marked stalestate-bound, ranked down in recall Silently outdatedno drift signal Never noticesfacts persist regardless
Per-memory trust score 0..1 confidenceanchored ↑, stale ↓, reused ↑ Noneevery fact weighs the same Noneno notion of trust
Code-version validity Valid-through windowsold-as-of-version, down-weighted not deleted None None
Conflict detection Divergent notes flaggedreview candidates, real check with a model None Nonecontradictions just accumulate
Assisted distillation Proposes memoriesfrom your map, you accept or reject Manual only You write factsno proposals
Ingests decisions from issues / PRs Issue & PR ingestopt-in, read-only, human-reviewed into memory None Noneyou feed facts by hand
Living docs, readable over MCP Self-writing docswritten from the map, read via read_living_doc None None
code ↔ DB drift detection Built inschema vs written columns None None
History + rollback Versioned + restoreaccretes, never deletes None Some APIsvaries by provider
Source privacy Map onlysource never uploaded, self-host option Vendor-heldindexed in their cloud You send factswhatever you push is stored
Verify the privacy claims Read the sourceclient is source-available; see exactly what leaves your machine Closedtrust the vendor Variessome open, the hosted store is theirs
Tokens to answer a question ~5× feweranswers from map cards, not re-reading files, measured Re-indexesstill reads your files each session No code contextfacts only, agent re-reads the repo
Your memory, portable Local file, exportable.secondos/ travels with the repo, no lock-in Locked to the IDEleaves when you switch tools Behind their APIexport on their terms
Setup effort One commandbunx @secondos/cli push . Built into IDE You build itSDK wiring per app + tool

The one you actually use: your own CONTEXT.md

Most of us already do a version of this by hand: a CLAUDE.md, a docs/ folder, editor rules. It works until it doesn't. We measured it on a real 1,600-file app whose team keeps a serious set of hand-written docs:

~119k
tokens of docs, hand-written & maintained
~66k
loaded to answer one question: whole docs, not scoped
~2.2k
SecondOS, same question, scoped, automatic

And the docs go stale the moment the code moves, silently. SecondOS is the same instinct (read a summary, not the whole source) but generated for you, scoped to the question, structure-aware, and re-mapped on every sync so it never quietly lies to your next agent. It's the discipline of a well-kept CONTEXT.md, without the upkeep. See the benchmark →

The other approaches are good at what they do. The category whitespace is that none of them give you one memory that understands your code and every tool can read. That is the only thing SecondOS is trying to be.

Stop re-explaining your codebase to every tool.

> daemon: they say 'add memory to your agent'. I say 'let every tool remember the same thing'.