Skip to main content
Glama

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: uses 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 — модель рассуждений, и весь бэклог уходит за один вызов. Повторные запуски мгновенны: ответы кэшируются по хэшну промпта, что также бережёт квоtalбеспакуппавший тариф 50 обращений в день.

Команда

Назначение

npm run build

Собирает все три пакета

npm test

Блочные тесты графа, затем пишет artifacts/graph.json и schedule.json

npm run analyze

Один прогон конвейера для LATTICE_OWNER/LATTICE_REPO

npm run agent -- --agents 3

Три агента берут работу по MCP; проверяет атомарнось аренды

npm start -w @lattice/backend

Скомпилированный бэкенд на :3001

npm run dev -w @lattice/web

Веб-приложение на :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 /mcp

Claude 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 unblocked

Bottom-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.

См. docs/01-architecture.md.

Документация

Документ

Что внутри

docs/00-context.md

Контекст хакатона, критерии оценки, требования к загрузу

docs/01-architecture.md

Компоненты, поток данных, где хранетсяное состояние, выбор стека

docs/02-inference-pipeline.md

Пять уровней вывода, LLM-промпт, защита от галлюцинаций

docs/03-graph-scheduling.md

Тarpян, разрыв циклов, волны, критичный путь, радиус поражения

docs/04-mcp-surface.md

Семь MCP-инструментов, используются агентами

docs/06-workstreams.md

Пять равных веток запараллеливания для команды

docs/07-demo-script.md

Двухминутное демо пошагово

docs/08-risks.md

Честные слабые места, фолбэки, стоп-лоссы

docs/09-github-api-notes.md

Проверенные эндпоинты, заголовки и ловушки для всего миpа

docs/10-model-provider.md

OpenRouter + Ox Alpha: настройках, осторожно схемой, лимиты, пространенности

docs/11-graph-store.md

Где persistgraph, и три кэша-слоя

docs/12-rest-api.md

REST-контракт, который потребляет веб-приложение

docs/13-using-lattice-mcp.md

Подключения Lattice к другому репозиторию GitHub Copilot App

AGENTS.md

Как агентам работать в этом репозитории

Быстрый старт

Пока нет — каркас это issue #1. Этот раздел — критерий оценки «сможет ли кто-нибудь другой запустить его по вашему README?”, поэтому его готовят как следует перед подачей. Цель: от клонирования к графу максимум за 5 команд, плюс путь с DEMO_MODE=1 и фикстурами, для которых не требуется никаких токенов.

Лицензия

MITдела

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • -
    license
    B
    quality
    Not graded
    maintenance
    Enables 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
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to automate GitHub repository management, issue tracking, and commits using natural language.
    24
    Apache 2.0
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI agents to interact with GitHub (search repos, read files, issues, PRs), analyze code for quality and issues, and manage tasks with priority sorting.
    7
    MIT

View all related MCP servers

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.

View all MCP Connectors

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/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