lattice
Lattice
Бэклог — это плоский список, который притворяется планом.
Lattice выводит граф зависимостей, скрытый в ваших GitHub issues, и отдаёт получившееся расписание кодинг-агентам через MCP — так один дорогой проход рассуждений становится планировщиком для каждого последующего дешёвого запуска агента.
Он работает сам по себе. Его запускают события issues и расписание; никто ничего не нажимает.
Он никогда не пишет в GitHub. Issues — это источник данных, а не хранилище данных.
Microsoft Hackathon 2026 · Задача: Совместная работа с помощью инструментов планирования и отслеживания GitHub в эпоху агентов
Проблема
Issues зависят друг от друга. API должен существовать до того, как его начнёт потреблять UI; миграция схемы — до запроса; контракт типов — до четырёх модулей, которые его импортируют. Люди держат эту упорядоченность в голове, и она никогда не фиксируется до конца.
Это было терпимо, когда следующую задачу выбирал человек. Оно перестаёт быть терпимо, когда ваш тимейт — агент:
Агент с плоским списоком деleет не работу, или в незном порядке — пишет фронт для эндпoint, которого ещё нет, и лузльтат оказывется мусором, к камери бы ни была модell.
Каждый зауск агента заново вычislimit Одну и ту же упорядоченость с нуля. Эта триажная дчит? — самая дорогая часть запроса, повторяемой N раз и каждый раз выброшенная.
Ничто не указывает, что можно безопасно запускать в параллель, — а это и есть весь смысл иметь больше одного агента.
У GitHub уже есть модель данных для этого, и она пустая. Зависимости issues (blocked_by / blocking) в 2025 году стали Generally Available с полной поддержкой 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)Единственный архитектурный принцип: GitHub — это источник данных, а не хранилище. Lattice при каждом запуске читает issues, нативные blocked_by и иерархию подзадачу и не записывает ничего — ни зависимостей, ни комментариев, ни меток.
Тем самым система неразрушающая по построению — именно это даёт ей право работать без присмотра. Нет автоматического писателя, который мог бы испортить общий репозиторий, и нет логики обрезки, которая могла бы удалить зависимость, внесённую вручную. Худшее, что может сделать неверный вывод, — перепутать порядок наших же рекомендаций до следующего запуска.
Путь записи устроен в обратную сторону: люди пишут, Lattice читает. Тот, кто хочет переопределить граф, редактирует blocked_by на GitHub, и следующий запуск считает это источником истины, которому модель не может противоречить.
Почему это отвечает на вызов
Хакатон спрашивает: „на что похожа хорошая совместная работа, когда часть вашей команды — не человек?“
Координация между человеком и не-человеком и есть планирование — в планировщик, которому нужен человек для утверждения каждого решения, это потребнее планировщик, а очередь с лишними шагами.
Lattice поддерживает порядок сам, непрерывно, и оба типа тиммейтов читают один и тот же граф. Агенты не просто поглощают его: агент, который натыкается на неучтённый блокер, сообщает об этом — и граф становится точнее для того, кто спросит следующим.
Общее рабочее пространство улучшатся, когда кто-то в нём работает. Люди остаются под контролем, не перекрывая ему путь, а исправляя его — закрепляя ребро, подавляя его или просто правя blocked_by на GitHub, что следующая выборка воспримет как истину.
Статус
Работает по всему циклу. Проверено на собственном бэклоге из 54 issues: один запрос к модели дал 63 рёбра-кандидата, 40 прошли валидацию, 16 стали блокирующими, в 3 волны.
Создано: pipeline, хранилище, REST API, MCP-сервер, интерактивный граф и пауза агента.
Пока не создано: запланированное GitHub Action, фикстуры DEMO_MODE, деплой.
Быстрый старт
Ни базы данных, ни GitHub-токена для знакомства не нужно: хранилище работает на PGlite (это настоящий Postgres, встроенный), а gh auth token используется автоматически, если GITHUB_TOKEN не задан.
npm install
npm run build # types + backend (tsc) + web (next build)
npm test # 11 graph unit tests, then writes artifacts/graph.jsonЗапуск
Два терминала. Бэкенд работает скомпилированным — на этом пути нет нативных бинарник, и он не падает:
# terminal 1
npm run build && npm start -w @lattice/backend # :3001
# terminal 2
npm run dev -w @lattice/web # :3000Откройте http://localhost:3000, вставьте URL любого публичного GitHub-репозитория — он будет проанализирован. Репозитории, которые вы уже проанализировали, перечислены на той же странице.
npm run dev(оба сервиса с hot reloadount: usestsx. Если он падает с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 — модель рассуждений, и весь бэклог уходит за один вызов. Повторные запуски мгновенны: ответы кэшируются по хэшну промпта, что также бережёт квоtalбеспакуппавший тариф 50 обращений в день.
Команда | Назначение |
| Собирает все три пакета |
| Блочные тесты графа, затем пишет |
| Один прогон конвейера для |
| Три агента берут работу по MCP; проверяет атомарнось аренды |
| Скомпилированный бэкенд на :3001 |
| Веб-приложение на :3000 |
Задайте DATABASE_URL, чтобы использовать хостированный Postgres (Neon) вместо встроенного.
Останавливайте бэкенд через Ctrl-C, а не kill -9
PGlite пишет в настоящий каталог данных Postgres. Жёсткое killing убиение в середине записи ломает мою — а warehouse and vehicle is missing. Сервер получат закрывает базу данных сна на SIGINT/SIGTERM, поэтому Ctrl-C — безопасный патelong. Если хранилище всё же испортилось, 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-сервера
Бэкенд поднимает MCP over Streamable HTTP на /mcp, вместе с REST API. Запустите бэкенд — он и домуль, отдельный процесс не has not needed.
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 для кода
Облачному агенту Copilot нужен палец URLpublic, поэтому сначала разверните бэкенд (issue #52). О полном проходение — с переходом на тот, как создать хранилище для другого? репозиторий для эго Lattice: docs/13-using-lattice-mcp.md.
Аутентификация полностью отклюена, когда COPILOT_MCP_LATTICE_TOKEN не задан; и это даёт локальную настройку без конфигфайла. Если вы подставляете бек сами, задайте его до доступа к бэкенду.
Любой другой клиент
npx @modelcontextprotocol/inspector # then connect to http://localhost:3001/mcpДва направления
Top-down — «что теперь в работу?»
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 unblockedBottom-up — „хочу выкатить #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Всё внутри шага независимо, поэтому вы можете выполнять его в любом порядке или раздать сразу несколькимся агентам. Panel of issue in веб-прилож «the's shows» Приложение shows same plan and Copy button, which sends it to the agent in the form of a prompt.
Машиночитаемый граф
npm test записывает artifacts/graph.json и artifacts/schedule.json. Это позволяет сопоставлять расписание через diff: измените весаъ breaking цикла, и сдвиг критической линии появляется в обзре с читаемым diff, а не на лучший sense that "и подсознние" it is different. Это также самый дешёвый интеграционный тест в репозитории: если файл корректный и ациклический, то собрано всё чистое ядру.
Общая архитектура
Two services are in one monorepo based on npm workspaces:
apps/backend— reads GitHub, executes inference, owns storage, serving REST API and MCP server.apps/web— интерактивная визуализация. It only holds the address of the backend and API token — and nota total: no design database, no token GitHub, no model key.
Документация
Документ | Что внутри |
Контекст хакатона, критерии оценки, требования к загрузу | |
Компоненты, поток данных, где хранетсяное состояние, выбор стека | |
Пять уровней вывода, LLM-промпт, защита от галлюцинаций | |
Тarpян, разрыв циклов, волны, критичный путь, радиус поражения | |
Семь MCP-инструментов, используются агентами | |
Пять равных веток запараллеливания для команды | |
Двухминутное демо пошагово | |
Честные слабые места, фолбэки, стоп-лоссы | |
Проверенные эндпоинты, заголовки и ловушки для всего миpа | |
OpenRouter + Ox Alpha: настройках, осторожно схемой, лимиты, пространенности | |
Где persistgraph, и три кэша-слоя | |
REST-контракт, который потребляет веб-приложение | |
Подключения Lattice к другому репозиторию GitHub Copilot App | |
Как агентам работать в этом репозитории |
Быстрый старт
Пока нет — каркас это issue #1. Этот раздел — критерий оценки «сможет ли кто-нибудь другой запустить его по вашему README?”, поэтому его готовят как следует перед подачей. Цель: от клонирования к графу максимум за 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