Stop living the same session twice
A self-hosted MCP server that gives your AI agent persistent memory across sessions, projects, and machines. Everything runs on your hardware — and it's free.
curl -fsSL https://code.squarecows.com/ric/omnimem/raw/branch/main/install.sh | bash
Paste that into your terminal — or follow the manual setup below.
one memory layer for all of them.
Every session starts from zero
Your AI agent doesn't know your project. It doesn't remember what failed last week. It has no idea you spent three hours last Tuesday figuring out why onnxruntime crashes on Alpine, only to find something that actually works.
So you explain everything again. It suggests the same broken library again. Same alarm, same song. It's Groundhog Day — you're Bill Murray, and your agent is Punxsutawney.
One recall() pulls context from everywhere
Personal preferences, ingested articles, past conversations, project context. It's all ranked together and merged into one useful response.
recall() about markdown editors. Every tagged line traces back to a different memory source — see the four on the right.Picked up from your conversations — preferences, decisions, and things mentioned in passing.
RSS articles, auto-summarised and embedded. They surface when relevant to what you're asking.
Links and posts you've shared — GitHub threads, blog posts, anything worth holding onto.
Extra context it knows matters to you, like your preferred tools and platforms.
Not just a key-value store with an MCP wrapper
OmniMem models how memory actually works. Things fade over time, they sometimes contradict each other, and the hard-won stuff earns its place.
Memory is not binary
Most systems either remember or delete. OmniMem has a proper lifecycle. When you say "forget about X" you usually mean stop bringing it up, not wipe it from existence.
Deprioritised memories aren't gone for good. Attach reinstate hints, and if a future query matches, the memory comes back with a note explaining why it was pushed down. You can mute entire topics across all sessions.
Four factors decide what comes back. Semantic similarity alone isn't enough — lifecycle state, age, and how hard it was to figure out all play a role.
Skills that build — and evolve — themselves
Memories tell an agent what happened. A skill tells it how you work. OmniMem compiles skills from the work you actually did — the breakthroughs, the recurring gotchas, the graveyard of dead ends — and as new experience lands, the skill evolves with it.
One-off episodes don't compile. A lesson must recur before it becomes policy — or be blessed to jump the queue.
Every compile proposes a reviewable diff. Rewrites of existing rules are flagged loudly; nothing commits until you accept.
Memories are the source of truth; the skill is build output. To change the guidance, update the memories and recompile.
The briefing recommends relevant skills for the session. You and the agent decide what loads.
compile_skill("python") distils a domain's accumulated experience into a loadable SKILL.md — do this, watch out for that, never try X again because it cost you an afternoon. Load it at the start of Python work and the agent works your way from the first prompt.
Every skill instructs the agent to keep recording lessons and dead ends while working under it. A richer pool compiles a better skill next time — and the knowledge watch flags fresh articles that contradict a compiled rule, so skills stay current.
Full design: the skill compiler
Most memory servers just store and retrieve
Claude Code's built-in memory — CLAUDE.md plus the newer auto-memory that writes markdown notes for itself — is still flat, machine-local files with keyword recall: no semantic search, no lifecycle, no contradiction handling. OmniMem goes quite a bit further.
Four containers. Nothing leaves your machine.
Local embeddings, self-hosted, Docker. Both the MCP server and web UI connect directly to Valkey and share the memory package.
remember · recall · deprioritise
record_experience · briefing · health
Dashboard · Search · Browse
Projects · Duplicates · Backups
idx:project
idx:knowledge
APScheduler
Claude Haiku
Up and running in two minutes
Clone and configure
Pick a strong Valkey password. For RSS summaries and smarter contradiction detection, add your Anthropic API key too.
Start the containers
Spins up four containers: Valkey with vector search, the MCP server, the RSS worker, and the web UI dashboard.
Connect Claude Code
Point Claude Code at OmniMem in your MCP config, then drop the included CLAUDE.md into your project.
OmniMem's instructions are injected automatically when the MCP server connects. To customise how Claude uses OmniMem across all projects, add your own overrides to ~/.claude/CLAUDE.md.