Loomem について
Loomemは、MCPクライアント間で知識を保持したいLLMエージェント向けの、Rust製ローカル優先コンテキストストアです。外部データベースなしで、ハイブリッド検索、時刻を扱う事実、エンティティグラフを備えています。
主な機能
- 01テキスト・ベクトル・エンティティの混合検索
- 02事実の統合と矛盾の処理
- 03イベント時刻と記録時刻を持つ事実
- 04別名と関係を含むエンティティグラフ
- 05任意のフィールド単位の保存時暗号化
活用シーン
- 01複数のMCPクライアントでコンテキストを共有
- 02意味や時刻を基準に会話の事実を検索
- 03人物やプロジェクト間の関係を調査
MCP 対応
MCPのストリーミングHTTP経由で15個の`memory_*`ツールを公開します。標準入出力でローカルサーバーに接続するクライアント向けのブリッジにも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Loomem は、LLM エージェント向けのオープンソースのコンテキストレイヤーです。ノートパソコン上で動作する単一の Rust バイナリを MCP 経由で提供し、Claude、ChatGPT、Codex、その他あらゆる MCP クライアントに、ユーザーのために実際の作業を行ううえで必要な事実、決定事項、履歴を提供します。モデルを入れ替え、ツールを切り替えても、コンテキストは引き継がれます。
Loomem は会話から抽出した構造化ナレッジを保存し、ハイブリッド検索を通じて、あらゆる MCP 対応クライアント(Claude、ChatGPT、Codex、Cursor、独自のエージェント)に提供します。
- ハイブリッド検索 — BM25(Tantivy)+ベクトル埋め込み+エンティティグラフのシグナルを、重み付きハイブリッドスコア(ベクトル 0.6/BM25 0.4)で統合します。
- 統合 — バックグラウンドワーカーが関連する事実を統合し、矛盾を解消し、古くなった事実を徐々に減衰させます(「夢を見る」)。
- 二時点モデル — 事実には取り込み時刻とイベント時刻の両方(
valid_from/valid_until)が記録されるため、「3 月に何を知っていたか」と「3 月に何が起きたか」は別々に検索できます。 - エンティティグラフ — 人物、プロジェクト、テクノロジーをエイリアスや関係性とともにグラフとして抽出し、検索と探索の両方に利用します。
- MCP ネイティブ — 標準の MCP HTTP トランスポートを介して 15 個の
memory_*ツールを提供します。リモートコネクター向けの OAuth 動的クライアント登録も含まれます。 - 保存データの暗号化(任意)— 環境から取得するマスターキーを使った、フィールド単位の AES-GCM エンベロープ暗号化に対応します。
RocksDB と Tantivy を基盤に Rust で構築されています。単一のバイナリで動作し、外部サービスは不要です。
ステータス:初期段階です。 エンジンはしばらく前から日常的に個人利用されていますが、公開 API とストレージ形式は今後変更される可能性があります。まだ粗削りな部分があります。Issue や PR を歓迎します。
クイックスタート
何もない状態から、macOS または Linux で、会話をまたいで Claude が記憶できるようにします。各手順は独立しているため、順番に実行してください。
1. バイナリをインストールします(sudo 不要。~/.loomem にインストールされます):
curl -fsSL https://raw.githubusercontent.com/vvooki-sys/loomem/main/install.sh | sh
2. ~/.loomem/bin を PATH に追加します(インストーラーにも表示されます):
echo 'export PATH="$HOME/.loomem/bin:$PATH"' >> ~/.zshrc # or ~/.bashrc
exec $SHELL
3. ローカル埋め込みモデルをダウンロードします(約 113 MB。初回のみ)。インストーラーはこのモデルを取得しません。モデルがないとサーバーは起動しません:
curl -fsSL https://raw.githubusercontent.com/vvooki-sys/loomem/main/scripts/fetch-embedding-model.sh | sh
4. 抽出、統合、ドリーミング用の LLM キーを設定するか、キーなしモードを使用します(FAQを参照):
export OPENAI_API_KEY="sk-..." # or: export LOOMEM_ALLOW_KEYLESS=1
5. サーバーを起動します(設定はすでに ~/.loomem に作成されています):
cd ~/.loomem && loomem-server
6. 起動を確認します(別のターミナルで実行):
curl http://localhost:3030/health
# {"status":"ok","version":"0.5.4"}
インストーラーはデフォルトでポート 3030 を使用し、すでに使用中の場合は別のポートを尋ねます(プロンプトをスキップするには
LOOMEM_PORTを設定してください)。別のポートを選んだ場合は、以下のコマンドでもそのポートを使用してください。
7. Claude Code を接続します:
claude mcp add --transport http loomem http://localhost:3030/mcp
7b. Claude デスクトップアプリ(または Cowork)を使う場合:HTTP ではなく stdio 経由でローカルサーバーに接続するため、claude_desktop_config.json でブリッジを設定し、Claude を再起動してください。ネイティブ対応、Node 不要(Loomem ≥ v0.2.1):
{ "mcpServers": { "loomem": { "command": "/absolute/path/to/.loomem/bin/loomem-cli", "args": ["mcp-stdio", "--url", "http://127.0.0.1:3030"] } } }
(すべてのバージョンで利用できますが、Node が必要です:"command": "npx", "args": ["-y", "mcp-remote", "http://127.0.0.1:3030/mcp", "--allow-http"]。)認証と詳細については、MCP クライアントを接続するを参照してください。
8. 試してみましょう。 Claude で「すべてのツールでダークモードを使うのが好みだと覚えておいて」と入力します。次に、新しい会話で「私の好みについて何を知っていますか?」と尋ねます。答えは Loomem から返されます。
その他のクライアント(claude.ai、ChatGPT、OpenClaw)、TLS/リモート公開、およびすべてのオプション一覧については、以下と docs/installation.md を参照してください。
インストール
ワンライナー(ビルド済みバイナリ、macOS + Linux)
curl -fsSL https://raw.githubusercontent.com/vvooki-sys/loomem/main/install.sh | sh
loomem-server、loomem-cli、loomem-migrate を ~/.loomem/bin にインストールします(sudo 不要)。設定テンプレートは ~/.loomem に配置されます。バージョンを固定するには LOOMEM_VERSION=v0.2.0 を、インストール先を変更するには LOOMEM_INSTALL_DIR を設定してください。アーカイブはリリースページの SHA256SUMS と照合して検証されます。インストーラーはローカル埋め込みモデルをダウンロードしません。クイックスタートの手順 3 に従って取得してください。
詳しいガイド — 要件、バージョンの固定、チェックサムの手動検証、アップグレード、アンインストール、トラブルシューティングについては、docs/installation.mdを参照してください。
ソースから
git clone https://github.com/vvooki-sys/loomem.git
cd loomem
cp entities.toml.example entities.toml # personal entity config (gitignored)
(cd loomem-dashboard && npm ci && npm run build) # dashboard, embedded at compile time
./scripts/fetch-embedding-model.sh # local embedding model → ~/.loomem/models
cargo build --release -p loomem-server -p loomem-cli
export OPENAI_API_KEY="sk-..." # or LOOMEM_ALLOW_KEYLESS=1 to run without a key (see below)
cargo run --release -p loomem-server
# server listens on http://127.0.0.1:3030, data in ./data
Rust(stable)、Node.js(ダッシュボード用)、および libclang(RocksDB のビルド用)が必要です。Debian/Ubuntu では apt install libclang-dev を実行してください。macOS では Xcode CLT に含まれています。Windows については INSTALL_WINDOWS.md を参照してください。
各手順は重要です。省略してもビルド自体は失敗しませんが、ダッシュボードをビルドしないとダッシュボードは 404 を返し、loomem-cli がないと Claude デスクトップアプリ用の stdio ブリッジがありません。ローカル埋め込みモデルは必須です。デフォルトの embedding_provider = "local" では、モデルがないとサーバーは起動しません(「クラウドへのフォールバックを拒否」)。API キーの有無は問いません。デフォルト設定では LLM を使った抽出とドリーミングも有効になっているため、LLM キー(export OPENAI_API_KEY=...)を設定するか、LOOMEM_ALLOW_KEYLESS=1 を設定しない限り、サーバーは起動を拒否します。キーなしモードでは、memory_ingest はキー不足エラーを返し、何も保存しません。エンティティ抽出は無効になり、ドリーミングも失敗します。memory_store と検索は引き続き動作します。
Docker
docker build -t loomem .
export LOOMEM_AUTH_TOKEN=$(openssl rand -hex 32)
export LOOMEM_AT_REST_MASTER_KEY=$(openssl rand -base64 32)
export OPENAI_API_KEY="sk-..."
docker run -p 3030:3030 -v loomem-data:/data \
-e LOOMEM_AUTH_TOKEN -e LOOMEM_AT_REST_MASTER_KEY -e OPENAI_API_KEY \
-e LOOMEM_EMBEDDING_PROVIDER=openai -e LOOMEM_EMBEDDING_DIM=1536 loomem
認証は、ローカル(ループバック)で実行する場合に限り、デフォルトで無効です。Docker イメージは 0.0.0.0 にバインドするため、サーバーには LOOMEM_AUTH_TOKEN が必要です(設定されていない場合、起動を拒否します)。また、イメージのデフォルトでは、保存データ用のマスターキーも必要です。キーは Authorization: Bearer <key> として渡します。意図的に無効化する場合は、LOOMEM_ALLOW_UNAUTH=1(認証なし)および LOOMEM_AT_REST_EXPECT_ENABLED=0(保存データを平文で保持)を指定してください。詳しくは docs/SECURITY.md をご覧ください。
イメージにはローカルの埋め込みモデルが含まれていないため、このコマンドでは埋め込みのプロバイダーを OpenAI に切り替え(LOOMEM_EMBEDDING_PROVIDER=openai、LOOMEM_EMBEDDING_DIM=1536)、OPENAI_API_KEY を渡します。保存したテキストは OpenAI API に送信されます。これらの変数を設定しない場合、サーバーは起動を拒否します(クラウドへのフォールバックは拒否されます)。
MCP クライアントに接続する
Loomem は /mcp でストリーミング可能な HTTP を介して MCP を使用します。MCP 対応のクライアントであれば利用できます。よく使われるクライアントの設定例を以下に示します。
Claude Code
claude mcp add --transport http loomem http://localhost:3030/mcp
Claude デスクトップアプリ(および Cowork)— ローカル stdio ブリッジ
Claude デスクトップアプリ(および Cowork)は、HTTP ではなく stdio を介してローカルの MCP サーバーに接続します。また、設定画面の「カスタムコネクタを追加」欄で受け付けるのは https:// URL のみです。そのため、そこに http://localhost:3030/mcp を貼り付けることはできません。Loomem のローカル HTTP エンドポイントを stdio にブリッジします。以下のいずれかのブロックを claude_desktop_config.json(macOS:~/Library/Application Support/Claude/claude_desktop_config.json、Windows:%APPDATA%\Claude\claude_desktop_config.json)に追加し、Claude を完全に再起動してください。
推奨 — ネイティブブリッジ、Node 不要(Loomem ≥ v0.2.1。すでにインストール済みの loomem-cli に含まれています):
{
"mcpServers": {
"loomem": {
"command": "/absolute/path/to/.loomem/bin/loomem-cli",
"args": ["mcp-stdio", "--url", "http://127.0.0.1:3030"]
}
}
}
loomem-cli の絶対パスを指定してください(例:/Users/you/.loomem/bin/loomem-cli)。デスクトップアプリはシェルの PATH を引き継ぎません。認証を有効にしている場合は、args に "--token", "<your token>" を追加するか、"env" ブロックで LOOMEM_AUTH_TOKEN を設定してください。
代替手段 — mcp-remote(すべてのバージョンで動作し、Node 18+ / npx が必要):
{
"mcpServers": {
"loomem": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://127.0.0.1:3030/mcp", "--allow-http"]
}
}
}
エンドポイントは localhost 上の通常の HTTP であるため、--allow-http が必要です。認証するには、args に "--header", "Authorization: Bearer ${LOOMEM_AUTH_TOKEN}" を追加し、"env": { "LOOMEM_AUTH_TOKEN": "<your token>" } を設定してください。どちらのブロックも、stdio のみをサポートする他のデスクトップクライアントで使用できます。(Claude Code は例外です。HTTP をネイティブに使用するため、ブリッジではなく、上記の claude mcp add の設定例を使ってください。)
Claude — リモートコネクタ(HTTPS、別の場所でホスト)
別のマシンで実行している Loomem インスタンスに接続するには、claude.ai/デスクトップアプリのリモートコネクタが HTTPS を使用します。TLS を設定したリバースプロキシ(または Cloudflare Tunnel などのトンネル)の背後にインスタンスを公開し、SERVER_ORIGIN=https://your-domain を設定してください(OAuth メタデータに正しい URL を通知するために必要です)。その後、Claude の設定で https://your-domain/mcp を指定してコネクタを追加します。Loomem は OAuth の動的クライアント登録を標準でサポートしています(/.well-known/oauth-authorization-server)。
ChatGPT — カスタムコネクタ
ChatGPT のカスタムコネクタには HTTPS と OAuth が必要です(静的 API キーはサポートされていません)。また、開発者モードを有効にする必要があります(Pro/Team/Enterprise プラン)。上記の手順でサーバーを HTTPS 経由で公開し、ChatGPT → 設定 → コネクタ → カスタムコネクタを追加 に進み、https://your-domain/mcp を貼り付けて OAuth フローを完了してください。
OpenClaw
openclaw mcp add loomem --url http://localhost:3030/mcp --transport http \
--header "Authorization: Bearer $LOOMEM_AUTH_TOKEN"
リモートの OpenClaw ゲートウェイを使用する場合は、--url に HTTPS エンドポイントを指定してください。
汎用 MCP クライアントの設定
{
"mcpServers": {
"loomem": {
"type": "http",
"url": "http://localhost:3030/mcp",
"headers": { "Authorization": "Bearer <your LOOMEM_AUTH_TOKEN>" }
}
}
}
スタンドアロンサーバーに関する注意
1 つの Loomem インスタンスで、複数のクライアント(ローカルの Claude Code、HTTPS エンドポイント経由の ChatGPT など)に同時に対応できます。それらのクライアントは同じコンテキストを共有します。TLS と認証で保護しない限り、バインドアドレスは 127.0.0.1 のままにしてください。HTTP ポートをそのままインターネットに公開しないでください。
アーキテクチャ
┌──────────────────────────────────────────────┐
│ loomem-server │
MCP client ──────► │ /mcp (JSON-RPC) ── dispatcher ─┐ │
HTTP client ─────► │ /v1/* + /api/* ─── handlers ───┤ │
└─────────────────────────────────┼────────────┘
▼
┌──────────────────────────────────────────────┐
│ loomem-core │
│ hybrid search (BM25 + vector + graph + RRF) │
│ consolidation / decay / dream workers │
│ entity extraction + alias graph │
│ encryption at rest (optional) │
└───────┬───────────────┬──────────────────────┘
▼ ▼
RocksDB Tantivy
(chunks, graph, (full-text index)
embeddings)
ワークスペースのクレート:loomem-core(エンジン)、loomem-server(HTTP/MCP サーバー)、loomem-migrate(オフラインの DB メンテナンス)、loomem-cli(コマンドラインクライアント)。
ドキュメント
FAQ
Loomem とは何ですか? LLM エージェント向けのオープンソースのコンテキストレイヤーです。Rust で書かれており、RocksDB と Tantivy 上で単一のバイナリとして動作し、Model Context Protocol(MCP)経由で提供されます。Claude、ChatGPT、Codex、その他あらゆる MCP クライアントに、あなたのために実際の作業を行うのに必要な事実、決定事項、履歴を提供します。ポータブルで、ローカルファースト、そしてあなた自身が所有できます。
Loomem は mem0、Zep、Letta、cognee とどう違いますか? Loomem は外部サービスを必要としない単一の Rust バイナリとして提供されます。ほとんどの代替製品では、別途ベクトルデータベースやグラフデータベースが必要です。コンテキストの所有権とポータビリティを重視し、完全なセルフホストとローカルファーストに対応しています。また、ローカル ONNX モデルによるオフラインの埋め込みに対応し、初めから MCP にネイティブ対応しています。
Loomem は無料のオープンソースですか? はい。Apache-2.0 ライセンスで、無料でセルフホストできます。ソースコードはこのリポジトリにあります。
Loomem の利用にインターネット接続や OpenAI は必要ですか?
基本的な利用にインターネット接続は必要ありません。埋め込みはローカル ONNX モデルを使ってデバイス上で実行でき、コンテキストの保存と検索は完全にオフラインで動作します。OpenAI API キーが必要なのは LLM を利用する処理(memory_ingest による抽出、統合、dream、矛盾の検出)のみです。キーがない場合、これらの処理は利用できません。また、デフォルト設定で起動するには LOOMEM_ALLOW_KEYLESS=1 が必要ですが、memory_store と検索は引き続き利用できます。
どの LLM クライアントを接続できますか? MCP に対応するクライアントならどれでも接続できます。Loomem はストリーミング可能な HTTP 経由で MCP を利用し、Claude、Claude Code、ChatGPT、Codex、Cursor 向けの設定例に加え、リモートコネクター向けの OAuth 動的クライアント登録を提供します。
ChatGPT や Claude に組み込まれたメモリ機能を使うだけではだめですか? 組み込みのメモリ機能は、特定のベンダーに縛られます。Loomem なら、構造化されたエンティティグラフと双時系列の履歴を使って、すべてのツールやモデルでコンテキストをポータブルに保ち、あなた自身がセルフホストして所有できます。単一ベンダーの機能では、これは実現できません。
作者
Loomem は Łukasz Gumowski が作成・保守しています — [email protected]。
ライセンス
Apache-2.0。LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。