Memory
/ AnimaGraph-native memory fabric
Append-first into a local hot store; curated vault + rebuildable indexes behind the curtain. Clients call memory.store and memory.recall. Provenance stays; index failure never erases the source.
Andromeda is a local-first, Swift-native control plane for the machinery around AI work: agents, jobs, tools, providers, secrets, and daemons — visible and manageable behind one stable interface.
Every agent, every job — visible. Memory (Anima) is the active build track; the six-pillar control plane is the charter.

What it's for
Agents, jobs, daemons, and scheduled work should report into one observable surface — not disappear across terminals, machines, and background processes.
Clients ask localhost for memory, tools, models, skills, or secrets by capability ID. Andromeda resolves the provider and policy behind the curtain.
The control plane, audit trail, routing rules, and human kill switch stay yours — even when the providers behind them change.
Memory, MCP host, Skills, LLM proxy, Secrets broker, and Fleet runtime — clients call stable capability IDs; Andromeda resolves providers, secrets, and processes server-side.
Graph-native memory fabric
Append-first into a local hot store; curated vault + rebuildable indexes behind the curtain. Clients call memory.store and memory.recall. Provenance stays; index failure never erases the source.
One host, not 50 subprocesses
A single supervised MCP host replacing per-terminal npm sprawl. Registry, health monitor, and subprocess containment bend the tool surface back into view.
A home for agent skills
One registry surface for skill discovery and invocation — no more tribal hunting through scattered skill directories across machines.
Capabilities in, providers out
Clients ask for capabilities, never provider brands. The live Autocache Anthropic surface injects prompt-cache breakpoints and returns ROI analytics.
Keys never touch client env
Stable proxy IDs resolve to Keychain-backed secrets server-side. Satellite agents run env-scrubbed; the broker injects credentials at call time.
Every daemon on the record
LaunchAgents, plists, and launchd become first-class entities with a health pulse and telemetry. Observe now; typed Swift mutation lands with the installer.
Client menus expose stable capability IDs only — never tracker names, provider brands, or raw env keys. The broker injects secrets server-side at call time.
memory.recallproject.state.*slack_proxygithub_proxywrite.toolhard ruleUI LaunchAgents and satellite agents run env-scrubbed (HOME + PATH only).
A portfolio piece should be accurate. Here is the real state of the system today — no greenwashing.
caveat write.tool is currently an episodic-store alias — not LLM inference. It becomes a real inference capability only through an explicit versioned migration. We don't advertise it as inference until then.
Why we're building it
We grew up together, took different paths through college, then found our way back to each other through code. Pair coding after work started as the thing we did for the love of it. Before long, every night exposed another piece of infrastructure that should have been simpler.
Our agents forgot yesterday's work. Environment secrets sprawled across machines. JavaScript and Node dependencies had to be overridden just to make tools fit the way we worked. Even a Cerebras floor rug became one more oddly specific problem we had to solve. We kept building one-off fixes, wrappers, and small automations because making things together was the point — not babysitting, handholding, or micromanaging brittle peripheral infrastructure.
Eventually the pattern was impossible to miss: forgotten context, tool and process sprawl, buried skills, provider churn, scattered secrets, and invisible automation were not isolated annoyances. They were parts of the same missing control plane. We started solving it for ourselves, chose Memory as the first active build track, and turned those nightly fixes into the six-pillar charter you see here.
Now we want to bring it to the community: built in the open, shaped by real use, and released for the open-source world that taught us how to build.
Andromeda is a six-pillar program, not a memory product with extras. Memory is the active implementation today; MCP, Skills, LLM routing, Secrets, and Fleet each have their own honest shipped, partial, or specified state.
Graph-native memory fabric
Append-first into a local hot store; curated vault + rebuildable indexes behind the curtain. Clients call memory.store and memory.recall. Provenance stays; index failure never erases the source.
On the roadmap
One host, not 50 subprocesses
A single supervised MCP host replacing per-terminal npm sprawl. Registry, health monitor, and subprocess containment bend the tool surface back into view.
A home for agent skills
One registry surface for skill discovery and invocation — no more tribal hunting through scattered skill directories across machines.
Capabilities in, providers out
Clients ask for capabilities, never provider brands. The live Autocache Anthropic surface injects prompt-cache breakpoints and returns ROI analytics.
Keys never touch client env
Stable proxy IDs resolve to Keychain-backed secrets server-side. Satellite agents run env-scrubbed; the broker injects credentials at call time.
Every daemon on the record
LaunchAgents, plists, and launchd become first-class entities with a health pulse and telemetry. Observe now; typed Swift mutation lands with the installer.
Anima is the first pillar under active construction, not the boundary of Andromeda. Its design treats memory as eight distinct jobs rather than a chat log with RAG — including Integrity, Awareness, and Dreaming.
“We talked Tuesday.” Timed, ordered, compactable capture.
“Chapter 3 has the state machine.” Structure-first recall.
“I’ve seen that diagram.” Vision recall over screenshots.
“Can I trust this memory?” Merkle proofs over memory trees.
Morning reflection that reads the dream journal and sets intention.
Presence, mood, relationship depth — context, not a chatbot.
Speak only when it matters. Silence is a feature.
Night: Review → Shadow → Insight → Integration.
Differentiators: it can prove a memory is trustworthy, knows when not to interrupt, and Dreaming consolidates overnight so the morning is smarter.
A vector store finds things that are similar by meaning. A graph finds things that are related by connection. You need both — and most memory products only ship one.
That is a chain of relations. No embedding similarity will surface that structure — only a graph can walk the connection.
A meaning query a graph can't do well — semantic retrieval surfacing the right note where keyword search would miss it entirely.
The backing stores each do one job. Letta is the layer that sits above them — Ask, refine, follow up — recall that holds a thread.
Reads across every backing store on your behalf — one question fans out to all of them.
Holds the thread across turns: context survives the follow-up, not just the first ask.
The thread survives. The night belongs to Dream.
One write. One recall.
The curtain handles everything else.
Indexes may fail.
Sources must not vanish.
Backing stores · SoT = source of truth · indexes are rebuildable
SwiftDatahot episodichotSoTOn-device, append-first capture. Instant and local before any index catches up.
Realmlive fanoutReal-time multi-device local spine so peers share one hot truth — without assuming iCloud. Still one write: memory.store.
Obsidian SecondBraindocument vaultSoTHuman-readable markdown — curated semantic SoT, git-auditable. Hot episodes materialize here; indexes rebuild from here.
memory.mddocumentFast-recall fact files + pointer index for session context. Sometimes plain text in the prompt beats a vector hunt.
claude-memcapture riverAuto-ingest of what happened, in order. Feeds Observe — not a client pick, not a second SoT.
qdrantvectorindexMeaning search over knowledge-sync facts. Rebuildable similarity tier — not SoT, never client-visible.
graphifygraphindexAnalytical graph of entities and relations — similar ≠ related. Rebuild from curated inputs.
LadybugDBgraph + vectorindexHub graph + vector query over the vault. Different job from Qdrant. Rebuildable cache — sacred split: Ladybug ≠ Qdrant.
PageIndexreasoning treeindexStructure / TOC navigation over long docs — this section with provenance, not only fuzzy similarity.
No single store does all of this well — that's why there are several. Letta and Andromeda make them look like one to the client.
We're building Andromeda toward the open-source world: one local curtain for agents, jobs, tools, providers, secrets, and fleet state. Join for real milestones as the six pillars come online — no launch theater, no spam.