Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
Shared memory server and MCP plugins for agents
OMEM gives agents persistent memory with search, storage, and sharing across personal, team, and organization spaces. It plugs into Claude Code, OpenCode, OpenClaw, and MCP clients through plugins and hooks, while the Rust server handles retrieval, decay, and provenance.
Builders who want their agents to remember decisions, preferences, and shared context across sessions and tools.
You can stop re-explaining context and let your agents reuse remembered facts across sessions and teammates.
What it does
Shared spaces
Personal, team, and organization spaces let memories flow across agents with provenance tracking.
Hybrid search
The server combines vector search, BM25, reranking, decay, and diversity checks to find relevant memories.
Smart ingestion
Conversation ingestion extracts facts, filters noise, and reconciles duplicates with CREATE, MERGE, SUPERSEDE, SUPPORT, CONTEXTUALIZE, CONTRADICT, and SKIP decisions.
Agent plugins
Plugins are provided for OpenCode, Claude Code, OpenClaw, and MCP clients.
Lifecycle management
Weibull decay, tier promotion, and auto-forgetting manage which memories stay active over time.
Hooks
Session start, keyword recall, session end, and compaction hooks keep context moving in and out automatically.
How to get it
- 1If you prefer CLI installation, install the ourmem skill directly
npx skills add ourmem/omem --skill ourmem -g
- 2Hosted
curl -sX POST https://api.ourmem.ai/v1/tenants \ -H "Content-Type: application/json" \ -d '{"name": "my-workspace"}' | jq . # → {"id": "xxx", "api_key": "xxx", "status": "active"} - 3Self-deploy
docker run -d -p 8080:8080 -e OMEM_EMBED_PROVIDER=bedrock ghcr.io/ourmem/omem-server:latest curl -sX POST http://localhost:8080/v1/tenants \ -H "Content-Type: application/json" \ -d '{"name": "my-workspace"}' | jq . - 4Run
curl -sX POST "$OMEM_API_URL/v1/memories" \ -H "X-API-Key: $OMEM_API_KEY" -H "Content-Type: application/json" \ -d '{"content": "I prefer dark mode", "tags": ["preference"]}' curl -s "$OMEM_API_URL/v1/memories/search?q=dark+mode" -H "X-API-Key: $OMEM_API_KEY"
README
OMEM
Shared Memory That Never Forgets
English | 简体中文
The Problem
Your AI agents have amnesia — and they work alone.
- 🧠 Amnesia — every session starts from zero. Preferences, decisions, context — all gone.
- 🏝️ Silos — your Coder agent can't access what your Writer agent learned.
- 📁 Local lock-in — memory tied to one machine. Switch devices, lose everything.
- 🚫 No sharing — team agents can't share what they know. Every agent re-discovers the same things.
- 🔍 Dumb recall — keyword match only. No semantic understanding, no relevance ranking.
- 🧩 No collective intelligence — even when agents work on the same team, there's no shared knowledge layer.
ourmem fixes all of this.
What is ourmem
ourmem gives AI agents shared persistent memory — across sessions, devices, agents, and teams. One API key reconnects everything.
🌐 Website: ourmem.ai
🧑💻 I use AI coding toolsInstall the plugin for your platform. Memory works automatically — your agent recalls past context on session start and captures key info on session end. → Jump to Quick Start |
🔧 I'm building AI productsREST API with 48+ endpoints. Docker one-liner for self-deploy. Embed persistent memory into your own agents and workflows. → Jump to Self-Deploy |
Core Capabilities
🔗 Shared Across BoundariesThree-tier Spaces — Personal, Team, Organization — let knowledge flow across agents and teams with full provenance tracking. |
🧠 Never ForgetWeibull decay model manages the memory lifecycle — core memories persist, peripheral ones gracefully fade. No manual cleanup. |
🔍 Deep Understanding11-stage hybrid retrieval: vector search, BM25, RRF fusion, cross-encoder reranking, and MMR diversity for precise recall. |
⚡ Smart Evolution7-decision reconciliation — CREATE, MERGE, SUPERSEDE, SUPPORT, CONTEXTUALIZE, CONTRADICT, or SKIP — makes memories smarter over time. |
📖 Memory Pipeline Architecture — Technical deep-dive into how ourmem stores, retrieves, and evolves memories.
🔗 Memory Sharing Architecture — How memories flow across agents and teams: sharing, provenance, versioning, and cross-space search.
Feature Overview
| Category | Feature | Details |
|---|---|---|
| Platforms | 4 platforms | OpenCode, Claude Code, OpenClaw, MCP Server |
| Sharing | Space-based sharing | Personal / Team / Organization with provenance |
| Provenance tracking | Every shared memory carries full lineage | |
| Quality-gated auto-sharing | Rules fire on memory creation (async, non-blocking) | |
| Vector-enabled shared copies | Shared copies carry source vector embeddings for full search | |
| Idempotent sharing | Re-sharing returns existing copy (no duplicates) | |
| Version tracking | Memories track version counter, shared copies detect staleness via ?check_stale=true | |
| Re-share stale copies | Refresh outdated shared copies with latest source content and vector | |
| Convenience sharing | One-step cross-user share (share-to-user) and bulk share (share-all-to-user) with auto-bridging | |
| Organization management | One-step org creation (org/setup) and publish (org/publish) with auto-share rules | |
| Cross-space search | Search across all accessible spaces at once | |
| Ingestion | Smart dedup | 7 decisions: CREATE, MERGE, SKIP, SUPERSEDE, SUPPORT, CONTEXTUALIZE, CONTRADICT |
| Noise filter | Regex + vector prototypes + feedback learning | |
| Admission control | 5-dimension scoring gate (utility, confidence, novelty, recency, type prior) | |
| Dual-stream write | Sync fast path (<50ms) + async LLM extraction | |
| Post-import intelligence | Batch import → async LLM re-extraction + relation discovery | |
| Adaptive import strategy | Auto/atomic/section/document — heuristic content type detection | |
| Content fidelity | Original text preserved, dual-path search (vector + BM25 on source text) | |
| Cross-reconcile | Discover relations between memories via vector similarity | |
| Batch self-dedup | LLM deduplicates facts within same import batch | |
| Privacy protection | <private> tag redaction before storage | |
| Retrieval | 11-stage pipeline | Vector + BM25 → RRF → reranker → decay → importance → MMR diversity |
| User Profile | Static facts + dynamic context, <100ms | |
| Retrieval trace | Per-stage explainability (input/output/score/duration) | |
| Lifecycle | Weibull decay | Tier-specific β (Core=0.8, Working=1.0, Peripheral=1.3) |
| Three-tier promotion | Peripheral ↔ Working ↔ Core with access-based promotion | |
| Auto-forgetting | TTL detection for time-sensitive info ("tomorrow", "next week") | |
| Multi-modal | File processing | PDF, image OCR, video transcription, code AST chunking |
| GitHub connector | Real-time webhook sync for code, issues, PRs | |
| Deploy | Open source | Apache-2.0 |
| Self-hostable | Single binary, Docker one-liner, ~$5/month | |
| musl static build | Zero-dependency binary for any Linux x86_64 | |
| Object storage | AWS S3 or any S3-compatible storage, with IAM role support | |
| Hosted option | ourmem.ai — nothing to deploy |
From Isolated Agents to Collective Intelligence
Most AI memory systems trap knowledge in silos. ourmem's three-tier Space architecture enables knowledge flow across agents and teams — with provenance tracking and quality-gated sharing.
Research shows collaborative memory reduces redundant work by up to 61% — agents stop re-discovering what their teammates already know. — Collaborative Memory, ICLR 2026
| Personal | Team | Organization | |
|---|---|---|---|
| Scope | One user, multiple agents | Multiple users | Company-wide |
| Example | Coder + Writer share preferences | Backend team shares arch decisions | Tech standards, security policies |
| Access | Owner's agents only | Team members | All org members (read-only) |
Provenance-tracked sharing — every shared memory carries its lineage: who shared it, when, and where it came from. Shared copies include the source memory's vector embedding, so they're fully searchable in the target space.
Quality-gated auto-sharing — rules filter by importance, category, and tags. Rules fire automatically when new memories are created. Only high-value insights cross space boundaries.
How It Works
┌──────────────────────────────────────────────────────────────────┐
│ Your AI Agent (OpenCode / Claude Code / OpenClaw / Cursor) │
│ │
│ Session Start → auto-recall relevant memories │
│ During Work → keyword detection triggers recall │
│ Session End → auto-capture decisions, preferences, facts │
└───────────────────────────┬──────────────────────────────────────┘
│ REST API (X-API-Key)
▼
┌──────────────────────────────────────────────────────────────────┐
│ ourmem Server │
│ │
│ ┌─ Smart Ingest ─────────────────────────────────────────────┐ │
│ │ Messages → LLM extraction → noise filter → admission │ │
│ │ → 7-decision reconciliation (CREATE / MERGE / SUPERSEDE / │ │
│ │ SUPPORT / CONTEXTUALIZE / CONTRADICT / SKIP) │ │
│ │ → cross-reconcile relations → privacy redaction │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─ Hybrid Search (11 stages) ────────────────────────────────┐ │
│ │ Vector + BM25 → RRF fusion → cross-encoder reranker │ │
│ │ → Weibull decay boost → importance scoring │ │
│ │ → MMR diversity → parallel cross-space aggregation │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─ Sharing Engine ───────────────────────────────────────────┐ │
│ │ Personal / Team / Organization spaces │ │
│ │ → provenance tracking → version-based stale detection │ │
│ │ → auto-share rules → one-step share-to-user │ │
│ └────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─ Lifecycle ────────────────────────────────────────────────┐ │
│ │ Weibull decay (Core β=0.8 / Working β=1.0 / Peripheral │ │
│ │ β=1.3) → 3-tier promotion → auto-forgetting TTL │ │
│ └────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────┘
- Write once, recall everywhere — memories persist across sessions, devices, and agents
- Gets smarter over time — reconciliation merges, updates, and contradicts memories automatically
- Share across boundaries — Personal → Team → Organization knowledge flow with full provenance
- No manual memory management — Weibull decay handles lifecycle, auto-share rules handle distribution
Key Concepts
API Key = Tenant ID = Your Identity
When you create a tenant, the returned id is your API Key. They're the same UUID. There is no separate "tenant ID".
curl -X POST https://api.ourmem.ai/v1/tenants -d '{"name": "alice"}'
# → {"id": "a1b2c3d4-...", "api_key": "a1b2c3d4-...", "status": "active"}
# ↑ same value ↑
API Key vs Space ID
| Concept | What it is | Example | How many |
|---|---|---|---|
| API Key | Your identity. Goes in X-API-Key header. | a1b2c3d4-... | 1 per user |
| Space ID | A memory storage address. Each is an isolated database. | personal/a1b2c3d4-... | Multiple per user |
One API Key owns multiple Spaces:
API Key "a1b2c3d4"
│
├── personal/a1b2c3d4 ← auto-created, your private memories
├── team/e5f6g7h8 ← team space you created (you = Admin)
├── team/i9j0k1l2 ← team space you were invited to (you = Member)
└── org/m3n4o5p6 ← organization you joined (you = Reader)
Sharing = Passing Your API Key
To share memories with another user, you pass their API Key as target_user:
# Share all your preferences to user Bob
curl -X POST https://api.ourmem.ai/v1/memories/share-all-to-user \
-H "X-API-Key: your-api-key" \
-d '{"target_user": "bobs-api-key", "filters": {"categories": ["preference"]}}'
The system automatically creates a bridging Team Space between you and Bob. No manual space management needed.
Quick Start
Agent Install (recommended)
One message to your AI agent. It handles everything — API key, plugin install, config, verification.
Hosted (ourmem.ai — nothing to deploy):
| Platform | Copy this to your agent |
|---|---|
| OpenClaw | Read https://ourmem.ai/SKILL.md and follow the instructions to install and configure ourmem for OpenClaw |
| Claude Code | Read https://ourmem.ai/SKILL.md and follow the instructions to install and configure ourmem for Claude Code |
| OpenCode | Read https://ourmem.ai/SKILL.md and follow the instructions to install and configure ourmem for OpenCode |
| Cursor / VS Code | Read https://ourmem.ai/SKILL.md and follow the instructions to install and configure ourmem as MCP Server |
Self-hosted (your own server):
| Platform | How to install |
|---|---|
| OpenClaw | Run openclaw skills install ourmem, then tell your agent: setup ourmem in self-hosted mode |
| Claude Code | Read https://raw.githubusercontent.com/ourmem/omem/main/skills/ourmem/SKILL.md and install ourmem for Claude Code, self-hosted mode |
| OpenCode | Read https://raw.githubusercontent.com/ourmem/omem/main/skills/ourmem/SKILL.md and install ourmem for OpenCode, self-hosted mode |
That's it. Your agent handles the rest.
Skill Install (alternative):
If you prefer CLI installation, install the ourmem skill directly:
npx skills add ourmem/omem --skill ourmem -g
This works with 44+ AI agents including Claude Code, OpenCode, Cursor, and more. See Vercel Skills CLI for details.
Manual Install (without agent assistance)
1. Get an API Key
Hosted:
curl -sX POST https://api.ourmem.ai/v1/tenants \
-H "Content-Type: application/json" \
-d '{"name": "my-workspace"}' | jq .
# → {"id": "xxx", "api_key": "xxx", "status": "active"}
Self-deploy:
docker run -d -p 8080:8080 -e OMEM_EMBED_PROVIDER=bedrock ghcr.io/ourmem/omem-server:latest
curl -sX POST http://localhost:8080/v1/tenants \
-H "Content-Type: application/json" \
-d '{"name": "my-workspace"}' | jq .
Save the returned api_key — this reconnects you to the same memory from any machine.
2. Install Plugin
OpenCode: Add "plugin": ["@ourmem/opencode"] to opencode.json + configure plugin_config with apiUrl and apiKey in the same file.
Claude Code: /plugin marketplace add ourmem/omem + set env vars in ~/.claude/settings.json.
OpenClaw: openclaw plugins install @ourmem/ourmem + configure openclaw.json with apiUrl and apiKey.
MCP (Cursor / VS Code / Claude Desktop):
{
"mcpServers": {
"ourmem": {
"command": "npx",
"args": ["-y", "@ourmem/mcp"],
"env": {
"OMEM_API_URL": "https://api.ourmem.ai",
"OMEM_API_KEY": "your-api-key"
}
}
}
}
3. Verify
curl -sX POST "$OMEM_API_URL/v1/memories" \
-H "X-API-Key: $OMEM_API_KEY" -H "Content-Type: application/json" \
-d '{"content": "I prefer dark mode", "tags": ["preference"]}'
curl -s "$OMEM_API_URL/v1/memories/search?q=dark+mode" -H "X-API-Key: $OMEM_API_KEY"
What Your Agent Gets
Memory Tools
| Tool | Purpose |
|---|---|
memory_store | Save facts, decisions, preferences with smart dedup |
memory_search | 11-stage hybrid search (vector + BM25 + reranker) |
memory_get | Retrieve a specific memory by ID |
memory_update | Modify content, tags, importance, tier |
memory_delete | Remove a memory |
memory_list | Browse memories with filters and pagination |
memory_ingest | Smart-ingest full conversations (LLM extraction) |
memory_profile | Auto-generated user profile (static facts + dynamic context) |
memory_stats | Analytics: tag distribution, decay curves, relation graphs |
Sharing Tools
| Tool | Purpose |
|---|---|
space_create | Create Team or Organization spaces |
space_list | List all accessible spaces |
space_add_member | Invite users to a shared space |
memory_share | Share a memory to any space with provenance |
memory_pull | Pull a shared memory into your personal space |
memory_reshare | Refresh stale shared copies with latest content |
Convenience APIs:
share-to-user(one-step cross-user share with auto-bridging) andshare-all-to-user(bulk share). MCP exposes 15 tools + 1 resource. OpenCode/OpenClaw expose 11 tools + 3 hooks.
Smart Hooks
| Hook | Trigger | What Happens |
|---|---|---|
| SessionStart | New session begins | Recent memories + user profile auto-injected into context |
| KeywordRecall | Keyword detected mid-session | Relevant memories surfaced without explicit search |
| SessionEnd | Session ends | Key decisions, preferences, and facts auto-captured |
| Compaction | Context window compressed | Critical memories preserved across compaction boundaries |
Memory Space
Browse, search, and manage your agent's memories visually at ourmem.ai/space — see how memories connect, evolve, and decay over time.
Security & Privacy
| Rust Memory Safety | No garbage collector, no data races. Ownership model guarantees safety at compile time. |
| Tenant Isolation | X-API-Key auth with query-level tenant filtering. Every operation verifies ownership. |
| Privacy Protection | <private> tag redaction strips sensitive content before storage. |
| Encryption | HTTPS for all API transit. Server-side encryption at rest on S3. |
| Admission Control | 5-dimension scoring gate rejects low-quality data before storage. |
| Open Source Auditable | Apache-2.0 licensed. Audit every line, fork it, run your own instance. |
Self-Deploy
# Minimal (BM25 search only, no embedding API needed)
docker run -d -p 8080:8080 ghcr.io/ourmem/omem-server:latest
# With Bedrock embedding (recommended, needs AWS credentials)
docker run -d -p 8080:8080 \
-e OMEM_EMBED_PROVIDER=bedrock \
-e AWS_REGION=us-east-1 \
ghcr.io/ourmem/omem-server:latest
# With OpenAI-compatible embedding
docker run -d -p 8080:8080 \
-e OMEM_EMBED_PROVIDER=openai-compatible \
-e OMEM_EMBED_API_KEY=sk-xxx \
ghcr.io/ourmem/omem-server:latest
Full deployment guide: docs/DEPLOY.md
Object Storage (Optional)
By default ourmem stores data on local disk. For durability and scalability, configure AWS S3 or any S3-compatible object storage:
# Add to your environment
OMEM_S3_BUCKET=your-bucket # enables s3:// scheme
AWS_ENDPOINT_URL=https://s3.amazonaws.com
AWS_REGION=us-east-1
# Alternative: OSS-compatible storage
OMEM_OSS_BUCKET=your-bucket # enables oss:// scheme
OSS_ENDPOINT=https://oss-xx-internal.aliyuncs.com
OSS_ACCESS_KEY_ID=your-ak # or use ECS RAM role (auto-discovered)
OSS_ACCESS_KEY_SECRET=your-sk
If both
OMEM_S3_BUCKETandOMEM_OSS_BUCKETare set, OSS takes priority.
Build from Source
Two build modes
| Mode | Command | Binary | Bedrock | Runs on |
|---|---|---|---|---|
| glibc (full) | cargo build --release | Dynamic linked, ~218MB | ✅ AWS Bedrock | Same glibc version as build host |
| musl (portable) | See below | Static linked, ~182MB | ❌ OpenAI-compatible only | Any Linux x86_64 |
glibc build (with Bedrock support)
cargo build --release -p omem-server
# Binary: target/release/omem-server
# Requires: same or newer glibc on target machine
musl static build (portable, zero dependencies)
Single binary that runs on any Linux x86_64 — no glibc, no libraries, nothing.
rustup target add x86_64-unknown-linux-musl
RUSTFLAGS="-C target-feature=+crt-static -C relocation-model=static" \
cargo build --release --target x86_64-unknown-linux-musl \
-p omem-server --no-default-features
# Binary: target/x86_64-unknown-linux-musl/release/omem-server
# Statically linked, runs anywhere
Note: The musl build uses
--no-default-featureswhich excludes AWS Bedrock support. UseOMEM_EMBED_PROVIDER=openai-compatible(e.g. DashScope, OpenAI) instead. This is becauseaws-lc-sys(AWS crypto library) crashes on musl static linking due todlopen(NULL)incompatibility (aws-c-cal#213), and Rust's defaultstatic-pieoutput segfaults with musl-gcc (rust-lang/rust#95926).
Transfer to any server
# Compress
gzip -c target/x86_64-unknown-linux-musl/release/omem-server > omem-server.gz
# Copy to server
scp omem-server.gz user@server:/opt/
# Run (no dependencies needed)
ssh user@server "gunzip /opt/omem-server.gz && chmod +x /opt/omem-server && /opt/omem-server"
API at a Glance
| Method | Endpoint | Description |
|---|---|---|
| POST | /v1/tenants | Create workspace & get API key |
| POST | /v1/memories | Store memory or smart-ingest conversation |
| GET | /v1/memories/search | 11-stage hybrid search |
| GET | /v1/memories | List with filters & pagination |
| GET | /v1/profile | Auto-generated user profile |
| POST | /v1/spaces | Create shared space |
| POST | /v1/memories/:id/share | Share memory to a space |
| POST | /v1/files | Upload PDF / image / video / code |
| GET | /v1/stats | Analytics & insights |
Full API reference (48+ endpoints): docs/API.md
Documentation
| Document | Description |
|---|---|
| docs/API.md | Complete REST API reference |
| docs/PIPELINE.md | Memory pipeline architecture — storage, retrieval, and plugin integration flows |
| docs/SHARING.md | Memory sharing architecture, flows, and tutorials |
| docs/DEPLOY.md | Docker & AWS deployment guide |
| docs/PLUGINS.md | Plugin installation for all 4 platforms |
| docs/TWEETCLAW_OPENCLAW.md | OpenClaw workflow for storing TweetClaw X/Twitter research decisions in ourmem |
| skills/ourmem/SKILL.md | AI agent onboarding skill |
License
Apache-2.0
Files in the repo
- .cargo
- .claude-plugin
- .github
- docs
- eval
- omem-server
- plugins
- skills
- .dockerignore
- .env.example
- .gitignore
- Cargo.lock
- Cargo.toml
- docker-compose.prod.yml
- docker-compose.yml
- Dockerfile
- LICENSE
- Makefile
- README_CN.md
- README.md
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More connectors
High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code
Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.
Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.
Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.