agoya
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@agoyaRemember that my preferred port is 3000."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Oracle Memory
The notebook your AI agents never lose. No database, no server farm — just JSON files and a really good search.
Every coding session, your agent learns something: a port number, a gotcha, a decision you made at 2 a.m. And every session, it forgets. Oracle Memory is the fix — a file-backed MCP memory server that lets agents remember across sessions and find what they wrote with hybrid keyword + semantic search.
remember ──▶ .oracle-memory/*.json ──▶ recall
(atomic writes) (BM25 + vectors + entity graph)No Postgres. No Redis. No migrations. Delete a file and the memory is gone; back up a folder and it's safe. That's the whole storage engine.
60-second start
Needs Node.js 24+.
npm install -g oracle-memory
# Run it as an MCP server (stdio)
oracle-memory
# ...or scope it to a project
ORACLE_MEMORY_ROOT_DIR=/path/to/project oracle-memoryWire it into Claude Code:
claude mcp add oracle-memory -- /path/to/oracle-memory/dist/index.js(Codex works the same way — point its MCP config at the same path.)
Related MCP server: junto-memory
Four kinds of memory
Not everything deserves to be remembered forever. Pick the right shelf:
Type | For | Lives |
| Preferences, decisions, conventions | 🗿 Forever |
| Lessons learned, gotchas, discoveries | 🗿 Forever |
| Conversation snapshots (pre-compact) | ⏳ Auto-expires (TTL) |
| Session scratchpad, temporary context | 🧹 Cleared between sessions |
The tools
Tool | What it does |
| Save a fact / insight / chunk / working memory |
| Search — BM25 + vector + entity-graph ranking, fused |
| Fetch one memory by id + type |
| Edit content / tags / importance / meta / TTL |
| List with type / agent / tag / query filters |
| Delete a memory for good |
| Wipe an agent's scratchpad (or everyone's) |
| Merge lookalike memories by tag overlap |
| Synthesize new higher-level insights from clusters of memories (LLM) |
| Surface contradictions: flagged ties + quarantined memories |
| Resolve a contradiction — |
| Who's currently connected |
| Counts by type and agent |
And read-only resources for clients that prefer URIs:
URI | Content |
| Everything |
| Filtered by type |
| Statistics |
| Connected agents |
The search is the magic
BM25 keyword search is built in — zero dependencies, fully offline, deterministic. Tokenize, drop stop words, rank. Fast and boring, in the best way.
Vector semantic search is the optional upgrade. Turn it on and every memory is also embedded with Xenova/all-MiniLM-L6-v2 (384-dim). On recall, keyword hits and semantic hits are blended with Reciprocal Rank Fusion (RRF) — so "port config" finds the note that says "we run on 3000" even without a word in common.
The model (~15 MB) auto-downloads on first use and caches locally. Don't want it?
ORACLE_MEMORY_DISABLE_VECTORS=1 oracle-memoryA day in the life
# Agent learns something
→ remember(agent="claude", type="fact", content="Project uses port 3000", tags=["config"])
# Weeks later, a different session, it just... knows
→ recall(query="port configuration")
← [{ entry: { content: "Project uses port 3000" }, score: 2.3, method: "bm25" }]
# Plans changed
→ update_memory(id="20260713-...", type="fact", { content: "Project uses port 4000" })
# How much does it know?
→ get_stats()
← { totalMemories: 42, byType: { fact: 20, insight: 10, chunk: 10, working: 2 } }Sharing memory across a team of agents (HTTP hub)
Run one memory server, connect many agents:
ORACLE_MEMORY_TRANSPORT=http ORACLE_MEMORY_PORT=8765 oracle-memoryclaude mcp add --transport http oracle-memory http://localhost:8765/mcpLock it down with a bearer token before exposing it:
ORACLE_MEMORY_HTTP_TOKEN=your-secret ORACLE_MEMORY_TRANSPORT=http ORACLE_MEMORY_PORT=8765 oracle-memoryUnder the hood
<root>/.oracle-memory/
├── config.json # server config
├── facts/ # permanent knowledge
├── insights/ # lessons learned
├── chunks/ # conversation snapshots
├── working/ # scratchpads
├── graph/graph.json # entity relationship graph
└── vectors/ # embeddings (optional)Every write is atomic (.tmp → rename), so a crash mid-write never corrupts your store.
Environment
Variable | Default | Description |
|
| Root for the |
|
|
|
|
|
|
|
| HTTP bind host |
|
| HTTP port |
| — | Bearer token for |
|
| Log verbosity |
Migrating from an older setup? The legacy
AGOYA_*env vars still work as fallbacks.
Build
npm run build # TypeScript → dist/
npm run check # type-check only
npm run dev # run via tsx
npm start # run compiled
npm test # testsBenchmarks
A self-contained eval harness (no downloads) scores what the SOTA agent-memory papers care about: retrieval quality (recall@k, MRR) and temporal correctness — after a fact changes, does recall return the new value and suppress the superseded one?
npm run bench # BM25 + entity-graph + vectors
ORACLE_MEMORY_DISABLE_VECTORS=1 npm run bench # skip the embedding modelIt writes bench/results.svg:
The bench exits non-zero if quality drops below its floors (recall@5 ≥ 75%, temporal = 100%), so it doubles as a CI regression gate.
The rest of the family
Oracle Memory writes the .oracle-memory/ format natively, so it slots right in with:
🧠 Oracle — the AI coding consultant (skills + oracles)
📮 Oracle Messages — multi-agent message bus
📖 Oracle Skill — teaches any agent to use the stack
One brain, one notebook, one group chat — no database in sight.
This server cannot be installed
Maintenance
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JonusNattapong/Oracle-memory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server