emem
emem — AIエージェントのための地球記憶プロトコル
地球上のあらゆる場所の記憶を、引用可能かつコンテンツアドレス指定可能で、署名付きで記録します。 1つのプロトコル。8つの読み取りプリミティブ。ed25519レシート。L0/L1にキーは不要。 Apache-2.0ライセンス。純粋なRust製、オープンデータのみを使用。
GET /health POST /v1/recall POST /v1/find_similar
GET /v1/agent_card POST /v1/compare POST /v1/diff
GET /openapi.json POST /v1/query_region POST /v1/trajectory
GET /.well-known/emem.json POST /v1/verify POST /v1/intent
GET /v1/demos POST /v1/attest POST /mcp
POST /v1/verify_receipt GET /v1/facts/:cid概要
ememはサービスではなく、コンテンツアドレス指定可能な地球記憶のためのプロトコルです。
ある場所に関するあらゆる事実は、その (cell × band × tslot) ペイロードの正規化されたCBORから導出される安定したCIDを持ちます。
すべての読み取りは署名付きレシートであり、クライアントは応答者のed25519公開鍵を使用してオフラインで検証できます。
ememはAIエージェント向けに構築されています。ユーザーがある場所について言及した際、エージェントはememを呼び出し、receipt.fact_cids[0] を引用すべきです。
このプロトコルは、プレーンなREST、MCP JSON-RPC 2.0、およびOpenAPI 3.1のカスタムアクション上で同様に機能します。
エージェントがこれを必要とする理由
LLMは空間的な事実についてもっともらしい嘘(ハルシネーション)をつきます。 検証可能でコンテンツアドレス指定可能なメモリ層がなければ、「場所Xには何があるか?」という回答は監査不可能です。 ememは以下の方法でこれを解決します:
すべての空間的事実に、両者がバイト単位で再計算可能な cid を付与する。
すべての読み取りに ed25519 で署名し、応答者の公開鍵を含めることで、レシートをオフラインで検証可能にする。
地球全体を正方形の cell64 アドレス(赤道付近で約10m × 10m、緯度21ビット × 経度22ビット — Sentinel-1/-2のネイティブピッチと一致)でカバーする。コーデックのバイグラムアルファベットはヒルベルト順序付けされているため、隣接するセルは視覚的に似た文字列になりますが、ジオメトリは正方形グリッドです。
クイックスタート
オプションA — Docker(Rustツールチェーン不要)
docker run --rm -p 5051:5051 -v emem-data:/var/emem \
ghcr.io/vortx-ai/emem:latest
curl -s http://localhost:5051/healthオプションB — HuggingFace Space
ホストされたインスタンスが huggingface.co/spaces/vortx-ai/emem にあります。
MCPクライアントから ${SPACE_URL}/mcp にアクセスして接続してください。
オプションC — ソースからビルド
# 1) Build the workspace.
cargo build --release --workspace
# 2) Run the server (defaults: 0.0.0.0:5051, persistent storage at ./var/emem).
EMEM_BIND=0.0.0.0:5051 EMEM_DATA=./var/emem ./target/release/emem-server
# 3) Hit it.
curl -s http://localhost:5051/health
curl -s -X POST http://localhost:5051/v1/recall \
-H 'content-type: application/json' \
-d '{"cell":"damO.zb000.xUti.zde78"}' # Mt FujiMCP / Claude Desktop / Cursor / Cline
貼り付け可能な設定ファイルが examples/ 以下にあります:
プラットフォーム | ファイル |
Claude Desktop |
|
Claude Code |
|
Cursor |
|
Cline (VS Code) |
|
OpenAI GPT |
|
LangChain |
|
LlamaIndex |
|
エージェント統合の完全なチュートリアルは docs/AGENTS.md にあります。
ライブエンドツーエンドデモ
2つのCLIバイナリが、実行中のサーバーに対してプロトコル全体をテストし、ステップごとのリクエスト・レスポンス・レシートファイルを var/demos/<UTC>/ に書き出します:
./target/release/emem-livedemo # synthetic data, every primitive
./target/release/emem-realdemo # real Copernicus DEM 30m S3 tilesサーバーは GET /v1/demos でトレースアーティファクトを公開します。
仕組み
┌──────────────┐ ┌────────────────────┐
user ──────► │ AI agent │ ──────► /v1/ │ emem responder │
│ (Claude / │ /mcp │ ┌──────────────┐ │
│ Cursor / │ /openapi.json │ │ ed25519 key │ │
│ GPT / etc) │ │ └──────────────┘ │
└──────┬───────┘ │ ┌──────────────┐ │
│ │ │ sled cache │ │
│ signed receipt │ └──────────────┘ │
▼ │ ┌──────────────┐ │
┌──────────────┐ │ │ merkle log │ │
│ user reply │ │ └──────────────┘ │
│ + cid │ │ ┌──────────────┐ │
└──────────────┘ │ │ vsicurl COG │ ──► open data
│ └──────────────┘ │ (Cop-DEM, JRC,
└────────────────────┘ Hansen, ESA…)アドレス代数(トークンコスト)
フィールド | ビット | ワイヤー形式 | トークン |
| 64 | 4 BPE バイグラム | ≤ 4 |
| 64 | base32 short | ≤ 2 |
| 1792 D fp16 | 12バイトプレフィックス | ≤ 3 |
| 32 B | 8バイトプレフィックス | ≤ 3 |
暗号: blake3ハッシュ、ed25519署名、base32-nopad-lowercase CID。
レシートは blake3(request_id || served_at || primitive || cells || fact_cids) に対して署名されるため、クライアントは /.well-known/emem.json にある応答者の公開鍵を使用してオフラインで検証できます。
完全な数学的背景とアーキテクチャは docs/WHITEPAPER.md を参照してください。 ワイヤーフォーマットの仕様は docs/SPEC.md にあります。
オープンソース、オープンデータ
ememはオープンソースの依存関係のみで構成され、デフォルトのビルドではオープンデータプロバイダーからのみ読み取ります。 APIキー、オペレーターの認証情報、SaaSへのロックインはありません。
項目 | 取り扱い |
コードライセンス | Apache-2.0 (本リポジトリ) |
クレートライセンス | すべての依存関係は MIT / Apache-2.0 / BSD / ISC — NOTICE を参照 |
データライセンス | Copernicus DEM (オープン), JRC GSW (CC-BY 4.0), Hansen GFC (オープン), ESA WorldCover (CC-BY 4.0), GHSL / WorldPop (CC-BY 4.0), OSM (ODbL) — NOTICE を参照 |
認証 | L0/L1読み取りはなし; L2書き込みにはed25519アテスターキーを使用 |
トランスポート | インプロセスrustls + Let's Encrypt ACMEによるHTTPS (Cloudflareなし、プロキシなし) |
ワークスペースレイアウト
emem/
├── Cargo.toml # workspace root
├── crates/
│ ├── emem-core/ # types, manifests, errors
│ ├── emem-codec/ # cell64, cid64, vec64, hilbert
│ ├── emem-fact/ # canonical CBOR + facts + receipts
│ ├── emem-claim/ # structured claims, verify outcomes
│ ├── emem-cache/ # sled hot cache (cell64 → cid64 → fact)
│ ├── emem-fetch/ # vsicurl Range reads, source connectors
│ ├── emem-storage/ # Storage trait, append-only merkle log
│ ├── emem-cubes/ # 1792-D voxel cube loader (legacy AgriSynth bootstrap)
│ ├── emem-primitives/ # recall, compare, find_similar, …
│ ├── emem-attest/ # merkle root, batch verify
│ ├── emem-intent/ # intent → plan
│ ├── emem-mcp/ # MCP tool surface
│ ├── emem-api-rest/ # axum router + OpenAPI + content nego
│ └── emem-cli/ # emem-server, emem-livedemo, emem-realdemo
├── docs/ # SPEC, WHITEPAPER, AGENTS, DEPLOY
├── examples/ # paste-ready MCP configs
└── web/ # landing surface (HTML, JSON, llms.txt)デプロイ
フルマルチチャネル展開(GitHub公開、GHCR、Docker Hubミラー、HuggingFace Space、MCPサーバーレジストリ、awesome-mcp-serversへのPR)については、docs/GO_LIVE.md に従ってください。
自己ホスト型のベアメタル emem.dev スタイルのインスタンスのデプロイ全容については docs/DEPLOY.md を参照してください。
emem.devの要約:
EMEM_TLS_DOMAINS=emem.dev,www.emem.dev EMEM_TLS_CONTACT=mailto:avijeet@vortx.ai ./target/release/emem-serverクラウドのセキュリティリストで
:443を開くsetcap 'cap_net_bind_service=+ep' ./target/release/emem-serveremem.devのAレコードをホストのパブリックIPに向ける — 以上。
サーバーは rustls-acme / TLS-ALPN-01 を介して独自のTLS + Let's Encrypt ACMEを実行します(:443のみが必要。:80、Cloudflare、Caddyは不要)。
貢献
IssueやPRを歓迎します。開発ループについては CONTRIBUTING.md、行動規範については CODE_OF_CONDUCT.md、脆弱性開示については SECURITY.md を参照してください。
ライセンス
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/Vortx-AI/emem'
If you have feedback or need assistance with the MCP directory API, please join our Discord server