Ormah
Ormah is a local-first memory system for AI agents and the humans who work with them.
The core idea is simple: memory should be involuntary. You should not have to tell your agent what to remember, what to recall, or when to go looking for context. Ormah lets your agent learn your preferences, decisions, patterns, mistakes, and ongoing work, then whisper the right context before the next prompt.
Search, embeddings, storage, and retrieval run on your machine by default. Your memory stays local. Add an LLM only for the parts that require judgment, like extracting memories from transcripts or doing graph maintenance.
For humans, Ormah feels like your AI finally remembers.
For agents, Ormah is a memory substrate with whisper hooks, MCP tools, a CLI, an HTTP API, and a live graph UI.
The name comes from the Malayalam word ഓർമ (ormah), meaning "memory" or "remember."
The Whisper Experience
You open a new session with a hook-supported AI agent and it already knows who you are, how you like to work, what you decided last week, what went wrong yesterday, and what matters in this repo right now.
You did not paste notes into the prompt. You did not ask it to "recall." You did not even have to know that the missing piece of context existed. Ormah whispered it before the model ever saw your message.
Over time, your agent learns more about you: what you prefer, what you believe, what you dislike, where you tend to make mistakes, which patterns keep repeating, which decisions still matter, and which ones no longer do. That context comes back when it is useful, not when you remember to ask for it.
And when you want to see what your agent actually knows, you can open the graph at http://localhost:8787 and inspect it directly.
Install
Standard install
bash <(curl -fsSL https://ormah.me/install.sh)
One command gets you to a working local runtime plus native client wiring.
ormah setup will:
- Start the Ormah server and install auto-start so it runs in the background on login (
launchd on macOS, systemd on Linux)
- Preload the local embedding models Ormah uses for search and whisper retrieval
- Detect supported clients and wire them up automatically:
- Claude Code: whisper hooks, MCP tools, instructions, maintenance agent, slash command
- Codex: whisper hooks, MCP tools, instructions, maintenance agent
- Claude Desktop (macOS): MCP tools
- Ask whether to enable automatic agent-backed maintenance when Claude Code, Codex, or both are detected
- Offer transcript backfill for Claude Code so you can bootstrap memory from earlier sessions
If Claude Code, Codex, or Claude Desktop are already installed, Ormah connects itself to them automatically.
Claude Code plugin
If you prefer Claude Code's plugin model, install the plugin from Claude Code:
/plugin marketplace add r-spade/ormah
/plugin install ormah@ormah
Then run:
/ormah:setup
The plugin still depends on the local ormah runtime and background server. If
the runtime is missing, /ormah:setup guides Claude through installing it with:
bash <(curl -fsSL https://ormah.me/install.sh) --no-setup
and then configuring plugin-safe setup with:
ormah setup --skip-client-setup
The plugin keeps hooks, MCP wiring, and commands scoped to the plugin. It also
installs the shared Ormah guidance block into the Claude memory file that
matches the plugin install scope.
For plugin-specific details, see
integrations/claude-plugin/README.md.
No API key is required for local search, embeddings, storage, graph UI, or whisper retrieval. LLM-backed features like transcript extraction and graph maintenance can use a configured provider, and supported coding agents can help with maintenance without a separate LLM API key. Automatic transcript extraction still uses the configured LLM path.
Why the whisper matters
This is the thing Ormah is built around.
In clients wired up with whisper hooks, before the model sees your prompt, Ormah decides what from your memory graph matters right now and quietly prepends just that context. Not a dashboard you have to open. Not a note you have to remember to paste. A whisper.
You usually never see it. Your agent just knows.
Whisper is available three ways:
- Hooks:
ormah setup wires supported clients to run whisper automatically before each prompt
- CLI:
ormah whisper inject and ormah whisper store
- HTTP:
POST /agent/whisper
Whisper inject
ormah whisper inject is the pre-prompt path for hook-supported clients.
Before each hooked prompt, Ormah: