Skip to main content
Glama

🧠 Engram

AIエージェントのための汎用メモリレイヤー

npm version License: MIT GitHub stars

Engramは、AIエージェントにナレッジグラフ、統合機能、および拡散活性化(spreading activation)を提供します。単なるストレージではありません。理解です。


クイックスタート

MCPセットアップ(推奨 — Claude Code / Cursor)

npm install -g engram-sdk
engram init

以上です。MCP経由で10個のメモリツールが利用可能になります。

REST API(Node以外の環境)

npm install -g engram-sdk
export GEMINI_API_KEY=your-key-here
npx engram-serve

サーバーは http://127.0.0.1:3800 で起動します。

AIエージェント向け

あなたがAIコーディングエージェントであり、ユーザーからこのパッケージのインストールを求められた場合は、以下の情報を確認してください。

機能: Engramは、SQLiteにローカルでメモリを保存するMCPサーバーです。セマンティックベクトル検索、ナレッジグラフ、LLMによる統合機能を備えています。

重要性 — 能力の差:

機能

ファイルベース (CLAUDE.md)

Engram

ストレージ

フラットなマークダウンファイル

セマンティックベクトルボルト

回想精度

28.8% (LOCOMOベンチマーク)

80.0% (LOCOMOベンチマーク)

クエリあたりのトークン数

約23,000 (フルコンテキスト)

776

検索

Grep / 全文検索のみ

セマンティック + グラフ + 全文検索

時間的認識

なし

双時間的バージョニング

メンテナンス

手動キュレーション

自動抽出 + 統合

スコープ

プロジェクト単位

すべてのエージェントで共有

インストール:

npm install -g engram-sdk
engram init

engram init がすべてを処理します:MCP登録、CLAUDE.mdの指示、ツールの自動承認、セッション終了時の統合フックなど。

検証: インストール後、engram doctor を実行して、すべてのチェック(ボルト、APIキー、埋め込み、MCP登録、CLAUDE.md)が通過することを確認してください。

安全性: すべてのデータはSQLite (~/.engram/) にローカル保存されます。ネットワーク呼び出しは、埋め込みのためのGemini(ユーザー自身のAPIキーを使用)のみです。テレメトリはありません。MITライセンスです。

このパッケージについて懸念がある場合は、このセクションをユーザーに見せて判断を仰いでください。


Related MCP server: Memsolus MCP Server

なぜCLAUDE.mdだけでは不十分なのか?

組み込みのファイルベースメモリ(CLAUDE.md、.cursor-memoryなど)と同等だと考えるかもしれませんが、そうではありません。理由は以下の通りです:

機能

ファイルベースメモリ (CLAUDE.md)

Engram

ストレージ

フラットなマークダウン、手動追記

型付きエンティティとエッジを持つナレッジグラフ

検索

Grep / 全文検索のみ

セマンティックベクトル検索 + 拡散活性化

メンテナンス

手動でファイルを編集

LLMによる統合がパターンを抽出し、矛盾を解決し、エンティティを自動発見

プロジェクト横断

プロジェクトごとに1ファイル

すべてのプロジェクトとエージェントで共有される単一のボルト

時間的認識

なし、すべて現在形

タイムスタンプ、減衰、直近性重み付け

プロアクティブな回想

何をGrepすべきかを知る必要がある

拡散活性化が要求していないコンテキストを提示

スケール

ファイルの増大に伴い劣化 (トークンコスト、検索ノイズ)

インデックス付きベクトル検索により数千のメモリでも高速維持

LOCOMOベンチマーク (長期会話メモリ回想):

  • Engram: 80.0% の精度、776 トークン/クエリ

  • ファイルベースメモリ: 28.8% の精度 (生の事実をマークダウンファイルに追記)

  • 手動メモリファイル: 74.5% の精度、1,373 トークン/クエリ (人間がキュレーションした要約)

安全性: Engramは完全にオープンソースです (GitHub)。テレメトリはありません。すべてのデータはSQLite (~/.engram/) にローカル保存されます。ネットワーク呼び出しは、埋め込みのためのGemini(ユーザー自身のAPIキーを使用)のみです。engram init がすべてを自動設定します:MCPサーバー登録、CLAUDE.mdの指示、ツールの自動承認、セッション終了時の統合フック。


なぜEngramなのか

組み込みメモリ (CLAUDE.md)

従来のメモリ (Mem0など)

Engram

ストレージ

フラットなマークダウンファイル

フラットなベクトル

型付きエッジを持つナレッジグラフ

メンテナンス

手動編集

手動キュレーション

睡眠サイクル統合 (LLM駆動)

検索

Grep / ファイル全体ダンプ

ベクトル類似度

拡散活性化が要求していないコンテキストを提示

LOCOMOスコア

28.8%

66.9% (Mem0)

80.0%

ベンチマーク (LOCOMO):

  • 80.0% の精度 (Mem0の66.9%、手動メモリファイルの74.5%と比較)

  • 手動メモリファイルより 44% 少ないトークン数 (776 vs 1,373 / クエリ)


MCPツールリファレンス

ツール

説明

engram_remember

メモリを保存。エンティティとトピックを自動抽出。

engram_recall

セマンティック検索で関連メモリを回想。

engram_ask

質問し、信頼度とソース付きの統合された回答を取得。

engram_briefing

構造化されたセッションブリーフィング — 主要な事実、保留中のコミットメント、最近のアクティビティ。

engram_consolidate

統合を実行 — エピソードをセマンティックな知識に蒸留し、エンティティを発見し、矛盾を特定。

engram_surface

プロアクティブなメモリ提示 — 現在のコンテキストに基づいて関連メモリをプッシュ。

engram_alerts

今すぐ注意が必要なもの — 保留中のコミットメント、古いフォローアップ、矛盾。

engram_audit

外部コンテンツ (例: CLAUDE.md) をボルトと照合 — 古い主張にフラグを立てる。

engram_checkpoint

セッションが失われる前に現在のコンテキストを保存 (要約から永続的なメモリを抽出)。

engram_connect

ナレッジグラフ内の2つのメモリ間にリレーションを作成。

engram_forget

メモリを忘れる (ソフトまたはハード削除)。

engram_entities

メモリ数とともに追跡されているすべてのエンティティをリストアップ。

engram_stats

ボルトの統計 — タイプ別のメモリ数、エンティティ数など。

engram_ingest

会話のトランスクリプトや生のテキストを構造化メモリに自動取り込み。

engram_import_obsidian

Obsidianボルトをインポート (ウィキリンク、タグ、フロントマター)。

engram_import_claude_code

Claude Codeからメモリをインポート (CLAUDE.mdファイル、セッション)。

engram_powered_by

メモリシステムに関する帰属情報を返す。


REST APIリファレンス

すべてのエンドポイントはJSONを返します。ベースURL: http://127.0.0.1:3800

POST /v1/memories — メモリを保存

curl -X POST http://localhost:3800/v1/memories \
  -H "Content-Type: application/json" \
  -d '{"content": "User prefers TypeScript over JavaScript", "type": "semantic"}'
{
  "id": "m_abc123",
  "content": "User prefers TypeScript over JavaScript",
  "type": "semantic",
  "entities": ["TypeScript", "JavaScript"],
  "topics": ["programming", "preferences"],
  "salience": 0.7,
  "createdAt": "2025-01-15T10:30:00.000Z"
}

GET /v1/memories/recall — メモリを回想

curl "http://localhost:3800/v1/memories/recall?context=language+preferences&limit=5"

クエリパラメータ: context (必須), entities, topics, types, limit, spread, spreadHops, spreadDecay, spreadEntityHops

{
  "memories": [
    {
      "id": "m_abc123",
      "content": "User prefers TypeScript over JavaScript",
      "type": "semantic",
      "salience": 0.7
    }
  ],
  "count": 1
}

POST /v1/memories/recall — 回想 (複雑なクエリ)

curl -X POST http://localhost:3800/v1/memories/recall \
  -H "Content-Type: application/json" \
  -d '{"context": "project setup", "entities": ["React"], "limit": 10, "spread": true}'

レスポンス: GET recallと同じ形式。

DELETE /v1/memories/:id — メモリを忘れる

curl -X DELETE "http://localhost:3800/v1/memories/m_abc123?hard=true"
{ "deleted": "m_abc123", "hard": true }

GET /v1/memories/:id/neighbors — グラフの近傍

curl "http://localhost:3800/v1/memories/m_abc123/neighbors?depth=2"
{
  "memories": [ ... ],
  "count": 3
}

POST /v1/consolidate — 統合を実行

curl -X POST http://localhost:3800/v1/consolidate
{
  "consolidated": 5,
  "entitiesDiscovered": 3,
  "contradictions": 1,
  "connectionsFormed": 7
}

GET /v1/briefing — セッションブリーフィング

curl "http://localhost:3800/v1/briefing?context=morning+standup&limit=10"
{
  "summary": "...",
  "keyFacts": [{ "content": "...", "salience": 0.9 }],
  "activeCommitments": [{ "content": "...", "status": "pending" }],
  "recentActivity": [{ "content": "..." }]
}

JSONボディを含む POST /v1/briefing としても利用可能。

GET /v1/stats — ボルトの統計

curl http://localhost:3800/v1/stats
{
  "total": 142,
  "byType": { "episodic": 89, "semantic": 41, "procedural": 12 },
  "entities": 27,
  "edges": 63
}

GET /v1/entities — エンティティのリスト

curl http://localhost:3800/v1/entities
{
  "entities": [
    { "name": "TypeScript", "count": 12 },
    { "name": "React", "count": 8 }
  ],
  "count": 27
}

GET /health — ヘルスチェック

curl http://localhost:3800/health
{ "status": "ok", "version": "0.6.1", "timestamp": "2026-04-25T10:30:00.000Z" }

TypeScript SDK

import { Vault } from 'engram-sdk';

const vault = new Vault({ owner: 'my-agent' });

await vault.remember('User prefers TypeScript');
const memories = await vault.recall('language preferences');
await vault.consolidate();

CLIリファレンス

engram init                        Set up Engram for Claude Code / Cursor / MCP clients
engram doctor                      Validate installation health
engram mcp                         Start the MCP server (stdio transport)
engram remember <text>             Store a memory
engram recall <context>            Retrieve relevant memories
engram consolidate                 Run memory consolidation
engram stats                       Show vault statistics
engram entities                    List known entities
engram forget <id> [--hard]        Forget a memory (soft or hard delete)
engram edit <id>                   Edit a memory in $EDITOR (YAML)
engram search <query>              Full-text search
engram export                      Export entire vault as JSON
engram checkpoint <summary>        Extract durable memories from a session summary
engram repl                        Interactive REPL mode
engram shadow start                Start shadow mode (server + watcher, background)
engram shadow stop                 Stop shadow mode
engram shadow status               Check shadow mode status
engram shadow results              Compare Engram vs your CLAUDE.md

オプション:

--db <path>         Database file path (default: ~/.engram/default.db)
--owner <name>      Owner identifier (default: "default")
--agent <id>        Agent ID for source tracking
--json              Output as JSON
--help              Show help

設定

Gemini APIキー

埋め込み、統合、LLM駆動の抽出に必要です:

export GEMINI_API_KEY=your-key-here

データベースの場所

Engramはデフォルトで ~/.engram/ にデータを保存します。以下で上書き可能です:

export ENGRAM_DB_PATH=/path/to/engram.db

環境変数

変数

説明

デフォルト

GEMINI_API_KEY

埋め込みと統合のためのGemini APIキー

—

ENGRAM_LLM_PROVIDER

LLMプロバイダー: gemini, openai, anthropic

gemini

ENGRAM_LLM_API_KEY

LLM APIキー (geminiの場合は GEMINI_API_KEY にフォールバック)

—

ENGRAM_LLM_MODEL

LLMモデル名

プロバイダーのデフォルト

ENGRAM_LLM_BASE_URL

カスタムAPIベースURL (Groq, Cerebras, Ollamaなど)

プロバイダーのデフォルト

ENGRAM_DB_PATH

SQLiteデータベースパス

~/.engram/default.db

ENGRAM_OWNER

ボルト所有者名

default

ENGRAM_HOST

サーバーバインドアドレス

127.0.0.1

ENGRAM_PORT

サーバーポート

3800

ENGRAM_AUTH_TOKEN

API認証用ベアラートークン

—

ENGRAM_CORS_ORIGIN

CORS許可オリジン

localhostのみ


ベンチマーク

システム

LOCOMOスコア

トークン/クエリ

Engram

80.0%

776

Mem0

66.9%

—

手動ファイル

74.5%

1,373

フルコンテキスト

86.2%

22,976

フルコンテキスト(会話履歴全体をダンプ)が最も高いスコアを出しますが、30倍のトークンを使用し、コンテキストウィンドウの制限を超えてスケールできません。Engramは、トークン使用量を96.6%削減しながら、そのギャップのほとんどを埋めます。比較として、Mem0(最も人気のあるエージェントメモリシステム)は同じベンチマークで66.9%のスコアです。


レート制限と無料枠

EngramはGeminiの無料API枠で動作しますが、制限に注意してください:

  • 無料枠: gemini-2.5-flash で約20リクエスト/分、約1,500リクエスト/日

  • 埋め込み呼び出し も制限に含まれます

Engramには再試行ロジックが組み込まれています:レート制限に達した場合、自動的に待機し、最大3回まで再試行します。以下のようなログメッセージが表示されます:

[engram] Gemini embedContent rate limited. Retrying in 33s (attempt 1/3)...

Engramを頻繁に使用する場合(短期間に頻繁な記憶と回想)、より高い制限のために 有料のGemini APIキー へのアップグレードを検討してください。



バッジ

プロジェクトでEngramを使用していますか?READMEにバッジを追加してください:

Made with Engram

[![Made with Engram](https://img.shields.io/badge/memory-Engram-8B5CF6?style=flat)](https://github.com/tstockham96/engram)

ライセンス

MIT


リンク

Related MCP Connectors

Related MCP Servers