これはNotion MCP Challengeへの投稿です
作ったもの
今すぐNotionのワークスペースを開いてください。ページをスクロールしてみましょう。そこにある「エンジニアリング上の知性」の割合はどれくらいでしょうか。議事録ではありません。仕様書でもありません。実際の、構造化され、クエリ可能な知性——パフォーマンスの基準値、セキュリティ監査の履歴、アーキテクチャ上の意思決定が現実から少しずつズレていく様子、あなたの実コードベースから生成されるオンボーディングのトラック、リポジトリの重要なバイタルサインを6つの異なる次元で統合して合成したヘルススコア。
ほとんどのチームにとって答えは、ほぼゼロです。
でもそれは変です。なぜなら、すべてのエンジニアリングチームは、毎日大量のシグナルを生み出しているからです。コミット、プルリクエスト、依存関係の更新、ベンチマークの回帰、セキュリティの脆弱性、現実からゆっくりとズレていくアーキテクチャ上の意思決定——それらはすべてGitHubを流れていて、誰も読まない通知を生成し続け、48時間以内に虚空へ消えていきます。
ENGRAMは、そのシグナルが消えていくのを見ていられなくなったことがきっかけで生まれました。
中核となるアイデア
ENGRAMは、Rustで完全に作られたセルフホスト型のエンジニアリング知性プラットフォームです。バイナリは1つ。これを実行すると、GitHubリポジトリをウェブフックで監視し、あらゆるイベントをClaudeを使った9つの専門AIエージェントにルーティングし、構造化されたリレーショナルな知性を相互に接続された23個のNotionデータベースに直接書き込みます。
「見に行くのを忘れがちな」SaaSのダッシュボードはありません。保守するための別Postgresインスタンスもありません。AM2時にデバッグする同期レイヤーもありません。エンジニアリングの知識は、チームがすでに働いている場所——Notionに存在します。クエリ可能で、フィルタ可能で、共有可能。そして、フラットなデータをナレッジグラフへ変える、データベース横断のリレーションでつながっています。
1息でわかるアーキテクチャ
GitHub Push/PR/Release
|
v
ENGRAM Core (axum + tokio)
|
|---> Decisions Agent --> Notion: RFCs, Comments, Decision Drift
|---> Pulse Agent --> Notion: Benchmarks, Regressions, Baselines
|---> Shield Agent --> Notion: Dependencies, Audit Runs, CVEs
|---> Atlas Agent --> Notion: Modules, Onboarding Tracks, Knowledge Gaps
|---> Vault Agent --> Notion: Env Configs, Secret Rotation
|---> Review Agent --> Notion: PR Reviews, Patterns, Tech Debt
|---> Health Agent --> Notion: Health Scores, Weekly Digests
|---> Timeline Agent --> Notion: Events, Cross-Agent Correlation
|---> Release Agent --> Notion: Release Notes, Changelogs
単一のpushイベントが、同時に5つ以上のデータベースへの書き込みを引き起こすことがあります——ベンチマーク結果、回帰アラート、更新されたヘルススコア、新しいタイムラインのエントリ、更新されたモジュールマップ。知性は、すべてのイベントとともに増幅していきます。
9つの知性レイヤー
それぞれのエージェントは、特定の領域に特化した分析担当です。「モノリシックな『すべてを分析する』プロンプト」ではありません。9つの別々の、ドメインの専門家としてのパイプラインがあり、それぞれ独自のNotionデータベースのスキーマ、独自のClaudeプロンプト、独自の参照(クロスリファレンス)ロジックを持っています。
| # | レイヤー | 何をするか | Notionデータベース |
|---|---|---|---|
| 1 | Decisions | PRからアーキテクチャ上の意思決定を抽出し、RFCライフサイクルを追跡し、古くなった提案をフラグ付けし、時間の経過による意思決定のドリフトをスコア化する | RFCs, RFC Comments |
| 2 | Pulse | CIのベンチマーク出力を解析し、移動(ローリング)式のパフォーマンス基準値を維持し、本番に届く前に回帰を検出する | Benchmarks, Regressions, Performance Baselines |
| 3 | Shield | 依存関係の監査を実行し、監査実行ごとにCVEsを重複排除し、重大度を分類し、重大な脆弱性について自動でRFCを作成する | Dependencies, Audit Runs |
| 4 | Atlas | コードベースを論理的なモジュールへマッピングし、新しい貢献者向けのステップバイステップのオンボーディングトラックを生成し、知識のギャップを特定する | Modules, Onboarding Tracks, Onboarding Steps, Knowledge Gaps |
| 5 | Vault | デプロイ間で環境設定の差分を比較し、シークレットのローテーションスケジュールを追跡し、資格情報が古くなったときにアラートする | Env Configs, Secret Rotation Logs |
| 6 | Review | PRレビューコメントを分析して繰り返しのパターンを抽出し、アンチパターンを取り出し、頻繁に指摘される問題を技術的負債(tech debt)項目として昇格させる | PR Reviews, Review Patterns, Tech Debt |
| 7 | Health | コミットの速度、マージ時間、テストカバレッジ、未解決の課題から複合的なヘルススコアを計算し、週次のエンジニアリングダイジェストを生成する | Health Reports, Engineering Digests |
| 8 | Timeline | クロスエージェントのイベントタイムラインを構築し、9つのすべてのレイヤーにまたがる変更を相関付けし、変更不能(イミュータブル)な監査履歴を維持する | Events |
| 9 | Release | マージされたPRからリリースノートを自動生成し、変更をタイプ別に分類し、AIの準備状況に関する評価とマイグレーションノートを作成する | Releases, Changelogs |
AIの解釈——データだけでなく、分析
ダッシュボード内のすべてのデータテーブルは、Notionに保存されたAI生成の分析を表示するクリックして詳細行を展開する機能に対応しています。これは「あとからクエリする」チャットボットではありません。分析は各イベントごとに1回、取り込み時に実行され、その結果はあなたのNotionワークスペースに永続的に保存されます。
- Decisions:意思決定の根拠、重大度タグ付きのドリフトスコア、何が変わったのかを説明するドリフトノート
- Shield:CVEごとのAIトリアージ推奨(リスクの文脈と、修正優先度を含む)
- Review:品質スコア(0〜100)と、完全なAIレビュー草案
- Atlas:各モジュールのAIによる完全な要約、コード参照としての主要ファイル
- Vault:機密性の分類、各設定変数の目的とリスクに関するAI分析
- Releases:AIの準備状況の評価、生成されたリリースノート、破壊的変更のためのマイグレーションノート
- Pulse:回帰ごとの影響分析、解決のためのAI推奨
- Health:クロスレイヤーの統合から抽出された重要なリスクと重要な成果
これが他と違う点
単一バイナリ。 約15MBのRust実行ファイルです。ダッシュボードはrust-embedによってバイナリにコンパイルされています。設定テンプレートは埋め込まれており、初回実行時に自動で抽出されます。Windowsビルドでは、ENGRAMのアイコンが.exeに組み込まれています。Dockerもありません。Nodeもありません。Pythonランタイムもありません。ダウンロードして実行し、ブラウザを開くだけです。
設定ファイルゼロ。 埋め込まれたダッシュボードのセットアップウィザードが、すべてを案内します——Notion連携トークン、GitHub PAT、Claude APIキー。管理するための.envファイルはありません。すべてがengram.tomlに保存され、バイナリがあなたのために生成します。
ポーリングではなく、ウェブフック駆動。 ENGRAMは、HMAC-SHA256の検証付きでウェブフックを通じてリアルタイムのGitHubイベントを受け取ります。pushがトリガーとなり、cronジョブが起きるのを待つのではなく、数秒以内に分析が走ります。
Notion はデータベースです。 Postgres もありません。SQLite もありません。Redis もありません。すべての読み書きは Notion API を通ります。あなたのデータは常に Notion にあります——検索可能で、共有でき、別のツールを学ぶよう頼まなくてもチーム全体に見える状態です。
デモモード。 プレゼンテーションや動画では、demo.js スクリプトが 23 個すべてのデータベースにわたって、現実的なモックデータを読み込みます。これは rust-embed の #[exclude] ディレクティブによって本番用バイナリから除外されています。URL に ?demo を付けて読み込んでください。
背景
私は Rust でものを作ります。ツールが考える人のあり方を形作ると信じているからです。所有権、ライフタイム、ゼロコスト抽象化という制約は、あなたが「何ができるか」だけでなく、「実際に何を構築しているのか」——メモリをどう使っているのか、失敗にどう対処するのか、プレッシャー下でどう振る舞うのか——を理解することを強制します。
ENGRAM は問いから始まりました。チームが毎日生み出す知性が、単に GitHub の通知を通って流れて消えてしまうだけだとしたら? そして、あらゆるコミット、あらゆる PR レビュー、あらゆるセキュリティ監査が、チームがすでに暮らしているシステムの中に、構造化された痕跡として残るとしたら?
答えは、Rust の 9 個のクレート、思考には Claude、そして記憶には Notion でした。
Notion MCP チャレンジが、私に必要な制約を与えてくれました。「Notion を使う何かを作る」のではなく、「Notion が“耐荷重部材”として成り立つ何かを作る」こと。Notion を取り除くと、ただ機能が 1 つ消えるのではなく、永続化レイヤー全体が消えてしまう——その制約が ENGRAM を生みました。
動画デモ
セットアップの流れ(2 分以内)
./engramを実行——サーバーがlocalhost:3000で起動します- ダッシュボードを開く——セットアップウィザードが自動的に表示されます
- Notion のインテグレーション・トークンを貼り付ける — ENGRAM が、完全なスキーマ、リレーション、ロールアッププロパティ付きで 23 個すべてのデータベースを作成します
- GitHub トークンを貼り付ける — 追跡するリポジトリを設定します
- GitHub リポジトリの設定に Webhook URL を追加する
- Anthropic の API キーを貼り付ける — 9 つのエージェントがすべてオンラインになります
- コードをプッシュする — Notion が構造化された知性で満たされていくのを見てください
コードを見せてください
manojpisini
/
engram
ENGRAM は自己組織化するエンジニアリング知性プラットフォームです。GitHub リポジトリ、Notion ワークスペース、Claude AI を 1 つの自律システムとしてつなぎ、コードベースを継続的に解析して、構造化された知性を Notion に直接書き込みます。
Notion に刻まれたエンジニアリング知性。
クイックスタート · 仕組み · 知性レイヤー · ダッシュボード · デプロイ · セキュリティ
ENGRAM は自己組織化するエンジニアリング知性プラットフォームです。GitHub リポジトリ、Notion ワークスペース、そしてClaude AI を 1 つの自律システムとしてつなぎ、コードベースを継続的に分析して、構造化された知性を直接 Notion に書き込みます。
ポーリングなし。手作業のデータ入力なし。GitHub の Webhook がイベントを ENGRAM にプッシュし、9 つの専用 AI エージェントが Claude を使ってそれらを解釈します。そして、セキュリティ監査、パフォーマンスの回帰、アーキテクチャマップ、RFC のライフサイクル追跡、チームヘルスレポート、オンボーディングドキュメント——あらゆるインサイトが、Notion ワークスペース内の構造化され、検索可能で、リレーショナルなデータとして書き込まれます。
Notion は中枢神経系です。 すべての指標、すべての意思決定、あらゆる知性の断片は、ワークスペース内の 23 個の相互接続されたデータベースに存在します。
主な機能
-
単一バイナリ — ダッシュボード、設定テンプレート、Windows アイコンをすべて
rust-embedで埋め込みます。ダウンロードして実行するだけです。 - 9 個の AI…
テックスタック
| コンポーネント | テクノロジー | 理由 |
|---|---|---|
| コア実行基盤 | Rust、axum、tokio | 単一バイナリ、非同期Webhook処理、エージェントのファンアウトのためのブロードキャストチャネル |
| AIバックボーン | Claude API(claude-sonnet-4-20250514) | ドメイン固有の構造化出力で、9つすべての分析エージェントを駆動 |
| 永続化(Persistence) | MCPクライアント経由のNotion API | すべてのデータベース操作はNotionを経由する — ローカルDBなし、同期レイヤーなし |
| イベント取り込み | GitHub Webhooks | HMAC-SHA256署名検証付きの、リアルタイムなプッシュ/PR/リリースイベント |
| ダッシュボード | バニラHTML/JS、Chart.js | 単一ファイルのSPAをバイナリにコンパイル — ビルド手順ゼロ、依存ゼロ |
| 認証(Auth) | argon2 + JWT | 安全なパスワードハッシュ化と、トークンベースのセッション |
| パッケージング | GitHub Actions | クロスプラットフォームビルド:Linux(x86/ARM)、macOS(Intel/Apple Silicon)、Windows |
| クレート公開 | crates.io |
cargo install engram-core — 依存関係の順序に従って11個のクレートを公開 |
プロジェクト構成
engram/
├── crates/
│ ├── engram-core/ メインデーモン:axumサーバー、Webhookハンドラ、
│ │ ├── src/main.rs イベントルーター、スケジューラ、埋め込みダッシュボード
│ │ ├── src/webhook.rs HMAC検証、GitHubイベント解析
│ │ └── build.rs ダッシュボード埋め込み、Windowsアイコン、設定コピー
│ ├── engram-types/ 共通タイプ、設定、イベント、Notionスキーマ
│ ├── engram-decisions/ レイヤー1 — RFCライフサイクル、ドリフトスコアリング
│ ├── engram-pulse/ レイヤー2 — ベンチマーク追跡、回帰検出
│ ├── engram-shield/ レイヤー3 — セキュリティ監査、CVEトリアージ
│ ├── engram-atlas/ レイヤー4 — モジュールドキュメント、オンボーディング、知識ギャップ
│ ├── engram-vault/ レイヤー5 — 環境設定、シークレットローテーション
│ ├── engram-review/ レイヤー6 — PR分析、技術的負債、レビューのパターン
│ ├── engram-health/ レイヤー7 — ヘルススコアリング、週次ダイジェスト
│ ├── engram-timeline/ レイヤー8 — イベント相関、監査証跡
│ └── engram-release/ レイヤー9 — リリースノート、チェンジログ
├── dashboard/
│ ├── index.html 単一ページのダッシュボード(rust-embedで埋め込み)
│ └── demo.js デモ用のモックデータ(バイナリから除外)
├── .github/workflows/
│ ├── release.yml クロスプラットフォームのリリースビルド
│ ├── audit.yml セキュリティ監査 → Shieldエージェント
│ ├── benchmark.yml ベンチマーク → Pulseエージェント
│ └── engram-notify.yml PRイベント → Review、Decisions、Timelineエージェント
└── engram.toml.example 設定テンプレート(埋め込み、自動抽出)
ビルドシステム
engram-core の build.rs が、私が特に満足している点を1つ挙げるなら、これです。ビルド時に、ワークスペースの dashboard/ ディレクトリと engram.toml.example をクレートディレクトリへコピーするので、rust-embed の #[folder = "dashboard/"] が、ワークスペースでの開発ビルドでも cargo package のタールボールの中でも動作します(そこでは ../../dashboard/ が存在しません)。コピー時にデモデータは除外されます。同じ build.rs が winresource を使って、ENGRAMアイコンをWindows実行ファイルに埋め込みます。
ワンバイナリ。ダッシュボード同梱。設定テンプレート同梱。アイコン同梱。インストール不要、設定不要、忘れることなし。
Notion MCPの使い方
ここが私が最も気にしているセクションです。というのも、ここでアーキテクチャが成り立つかどうかが決まるからです。
NotionはENGRAMにおける表示レイヤーではありません。エクスポート先でもありません。「あると便利」な連携でもありません。Notionは永続化バックエンドそのものです。 それを取り除けば、ENGRAMにはデータベースがありません。保存領域がありません。状態がありません。システムが生成するあらゆるデータ — すべてのヘルススコア、すべてのCVEトリアージ、すべてのRFCドリフト計算、すべてのオンボーディングステップ — は Notion に書き込まれ、そして Notion から読み取られます。
1. 自動スキーマ作成 — 23のデータベース、手作業ゼロのセットアップ
セットアップウィザードで「Save & Initialize ENGRAM」をクリックすると、システムはNotionのワークスペース内に23個のデータベースを作成します。空のデータベースではありません。選択プロパティ、マルチセレクトのタグ、日付フィールド、数値カラム、URLリンク、リレーションプロパティ(データベース同士を結び付ける)、ロールアップ計算を備えた、完全に型付けされたスキーマです。
スキーマ定義は engram-types/src/notion_schema.rs にあります。すべてのデータベース操作は、engram-core/src/notion_client.rs にある NotionMcpClient 経由でルーティングされます。スキーマファイル先頭のコードコメントは、はっきりこう書いています:
すべてのDB操作はNotion MCPツールを使うこと — 生のNotion REST APIは決して使わない。
これがアーキテクチャ上の制約です。クライアントは1つ。プロトコルは1つ。唯一の情報源。
ドメインごとに分けた23個のデータベース:
| ドメイン | データベース |
|---|---|
| プロジェクト | Projects |
| 意思決定(Decisions) | RFCs、RFC Comments |
| パフォーマンス | Benchmarks、Regressions、Performance Baselines |
| セキュリティ | Dependencies、Audit Runs |
| 知識(Knowledge) | Modules、Onboarding Tracks、Onboarding Steps、Knowledge Gaps |
| 設定(Config) | Env Config、Config Snapshots、Secret Rotation Log |
| レビュー | PR Reviews、Review Playbook、Review Patterns、Tech Debt |
| ヘルス | Health Reports、Engineering Digest |
| タイムライン | Events |
| リリース | Releases |
2. リアルタイムなインテリジェンス書き込み — イベント駆動、バッチではない
GitHub webhookが発火すると、ENGRAMのイベントルーターはtokioのブロードキャストチャネルを通じて、それを9つのすべてのエージェントへ同時にブロードキャストします。各エージェントは:
- 生のGitHubイベントペイロードを受け取る
- ドメイン固有のプロンプトと関連データを使ってClaudeを呼び出す
- Claudeの構造化されたレスポンスを解析する
- 関連するNotionデータベースに1つ以上のページを書き込む
これは一晩動くバッチジョブではありません。main へのプッシュはベンチマーク分析、回帰検出、ヘルススコアの更新、タイムラインのエントリ、モジュールマップの変更をトリガーし、イベント発生から数秒以内にNotionへ書き込まれます。cronスケジューラは定期タスク(日次監査、週次ダイジェスト、RFCの鮮度チェック)を扱いますが、コアとなるインテリジェンスのループはWebhook駆動でリアルタイムです。
3. ダッシュボードはNotionを読み取る — ローカルキャッシュなし
ENGRAMのダッシュボードにはローカルDBがありません。開くと、ENGRAMのREST API経由でNotionへ問い合わせます。REST APIはNotionからリアルタイムに読み取ります。ヘルススコア、オンボーディングトラック、依存関係の監査、PRレビューのパターン — すべてがNotionのデータからライブにレンダリングされます。
つまり、チームはENGRAMのダッシュボード上で同じデータを見られるのに加えて、Notion上で直接データを見ることもできます。フィルタ、ソート、グループ化、共有は、チームが望む形に合わせられます。ダッシュボードは「レンズ」です。Notionが「情報源」になります。
4. データベース間のリレーション — ナレッジグラフ
これが、Notion連携を単なる「データベースへの書き込み」以上のものにしています。ENGRAMは、あなたのNotionワークスペースの中に接続されたナレッジグラフを構築します:
- RFCはPRにリンクする — アーキテクチャ上の意思決定を、それを実装するコードまで辿る
- 回帰(Regressions)はベースライン(Baselines)にリンクする — 正確なパフォーマンス差分と、それを引き起こしたコミットを見る
- オンボーディング手順(Onboarding Steps)はモジュール(Modules)にリンクする — それぞれの学習ステップが、教えるコードベースのモジュールを参照する
- 技術的負債(Tech Debt)はレビュー・パターン(Review Patterns)にリンクする — すべての負債項目が、それを指摘したレビュー・パターンへ遡れ、さらに出現頻度(回数)も確認できる
- 監査実行(Audit Runs)は依存関係(Dependencies)にリンクする — 脆弱性の検出結果を、特定の依存関係とバージョンに結び付ける
- タイムラインのイベント(Timeline Events)はソース・エージェントにリンクする — すべてのイベントに、それを生成したインテリジェンス層への帰属(アトリビューション)が含まれる
これらは飾りではありません。ロールアッププロパティを持つ、クエリ可能なリレーションです。「元の意思決定から20%以上ドリフトしたすべてのRFCを表示して」や「オンボーディングのカバレッジがゼロのモジュールはどれ?」といった問いに答えるNotionビューを構築できます。しかもNotionの外へ出る必要はありません。
5. このアーキテクチャで解放されるもの
Notionを「データベース」として扱わない場合、ENGRAMを構築するには次が必要になっていたはずです:
- 永続化のためのPostgreSQLまたはSQLiteデータベース
- 可視性のためにデータをNotionへミラーする同期レイヤー
- 双方向同期のための競合解決ロジック
- ダッシュボード用の別個のクエリAPI
- スキーマ変更のためのマイグレーションスクリプト
永続化レイヤーをNotionのみにすることで、それらすべてが消えます。読み取りと書き込みは1つの場所に集約されます。ユーザーのエンジニアリング・インテリジェンスは、すでに作業している場所に存在します。スキーマ変更はNotionデータベースのプロパティで行われます。間で同期するものがないので、同期は発生しません。
トレードオフは現実的です。Notion APIのレイテンシはローカルデータベースより高く、レート制限はスケールすると重要になります。しかしENGRAMが解決する課題――すでにNotion上で仕事をしているチームのための、構造化されたエンジニアリング・インテリジェンス――に対しては、そのトレードオフの価値は十分あります。データは常に参照可能で、常に共有可能で、常にあなたのチームが想定している場所にあります。
Rust、Claude、そしてNotionで構築。1つのバイナリ。23のデータベース。9つのAIエージェント。設定ファイルはゼロ。チームが毎日生み出すインテリジェンスを、あなたがすでに使っているワークスペース内で構造化し、保持する。





