OmniMem
公式セッション、プロジェクト、マシンを超えてAIエージェントに永続的なメモリを提供する、セルフホスト型のMCPサーバーです。
OmniMem MCPで何ができますか?
AIエージェントに、セッション、プロジェクト、マシンをまたいだ永続的で自己ホスト型のメモリを提供します。「以前に失敗したライブラリを提案する前に、墓場を確認するように」と依頼できます。
- セッションブリーフィング —
briefingを要求すると、プロジェクトのコンテキスト、経験の統計、古いメモリ、新しい記事、スキルの提案を1回の呼び出しで取得できます。 - 過去の行き詰まりを回避 — 以前に失敗したライブラリやパターンを提案する前に、エージェントに墓場を確認させます。
- 過去の決定を想起 —
recallを使用して、以前のセッションからプロジェクトをまたいだ決定、修正、パターンを表面化します。 - 苦労して得た経験を記録 —
record_experienceで修正を記録し、実際に労力を要した教訓が次回より簡単に表面化するようにします。 - メモリの重複排除 —
find_duplicatesを実行して、ほぼ同一の保存済みメモリをフラグ付けし、一括クリーンアップします。 - メモリのバックアップ —
dump_to_fileを使用して、所有するJSONファイルにすべてをエクスポートします。
ドキュメント
自己ホスト型のセマンティックメモリ for AIエージェント。永続セッション、経験スコアリング、行き詰まりのための墓場。読んだRSSから得た知識をバックアップし、Valkeyベクター検索に保存して、MCPサーバーとして公開します。https://omnimem.org
<OmniMem>omnimem.org
開発はCodebergで行われています — 問題やPRはそちらへお願いします。
同じセッションを二度と繰り返さないでください。
すべてのClaude Codeセッションはゼロから始まります。プロジェクトの記憶はありません。先週何が失敗したかの記憶もありません。先週の火曜日に、なぜonnxruntimeがAlpineで爆発するのかを発見するのに3時間費やし、実際に動くものを見つけたという記憶もありません。
だから、あなたはプロジェクトをもう一度説明します。Claudeはまた同じ壊れたライブラリを提案します。同じ警報。同じ歌。あなたはビル・マレーで、Claudeはパンクスートーニーです。
OmniMemはそれを修正します。これは自己ホスト型のMCPサーバーで、AIエージェントにセッション、プロジェクト、マシンをまたいだ永続的なメモリを提供します。あなた自身のハードウェアで動作し、永遠に無料です。
claude> use onnxruntime for the embeddings
⚠ WARNING: previously abandoned approach
onnxruntime — SIGILL crash on Alpine musl libc (effort: 4/5)
→ switched to sentence-transformers instead
その警告は運ではなく、メモリから来たものです。あなたがすでに支払った過ちが、二度請求されることはありません。
すぐに始める
ヒント
1つのコマンドで、ビルド済みのDocker Hubイメージからフルスタックを起動できます:
curl -fsSL https://codeberg.org/ric_harvey/omnimem/raw/branch/main/install.sh | bashその後、エージェントをそれに向けます — クイックスタートで残りの手順を説明しています。または、以下のより詳細なクイックスタートセクションにジャンプしてください。
何を記憶するか
5種類のメモリがあり、呼び出し時にすべて一緒に検索されます:
- エピソード記憶 — あなたが下した決定、修正したバグ、発見したパターン。学ぶのに本当に労力を要し、毎朝再学習する必要のないもの。
- プロジェクトコンテキスト — あなたのスタック、目標、現在の状態。エージェントは毎回のセッションに、冷たい状態ではなく、すでにブリーフィングを受けて到着します。
- 知識 — 設定したRSSフィードをスケジュールで取得し、Claude Haikuで要約し、埋め込み、保存します。先週関連する記事が届いた場合、読む価値のある出発点として表面化します。
- 好み — あなたの働き方に関する規範的なルール(「機能が完了したら必ずREADMEを更新する」など)。会話から自動的に抽出され、該当するときに常に表面化します。
- スキル — あるドメインでの蓄積された経験からコンパイルされたSKILL.mdドキュメント。エージェントが最初のプロンプトからあなたのやり方で作業できるようにします。他の名前空間から派生し、手動編集はされず、すべての変更はあなたのレビューを通過します。スキルコンパイラを参照してください。 最上位のリコール結果は、6か月前の別プロジェクトでの判断、昨日の解決策、火曜の夜に公開された記事かもしれません。役に立つ限り、どこから来たかは問題ではありません。
何が違うのか
MCPラッパー付きの単なるキーバリューストアではありません。OmniMemは記憶が実際に機能する仕組みをモデル化しています。物事は時間とともに薄れ、時には互いに矛盾し、苦労して得たものはその地位を獲得します。
- The Graveyard — すべての行き止まりは、試したこと、失敗した理由、費やした時間とともに記録されます。エージェントはライブラリやパターンを提案する前にこれを確認します。
- Experience scoring — 4回の試行と奇妙なプラットフォーム回避策を要してようやく解決できたものは金です。難しかったほど、次回はより簡単に表面化します。
- Memory lifecycle —
ACTIVE → DEPRIORITISED → ARCHIVED → DELETED。「Xについて忘れて」は通常、存在から消し去るのではなく、話題に出すのをやめることを意味します。優先度が下げられた記憶は、再びその地位を取り戻すことができます。 - Contradiction detection — 新しい記憶が保存されているものと矛盾する場合、OmniMemがそれを検出します。すべての書き込みで高速ヒューリスティック、Claude Haikuによるオプションの詳細分析。
- Semantic deduplication — ほぼ同一の記憶は書き込み時にフラグが付けられ、
find_duplicates()で一括クリーンアップされます。 - One-call briefing — 1回の
briefing()で、プロジェクトコンテキスト、経験統計、古い記憶、新しい記事、矛盾警告、スキル提案が返されます。3ステップのウォームアップは不要です。 - The skill compiler — 強化された教訓と行き止まりをロード可能なスキルに凝縮します。提案と承認のゲートの背後にあるため、悪い教訓が静かにポリシーになることはありません。
- Auto-maintenance — 重複のアーカイブ、矛盾のフラグ付け、期限切れナレッジのクリーンアップをすべてバックグラウンドで実行。
- Web UI — htmxダッシュボードからすべてを閲覧、検索、管理。テレメトリとPrometheusの
/metricsエンドポイントを備えています。
すべてのリコールの背後にあるランキング式:
score = similarity x surface_score x recency x experience_weight
何が戻ってくるかを決めるのは4つの要素です。意味的類似性だけでは不十分で、ライフサイクル状態、経過時間、学ぶのがどれほど難しかったかがすべて役割を果たします。
あらゆるMCPエージェントと連携
すべてのエージェントに1つのメモリレイヤー:claude.ai、Claude Code、Claude Desktop、Cursor、GitHub Copilot、GitLab Duo、AWS Kiro、OpenCode、OpenAI Codex CLI、Open Design。
アーキテクチャ
4つのコンテナ。あなたのマシンから何も出て行きません。sentence-transformersによるローカル埋め込み、ベクトル検索を備えたValkeyへの保存、そして両方のフロントドアが同じメモリエンジンを共有します。
flowchart TB
agent["AI agent<br/>Claude Code · claude.ai · Cursor · Copilot · ..."]
browser["Browser"]
agent -- "MCP · Streamable HTTP / SSE · :8765" --> mcp
browser -- "HTTP · :8080" --> webui
subgraph stack["Docker Compose stack"]
mcp["MCP server<br/>Python · FastMCP<br/><i>remember · recall · briefing<br/>compile_skill · record_experience</i>"]
webui["Web UI<br/>Starlette · htmx · Jinja2<br/><i>dashboard · search · skills<br/>projects · backups · /metrics</i>"]
rss["RSS worker<br/>feedparser · APScheduler<br/>Claude Haiku summaries"]
valkey[("Valkey + valkey-search<br/>HNSW vector indexes<br/><i>idx:episodic · idx:project · idx:knowledge<br/>idx:preference · idx:skill</i>")]
mcp <--> valkey
webui <--> valkey
rss --> valkey
end
全体像(リコールパイプライン、ストレージモデル、設計上の決定)はdocs/architecture.mdにあります。
セルフホスト、オープンソース、あなたのもの
SaaSなし。ベンダーロックインなし。他人のサーバーにコンテキストを送信することもありません。
- ValkeyはオープンソースのRedisフォークです。すべてのデータは、お使いのマシン上の名前付きDockerボリュームに保存されます。
- amd64とarm64向けのマルチアーキテクチャDockerイメージ。Raspberry Pi、AWS Graviton、Apple Siliconでもx86と同様に動作します。
- sentence-transformersはAPI呼び出しなしでローカルに埋め込みを実行します。
- MITライセンスなので、フォークして、拡張して、好きな場所で実行できます。
- 1つのバックアップコマンドで
dump_to_file()を呼び出し、すべてを所有するJSONファイルにエクスポートします。
リバースプロキシ経由でMCPポートを公開すると、作業するすべてのマシンが同じメモリを共有します。1つのデプロイでどこでも利用可能 — docs/remote-access.mdを参照してください。
クイックスタート
インストーラーはDockerがインストールされていることを確認し、安全なパスワードを生成し、適切な.envを書き込み、ビルド済みのDocker Hubイメージからすべてを起動します:
curl -fsSL https://codeberg.org/ric_harvey/omnimem/raw/branch/main/install.sh | bash
またはソースからビルド:
git clone https://codeberg.org/ric_harvey/omnimem.git && cd omnimem
cp .env.example .env
# Set VALKEY_PASSWORD and ANTHROPIC_API_KEY in .env
docker compose up -d
次にエージェントを接続します — Claude Code (~/.claude.json):
{
"mcpServers": {
"omnimem": {
"type": "sse",
"url": "http://localhost:8765/sse"
}
}
}
サーバーは、MCPのinstructionsフィールドを介して、接続するすべてのエージェントに使用ガイドを自動的に配信します — 設定ファイルは不要です。Webダッシュボードはhttp://localhost:8080にあります。
認証トークン、権限設定、その他のエージェントを含む完全なウォークスルーは、docs/quick-start.mdにあります。
ドキュメント
| クイックスタート | インストーラー、ソースからのビルド、エージェントの接続 |
| 機能の詳細 | ライフサイクル、墓場、経験スコアリング、重複排除、矛盾、ブリーフィング |
| スキルコンパイラ | 経験をロード可能なスキルにコンパイル |
| MCPツールリファレンス | 30以上の全ツール |
| 設定リファレンス | すべての環境変数 |
| RSSとナレッジ | パッシブなナレッジ取り込みと昇格 |
| 複数マシン | リバースプロキシ、claude.ai用OAuth 2.1、トラブルシューティング |
| Web UI | 管理ダッシュボードとPrometheusメトリクス |
| アーキテクチャ | コンテナ、リコールパイプライン、設計上の決定 |
| メモリタイプ仕様 | ストレージモデル、フィールドごと |
| 接続ガイド | エージェントごとのセットアップ |
| デプロイガイド | macOS · Raspberry Pi · AWS · GCP · Linux + Tailscale Funnel |
Valkeyに何が誰によって書き込まれるかを正確に知りたい場合は、名前空間ごとのストレージ仕様:overview · episodic · project · knowledge · preference · skill
コントリビューション
IssueとPRを歓迎します。開発はCodebergで行われています — IssueとPRはそちらにお願いします。OmniMemは拡張されるように設計されており、スコアリングパイプラインはコアに触れることなく新しい乗数を追加できる構造になっています。新しいMCPツール、追加の名前空間タイプ、代替の埋め込みバックエンドはすべて合理的な方向性です。
ライセンス
MIT。自由に使用、フォーク、変更が可能です。エンタープライズ層も、ホスト型バージョンも、条件もありません。
Ric Harvey @ SquareCows Ltd によって構築されました。自分のツールを所有したい人のためのAIおよび自動化コンサルタンシーです。