lattice
Lattice
バックログは、プランであるかのような顔をした、ただのフラットリストにすぎない。
Lattice は、GitHub の Issue に隠された依存関係グラフを推論し、その結果として得られたスケジュールを MCP 経由でコーディングエージェントに提供する。つまり、1 回の高コストな推論パスが、それ以降の低コストなエージェント実行すべてのスケジューラになる。
この仕組みは自動で動く。Issue イベントとスケジュールがトリガーになり、誰かが何かをクリックする必要はない。
GitHub への書き込みは一切行われない。 Issue はデータソースであって、データストアではない。
Microsoft Hackathon 2026 · Challenge: Collaboration using GitHub Planning & Tracking Tools in the Agentic Age
問題
Issue は相互に依存している。API は UI がそれを消費する前に、スキーママイグレーションはクエリの前に、型契約はそれをインポートする 4 つのモノの前に存在していなければならない。人間はその順序を頭の中に抱えているだけで、書き出されることは一度もない。
それが許容されていたのは、人間が次のチケットを選んでいた時代だ。チームメイトがエージェントになった瞬間、それはもう許容できなくなる。
フラットなバックログを渡されたエージェントは、誤った順序で誤った作業をやってしまう。まだ存在しないエンドポイントに対してフロントエンドを書き、発揮の良いモデルでも、その出力はただのゴミになる。
エージェントを実行するたびに、同じ順序をゼロから導出し直す。その振り分け(トリアージ)はリクエストの中で最も高コストな部分なのに、N 回繰り返されて毎回捨てられている。
何が並行実行しても安全かを示す情報がどこにもない。これは、複数のエージェントを並べる意味そのものだ。
GitHub にはこのためのデータモデルがすでにあり、しかしそれは空だ。 Issue の依存関係(blocked_by / blocking)は 2025 年に GA となったもので、REST・GraphQL・gh をフルサポートしている。これを記入する人間はほとんどいない。なぜなら記入は手作業で、しかもペアごとに行う必要があり、O(n²) コストの人的作業に対して、その恩恵が個々人に実感されないからだ。それに、仮に 記入された としても、GitHub はそれをフラットなテキストリストとして表示するだけで、グラフビューはまだ存在しない。
つまり、スキーマは存在するが、データは空であり、ビューも存在しない。
Related MCP server: agentic-sdlc-mcp
Lattice がやること
GitHub (read only)
issues · blocked_by · sub-issues
│
▼
┌──────────────────────────────────────┐
│ BACKEND │
│ inference ──► the full graph │
│ │ │
│ REST API ◄────┴────► MCP │
└──────────┬─────────────────┬─────────┘
│ REST │ MCP
▼ ▼
interactive graph coding agents
(human: what's next) (agent: what's next,
what's parallel, claim)アーキテクチャ上のコミットメントは 1 つだけです。GitHub はデータソースであり、データストアではありません。 Lattice は実行のたびに Issue、ネイティブの blocked_by、サブイシューの階層を読み取ることだけを行い、何も書き戻しません。依存関係も、コメントも、ラベルも、です。
これにより、システムは構造として非破壊であり、それが無監視で動作する資格を得ています。共有リポジトリを壊してしまう自動書き込みも、誰かが手で記録した依存関係を削除したしまうプルーニングも存在しないからです。推論が悪かったときに起こる最悪のケースとは、次回の実行で修正されるまでの間、われわれの提案順序がすれ違ってしまうだけのことです。
書き込み経路は逆向きです。人間が書き込み、Lattice が読み取る。 グラフに上書きしたい人は、GitHub の blocked_by を編集するだけで良く、次回の実行ではそれを、モデルが覆すことのできない「正解(ground truth)」として扱います。
なぜこれが課題の答えなのか
ハッカソンの問いかけはこうです: 「チームの一部が人間ではないとき、本当にコラボレーションとは何か?」
人間と人間ではないチームメイトのあいだの調整、それはスケジューリングです。そして、決断の置かに人間の承認を必要とするスケジューラは、スケジューラではありません。それは、余計な手間が増えただけのキューです。
そこで Lattice は、順序を自律的かつ継続的に維持し、両方のチームメイトがどちらも同じグラフから読み取れるようにします。エージェントはそれを消費するだけではなく、まだ記録されていないブロッカーに当たったエージェントはそのことを報告をかえして、グラフは次の依頼者にとってさらに正確で使えます。
共有ワークスペースは、誰かが使うほど改善される。人間はグラフの前に立って管理してるわけではなく、むしろ修正することでコントロールを維持します。エッジを固定する、エッジを抑制する、あるいは GitHub で blocked_by を編集する、だけです。次の実行はそれを正解として拾い上げます。
ステータス
エンドツーエンドで動作しています。自分自身の 54 件の Issue バックログで試しの解析をおこなったたところ、モデルリクエスト一回で 63 の候補エッジが得られ、40 がバリデーションを終え、16 がブロッキングとなり、合計 3 つのウェーブで実行されました。
既存:パイプライン、ストア、REST API、MCP サーバー、対話的なグラフ、エージェントのループが。
未実装:統合的な GitHub Action、DEMO_MODE のフィクスチャ、デプロイ。
クイックスタート
外を眺めるのにデータベースも GitHub トークンも不要。ストアは PGlite(組み込み型の本物の Postgres)が備わっていて、GITHUB_TOKEN が未設定なら gh auth token が自動的に使われます。
npm install
npm run build # types + backend (tsc) + web (next build)
npm test # 11 graph unit tests, then writes artifacts/graph.json起動する
ターミナルは 2 つ必要です。バックエンドは コンパイル済み のものを使い、そのパスにはネイティブバイナリビルドが含まれておらず、それは問題にならない:
# terminal 1
npm run build && npm start -w @lattice/backend # :3001
# terminal 2
npm run dev -w @lattice/web # :3000http://localhost:3000 を開いて、公開の GitHub リポジトリの URL を張り付けてください。すると解析が実行です。解析済みのリポジトリは、同じページで一覧になります。
npm run dev(両サービスをホットリロード付き)はtsxを使用します。もしThe package "@esbuild/darwin-arm64" could not be foundと言うエラーが発生した場合は、npm がオプションバイナリを落としたかなどが考えられ、rm -rf node_modules package-lock.json && npm install --include=optionalで修正されます。前述のコンパイル済みパスではこの問題を完全に避けられます。
リポジトリを解析する
OpenRouter のキーが必要になります。.env.example を .env にコピーし、OPENROUTER_API_KEY・LATTICE_OWNER・LATTICE_REPO を設定してください。
npm run analyze # ~1 model request for a 50-issue backlogこれには数分かかると想定してください:OX alpha は推論専用のモデルで、バックログ全体を 1 回の呼び出しで処理します。再実行は即座に終わるのです。応答はプロンプトハッシュでキャッシュされ、これにより 1 日 50 リクエストのフリーティア枠も守られます。
Command(コマンド) | 実行される事柄 |
| 3 つのパッケージをすべてビルドする |
| グラフの単体テストを実行し、 |
|
|
| エージェント 3 つが MCP を介した作業を要求し、リースのアトミック性を検証 |
| コンパイル済みバックエンドを :3001 で起動 |
| Web アプリを :3000 で起動 |
DATABASE_URL を設定すれば、組み込みではなくホスト Postgres(Neon)を使用できます。
バックステンドは kill -9 ではなく Ctrl-C で止めてください
PGlite は実際の Postgres のデータディレクトリへ書き込みます。書き込み途中に強制終了すると破損し、ストアが失われます。サーバーは SIGINT/SIGTERM でデータベースを閉じるため、Ctrl-C であれば安全です。しっかり壊れてしまったなら、npm run import -w @lattice/backend を実行すれば artifacts/graph.json から最後のグラフを復元できます。実行にモデルリクエストも GitHub トークンもこのとき必要ありません。
ブラウザなしで確認する
curl localhost:3001/api/health
curl "localhost:3001/api/graph" | jq '.stats'
curl -X POST localhost:3001/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'MCP サーバの利用
バックエンドは REST API に加えて、Streamable HTTP の /mcp 上で MCP を提供します。バックエンドを起動すればもうそちらで使えるので、あとは別のプロセスはありません。
npm run build && npm start -w @lattice/backend # :3001, MCP at /mcpClaude Code
claude mcp add --scope local --transport http lattice http://localhost:3001/mcp
claude mcp list # lattice: ... - ✔ Connectedリポジトリにコミットされた .mcp.json は、クローンして実行してる人たちについても同様の動作を提供します(という訳で、claude はサーバーを自動的に見つけて起動します)。
Copilot coding agent
Copilot のクラウドエージェントは パブリック URL が必要なので、バックエンドをデプロイしてください(issue #52)。Lattice インスタンスに対して別のリポジトリを設定込みの完全な手順は docs/13-using-lattice-mcp.mdにあります。
COPILOT_MCP_LATTICE_TOKEN が設定されていない間は認証は完全に無効となり、これによりローカル運用が設定不要です。バックエンドを外部公開する際には、すでに説明した値を必ず手に入れて設定してください。
他のクライアント
これには MCP Streamable HTTP が使えます。curl でも、SDK でも、色々なものとペアにします。url に http://localhost:3001/mcp を指定してください。 `こんな内容を記入します。
npx @modelcontextprotocol/inspector # then connect to http://localhost:3001/mcp双方向
トップダウン——「自分は何をやるべき?」
list_ready_work issues nothing is blocking, ranked by how much they unblock
claim_next_issue take one atomically, with a briefing; two agents never collide
report_progress returns what your work just unblockedボトムアップ——「#6 のリリースを目指したいのですが、その前に は何が必要ですか?」
plan_for_issue the whole prerequisite chain, in build order
get_issue_context blockers, dependents, and what they need from you
explain_dependency why an edge exists, with the quote it was inferred from
report_dependency a blocker you discovered; enters the graph for everyoneエージェントにターゲットを渡すと、順序立てされた計画を取得できます:
plan_for_issue(6)
2 issue(s) must land before #6, in 2 step(s).
step 1: #3 Put Adyen behind a PaymentProvider interface
step 2: #4 Checkout session endpoint returns a provider-agnostic session
then #6 Native checkout in the appステップ内のすべての内容は独立しているので、順序は自由、同時に複数のエージェントにも渡せます。Web アプリのイシューパネルには同じプランが表示され、コピーボタンからエージェントへのプロンプトとして渡すことができます。
機械読み可能なグラフ
npm test は artifacts/graph.json と artifacts/schedule.json を出力します。これによりスケジュールが差分可能になります。サイクルを打ち切るための重みを変更すると、その変化はグラフが 何となく変わったというぼんやりした感覚ではなく、レビュー可能な超越として表示されます。これはこのリポジトリの中で最も低コストで可能な統合テストでもあります。ファイルが正しい形で非巡回的であれば、純粋なコア全体が正しく配線されているということです。
アーキテクチャ概要
npm-workspaces モノレポには 2 つのサービスが含まれています:
apps/backend— GitHub を読み取り、推論を実行し、ストアを所有、REST API とMCP サーバーを公開しています。apps/web— インタラクティブなグラフ。バックエンド URL と API トークンだけを持っていて、それ以外は持ちません:データベースの URL も GitHub トークンもモデルキーも含まれません。
詳細は docs/01-architecture.md をご覧ください。
Documentation / ドキュメント
ドキュメント | 内容 |
ハッカソンのコンテキスト、審査基準、提出条件 | |
コンポーネント対策、データフロー関係、state の対応、スタック戦略選択 | |
推論の 5 層、LLM プロンプト、誤魔法陣のガード手 | |
Tarjan、サイクル破除、ウェーブ、クリティカルパス、ブラスト半径 | |
エージェントが呼び出す 7 個の MCP ツール | |
チームを 5 つに分けた 平行作業の分け方 | |
2 分のデモンストレーション、拍手ごとの流れ | |
正直な弱点、フォールバック、ロスカットルール | |
検証済みの API とヘッダー、allメ竦みたいな落とし穴 | |
OpenRouter + Ox Alpha: セットアップ、スキーマの注意、レート制限付き、プライバシー | |
グラフが保存される場所、3 つのキャッシュ層 | |
Web アプリが使う REST の契約 | |
Lattice を同じ GitHub Copilot App プロジェクトに接続する | |
このリポジトリでのスムーズなエージェントの働き方 |
クイックスタート
まだ — その下準備が issue #1 です。このセクションは「他の誰かがあなたの README から実行できますか?」という評価基準に当たるので、提出前にしっかり書き直します。目標:clone から graph まで 5 コマンド以内+ トークン (権限が) 一切不要の
DEMO_MODE=1フィクスチャ 。
ライセンス
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- -licenseBqualityNot gradedmaintenanceEnables AI-driven orchestration of GitHub development workflows including automated issue analysis, code generation, code review, and PR creation through multiple specialized agents. Integrates with GitHub Actions to automate the complete development process from issue to pull request.7
- AlicenseAqualityAmaintenanceEnables AI coding agents to orchestrate the full software development lifecycle on GitHub, including planning, issue creation, code review, security triage, and release readiness checks.131401MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to automate GitHub repository management, issue tracking, and commits using natural language.24Apache 2.0
- AlicenseBqualityBmaintenanceEnables AI agents to interact with GitHub (search repos, read files, issues, PRs), analyze code for quality and issues, and manage tasks with priority sorting.7MIT
Related MCP Connectors
One shared brain for your AI coding agents: team memory, agent Q&A, tasks, and file claims.
Coding agents from Claude Code, Cursor and Codex claim jobs and lock files on one shared board.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/J-o-n-a-t-h-a-n-M-u-e-l-l-e-r/lattice'
If you have feedback or need assistance with the MCP directory API, please join our Discord server