Skip to main content
Glama

emem — AIエージェントのための地球記憶プロトコル

地球上のあらゆる場所の記憶を、引用可能かつコンテンツアドレス指定可能で、署名付きで記録します。 1つのプロトコル。8つの読み取りプリミティブ。ed25519レシート。L0/L1にキーは不要。 Apache-2.0ライセンス。純粋なRust製、オープンデータのみを使用。

License Rust MCP OpenAPI Container HF Space CI

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 Fuji

MCP / Claude Desktop / Cursor / Cline

貼り付け可能な設定ファイルが examples/ 以下にあります:

プラットフォーム

ファイル

Claude Desktop

examples/claude-desktop.json

Claude Code

examples/claude-code.mcp.json

Cursor

examples/cursor.mcp.json

Cline (VS Code)

examples/cline.mcp.json

OpenAI GPT

examples/openai-gpt-action.json

LangChain

examples/langchain.py

LlamaIndex

examples/llamaindex.py

エージェント統合の完全なチュートリアルは 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…)

アドレス代数(トークンコスト)

フィールド

ビット

ワイヤー形式

トークン

cell

64

4 BPE バイグラム

≤ 4

tslot

64

base32 short

≤ 2

vec

1792 D fp16

12バイトプレフィックス

≤ 3

cid

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の要約:

  1. EMEM_TLS_DOMAINS=emem.dev,www.emem.dev EMEM_TLS_CONTACT=mailto:avijeet@vortx.ai ./target/release/emem-server

  2. クラウドのセキュリティリストで :443 を開く

  3. setcap 'cap_net_bind_service=+ep' ./target/release/emem-server

  4. emem.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 を参照してください。

ライセンス

Apache License 2.0 — LICENSE および NOTICE を参照。

A
license - permissive license
-
quality - not tested
C
maintenance

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