Work in progress · building in the open

Control the chaos. Conceal the complexity.

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.

Andromeda — a glowing trefoil rising over a dark horizon beneath a constellation
No silent lossNo invisible automationNo provider lock-inNo knowledge without provenanceNo migration without rollbackLocal-first, alwaysNo silent lossNo invisible automationNo provider lock-inNo knowledge without provenanceNo migration without rollbackLocal-first, always

What it's for

The problems that pushed us to build Andromeda

Make the invisible visible

Agents, jobs, daemons, and scheduled work should report into one observable surface — not disappear across terminals, machines, and background processes.

Give clients stable capabilities

Clients ask localhost for memory, tools, models, skills, or secrets by capability ID. Andromeda resolves the provider and policy behind the curtain.

Keep control local

The control plane, audit trail, routing rules, and human kill switch stay yours — even when the providers behind them change.

Six pillars · one curtain

What Andromeda owns

Memory, MCP host, Skills, LLM proxy, Secrets broker, and Fleet runtime — clients call stable capability IDs; Andromeda resolves providers, secrets, and processes server-side.

Partial
01

Memory

/ Anima

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.

memory.recallmemory.storememory.journalproject.state.*
Partial
02

MCP Host

/ Consolidate

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.

mcp.registrymcp.scanmcp.health
Specified
03

Skills

/ Registry

A home for agent skills

One registry surface for skill discovery and invocation — no more tribal hunting through scattered skill directories across machines.

skill.listskill.invoke
Partial
04

LLM Proxy

/ Router

Capabilities in, providers out

Clients ask for capabilities, never provider brands. The live Autocache Anthropic surface injects prompt-cache breakpoints and returns ROI analytics.

write.toolroute.capabilityusage.metrics
Specified
05

Secrets Broker

/ Vault

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.

slack_proxygithub_proxywrite.tool
Partial
06

Fleet Runtime

/ Observe

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.

fleet.rosterfleet.healthfleet.telemetry
Capability curtain

Stable ID in, resolved provider out

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.recall
Hides: SwiftData hot store, vault, Ladybug, Qdrant
Never: Store paths, index brands
project.state.*
Hides: Linear ∪ Multica ∪ Slack fanout
Never: Tracker brand names in menus
slack_proxy
Hides: Slack Web API via broker; token from Keychain
Never: SLACK_BOT_TOKEN, raw env
github_proxy
Hides: GitHub API via broker
Never: GITHUB_TOKEN, gh auth dumps
write.tool
Hides: Cerebras under the hood — Andromeda manages Node compatibility, model changes, system-prompt injection so models know the write format, and a daily health check before any client call that would otherwise fail silently
Never: Cerebras, model names, API keys, raw Node errors

hard ruleUI LaunchAgents and satellite agents run env-scrubbed (HOME + PATH only).

Honest status · 2026-07-19

What is and isn't shipped

A portfolio piece should be accurate. Here is the real state of the system today — no greenwashing.

Shipped

7
  • memory.recall / memory.store — SwiftData hot store + vault fallback
  • memory.journal / session_dump
  • project.state.* CRUD
  • /checkpoint → /knowledge-sync → /close ritual
  • The multibrain nightly conductor
  • Autocache Anthropic LLM-proxy surface
  • The capability curtain + MemoryKit

Partial

3
  • MCP sprawl bent 55 → 37 (shared dedupe host not shipped)
  • HUD journal + visibility on a promotion branch
  • Letta / Ladybug / Qdrant live on the Studio hub only

Specified, not built

7
  • Secrets broker runtime (slack_proxy / github_proxy)
  • MCP consolidate — one shared host
  • SkillRegistry product surface
  • Full multi-provider LLM router
  • Fleet plist single-source-of-truth + typed mutate
  • CloudKit end-to-end replication
  • Photographic (CLIP) layer · Swift dream runtime

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

Two old friends. Too many late nights. The same problems, over and over.

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.

The nights that became a roadmap

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.

Roadmap · six build tracks, one charter

One active track. A much larger system.

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.

Now

Memory / Anima

Graph-native memory fabric

Partial

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.

memory.recallmemory.storememory.journalproject.state.*

On the roadmap

Partial
02

MCP Host

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.

Specified
03

Skills

A home for agent skills

One registry surface for skill discovery and invocation — no more tribal hunting through scattered skill directories across machines.

Partial
04

LLM Proxy

Capabilities in, providers out

Clients ask for capabilities, never provider brands. The live Autocache Anthropic surface injects prompt-cache breakpoints and returns ROI analytics.

Specified
05

Secrets Broker

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.

Partial
06

Fleet Runtime

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.

Active build track · pillar 01

A closer look at Memory

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.

01Shipped

Episodic

“We talked Tuesday.” Timed, ordered, compactable capture.

02Partial

Semantic

“Chapter 3 has the state machine.” Structure-first recall.

03Specified

Photographic

“I’ve seen that diagram.” Vision recall over screenshots.

04Partial

Integrity

“Can I trust this memory?” Merkle proofs over memory trees.

05Partial

Meditation

Morning reflection that reads the dream journal and sets intention.

06Partial

Soul

Presence, mood, relationship depth — context, not a chatbot.

07Partial

Awareness

Speak only when it matters. Silence is a feature.

08Partial

Dreaming

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.

Why graph AND vector

Similar is not the same as related

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.

A graph answers: what is connected to what?

incident #412 caused-by deploy 8f2c touched auth-service owned-by platform-team

That is a chain of relations. No embedding similarity will surface that structure — only a graph can walk the connection.

A vector store answers: what does this mean?

query: “how do I roll back a bad migration?”
→ recall #1 @ 0.62 — on a note whose exact words never appear

A meaning query a graph can't do well — semantic retrieval surfacing the right note where keyword search would miss it entirely.

conversational

LettaThe master librarian

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.

ClientAndromedacurtainHot memoryDreammaterialize

Indexes may fail.

Sources must not vanish.

Hot episodicSecondBraingraphifyPageIndexQdrantLadybug

Backing stores · SoT = source of truth · indexes are rebuildable

SwiftDatahot episodichotSoT

On-device, append-first capture. Instant and local before any index catches up.

Realmlive fanout

Real-time multi-device local spine so peers share one hot truth — without assuming iCloud. Still one write: memory.store.

Obsidian SecondBraindocument vaultSoT

Human-readable markdown — curated semantic SoT, git-auditable. Hot episodes materialize here; indexes rebuild from here.

memory.mddocument

Fast-recall fact files + pointer index for session context. Sometimes plain text in the prompt beats a vector hunt.

claude-memcapture river

Auto-ingest of what happened, in order. Feeds Observe — not a client pick, not a second SoT.

qdrantvectorindex

Meaning search over knowledge-sync facts. Rebuildable similarity tier — not SoT, never client-visible.

graphifygraphindex

Analytical graph of entities and relations — similar ≠ related. Rebuild from curated inputs.

LadybugDBgraph + vectorindex

Hub graph + vector query over the vault. Different job from Qdrant. Rebuildable cache — sacred split: Ladybug ≠ Qdrant.

PageIndexreasoning treeindex

Structure / 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.

Early access

Help shape the control plane we wish existed

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.

  • · Local-first, not local-only
  • · No knowledge without provenance
  • · No automation without visibility
  • · No migration without rollback
I'm a… (optional)

No spam. We email only at real milestones.