lattice
Lattice
백로그는 계획인 척하는 평평한 목록입니다.
Lattice는 GitHub 이슈에 숨겨진 의존성 그래프를 추론하고, 그 결과로 나온 일정을 MCP를 통해 코딩 에이전트에게 전달합니다. 즉, 비용이 많이 드는 추론 패스 한 번이 그 후의 모든 저렴한 에이전트 실행을 위한 스케줄러가 됩니다.
자체 실행됩니다. 이슈 이벤트와 일정이 트리거하며, 아무도 클릭하지 않습니다.
GitHub에는 절대로 기록하지 않습니다. 이슈든 데이터 소스이지 데이터 저장소가 아닙니다.
Microsoft Hackathon 2026 · 챌린지: 에이전트 시대의 GitHub 계획(Planning) 및 추적(Tracking) 도구를 활용한 협업
문제
이슈는 서로에게 의존합니다. UI가 API를 소비하려면 API가 먼저 존재해야 하고, 쿼리보다 스키마 마이그레이션이 먼저이며, 그것을 임포트하는 네 가지 것보다 타입 계약이 앞서야 합니다. 인간은 이 순서를 머릿속에만 담아 두고, 결코 기록으로 남기지 않습니다.
인간이 다음 티켓을 고르던 때는 그게 견뎌 왔습니다. 동료가 에이전트가 되면 더 이상 견뎌지지 않습니다.
평평한 백로그를 받은 에이전트는 잘못된 순서로 잘못된 작업을 합니다. 아직 존재하지 않는 엔드포인트 상대로 프론트엔드를 작성하게 되고, 그 출력은 모델이 아무리 최고라 해도 쓰레기입니다.
모든 에이전트 실행은 같은 순서를 매번 처음부터 다시 유도해 냅니다. 이 분류(triage) 패스가 요청의 가장 비싼 부분인데, N번 반복될 때마다 매번 버려집니다.
어떤 작업이 병렬 실행해도 안전한지 알려 주는 것이 없습니다. 그 병렬 실행 가능성이야말로 에이전트를 하나 이상 두는 전부인데.
GitHub은 이미 이에 필요한 데이터 모델이 있으며, 그것은 관환 채로 있습니다. 이슈 의존성(blocked_by / blocking)은 2025년에 GA로 전환되어 REST·GraphQL·gh을 완전히 지원합니다. 하지만 그 의존성을 입력하는 사람이 거의 없습니다. 직접 하나하나 입력해야 하는 일이기 때문이고 — 아무도 개인이 느끼는 그 편익이 없는(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는 모든 실행마다 이슈 네이티브 blocked_by와 하위 이슈 계층을 읽을 뿐, 의존성도 댓글도 라벨도 일체 다시 쓰지 않습니다.
그 시스템이라서 구조적으로 비파괴적이고, 그 사실 덕분에 감독 없이 실행될 자격을 얻습니다. 공유 저장소를 손상시킬 수 있는 자동 쓰기인 로직이 없고, 손으로 기록한 의존성을 지울 수 있는 정지 규칙도 없습니다. 잘못된 추론이 저지를 수 있는 가장 심한 일은 다음 실행에 교정될 때까지 우리 자신의 제안 순서를 잘못 나열하는 정도뿐입니다.
쓰기 경로는 반대로 흐릅니다. 인간은 쓰고 Lattice는 읽니다. 그래프를 대체로 바꾸고 싶으면 누구든 GitHub에서 blocked_by를 편집하면 되고, 다음 실행은 그것을 모델이 반박할 수 없는 ground truth로 취급합니다.
이것이 챌린지에 답하는 이유가 됩니다
해커톤은 이렇게 묻습니다. "당신 팀의 일부가 인간이 아니라면 좋은 협업은 어떤 모습일까?"
인간과 비인간 팀원 사이의 조정은 그 자체가 "스케줄링" 입니다 — 그리고 매 행동마다 사람의 승인을 요구하는 스케줄러는, 사실 스케줄러가 아니라 단계가 하나 더 많은 큐(queue)일 뿐입니다.
그래서 Lattice는 순서를 그 자신이, 연속적으로 유지하고, 사람 팀원과 에이전트 팀원 두 종류 모두 같은 그래프에서 읽습니다. 에이전트는 단지 그래프를 소비만 하지 않습니다. 기록되지 않은 블로커를 발견한 에이전트는 이를 보고하고, 그래가그 다음 요청자에게더 정확해집니다.
공유 작업 공간은 누구든 그 안에서 일하면 일할수록 더 좋아집니다. 사람들은 그래프 앞에서 막는 것이 아니라, 교정하는 절하는 제어를 유지합니다 — 엣지를 고정시키거나 억제해서거나, GitHub에서 blocked_by를 수정하면 되는 일이지만, 그 내용을 다음 실행이 ground truth로 받아 내는 방식입니다.
상태
엔드투엔드로 동작. 자신의 54-이슈 백로그로 검증했습니다: 순번에 모델 요청이 63개의 후보 엣지를 만들어 냈고, 40개가 검증을 통과했으며, 그 40개 중 16개가 3개웨이브에 걸쳐 blocking 관계가 되었습니다.
만들어진 것 : 파이프라인, 저장소, REST API, MCP(서버)와 상호작용형 그래프, 에이전트 루프.
아직 없음: 스케줄 실행되는 GitHub Action, DEMO_MODE 픽스처, 배포.
빠른 시작(Quickstart)
이리저리 살펴보는 데는 데이터베이스와 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실행하기
터미널 두 개가 필요합니다. 백엔드는 컴파일된 상태로 돌으며 그 경로에는 네이티브 바이너리가 없어서 좌지지 않습니다:
# terminal 1
npm run build && npm start -w @lattice/backend # :3001
# terminal 2
npm run dev -w @lattice/web # :3000<http://localhost:3000을 열거나 — 그 URL … wait, no.
Open http://localhost:3000, paste any public github repo URL, and it analyzes it.
Let me write: http://localhost:3000을 여세요. public GitHub 저장소 URL을 통이면 그것을 분석하고 출력해드니다. 이미 했던 저장소들도 이제 페이지에 목록로 보입니다.
npm run dev(두 서비스를 핫트 리로드)는tsx을 이용합니다. 이 경우[The package "@esbuild/d윈win-arm64" could notify or found]와 같은 에러로 fail한다면, npm가 optional 바이너리 제거된 것이므로rm -rf node_modules package-lock어mp && npm install --include=optional` 명령으로 처리됩니다. 위 컴파일된 경로에서法 이 문제가 나타나지 않습니다.
저장소 분석하기
Compute a JSP.
Open루터key가 필요합니다. .env.example을 .env 로 복사하고 OPENROUTER_API_KEY. Forgot the var name.
Wait, careful:
"키가 필요합니다. .env.example을 .env로 복사한 다음 OPENROUTER_API_KEY, LATTICE_OWNER, LATTICE_REPO를 설정해 주세요."
npm run analyze # ~1 model request for a 50-issue backlog“몇 분 가량 이루어집니다 — Alpha는의 추론(re기onal) 모델이라 저장소의 전체 백로그가 한 번의 호출로 들어어갑니다. 재살행은 즉给我간입니다 — ⴔ응답이 프롬프트 해시기준으로 chaching되어 있고, 그 캐시가 무료티얼의 일 50회 요청 대수를 보호해주니다.
Command table:
당신.
" 사용해 보세요. Then:
명령 | : 동작 |
| 세 패키지를 모두 |
| 그래프 단테 테스트가 끝나 |
|
|
| 세 agentetermined. |
| :3001 에 컴파일된 백엔드 |
| :3000 에 web app |
호스팅된 Postgres(Neon)을 쓰려면 DATABASE_URL을 설정해 주세요.
백엔드를 Ctrl-C로 중지 — 죽지 kill -9
kill -9 γife is not an optional.
Correct: "### 백엔드는 Ctrl-C로 중지하고 kill -9 말고
PGlite는 실제 Postgres 데이터 디렉터리에 씁니다. 쓰기 도중 강제 죽일면(손상되고).
직자: PGlite는 실제 Postgres 데이터 디렉터리에 씁니다. 쓰는 중간에 kill -9하면 데이터가 손상러 storage가 사라집니다. 서버는 SIGINT/SIGTERM 시 베이스를 닫도록 로직어 있으므로 Ctrl-C 안심입니다. 손상되어도 그래도, npm run import -w @lattice/backend 명령은 artifacts/graph.json에서 마지막 저장된 그래프를 복원합니다 — model 요청 없이, 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와 함례로 /mcp에 스트리밍 가능 HTTP를 도어 를는 MCP를 서빙한다. 백엔드를 Executed시키면 즉시 활性화되며 별도 프로세스가 없습니다.
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은 이 repo를 clone 한 누구에게도 동일한 환경을 만들어 주므로, claude가 자동으로 그 MCP 서버를 인지합니다.
Copilot 코딩 에이전트
Copilot의 클라우드 에이전트는 public URL이 필요하므로 백엔드를 먼저バблюして 배포하십시오(이슈 #52). 전체 walkthrough에는 다른 리포지토리얼 Lattice 인스텐知스로가 함께 포함되어 있습니다: docs/13-using-lattice-mcp.md。
COPILOT_MCP_LATICE_TOKEN이 지정되지 않으며 인증은 완전히 건너고, 이것이 로컬 사용 - 설정·없이 사용을가능합니다로 합니다. 백엔드 노출 시 절에 이 토큰에 지정하이십시오.
그 외 클라이언트
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각단계에 안 들이 전부독립적이라서, 어느순서로 처리해도 되고 여러에이전트한테한번에 나눠줘도 됩니다. 웨브앱의 이슈판넬에도 같은계획이 Copy 버튼과 함께 나타며, 그버튼을통해 프롬프트로 에이전트에게그대로 줄수 있습니다.
머신 리더블(Machine-readable) 하프
npm test는 artifacts/graph.json 및 artifacts/schedule.json를 생성합니다. 이로써 일정이 diffable 해집니다 — 사이클 제거 가중값을 바꾸면, "그래프가 어딘가 다르게 보이는" 막연한 느슸 대신에 critical path가 어떻게 바뀌었는지 검토가능한 딤프diff로 나타납니다. 이 동시에 저장소에서 가장 저렴한 통합 테스트입니다. 그 검사가 파일이 성형이고 비사이클이라면, 순수한 코어 전체를 포함하며 올바르게 연결되어 있음을 의미합니다.
한창 본이 된 구조(Overview)
npm워크스페이스 모노레포 하나에 서비스 두 개:
apps/backend— GitHub 로부터 읽고 추론하여, 가게를 소유하고, REST API와 MCP 서버를 제공.apps/web— 대화형 그래프. 백엔드 URL과 API 토큰만 저장하며 그 외에는 아무것도 없다 — 데이터베이스 URL도, GitHub 토큰도, 모델 키도 없다.
docs/01-architecture.md를 참조하십시오.
문서
문서 | 내용 |
해커톤 배경,심시 기준,제출 요구사항 | |
[ | 구성요소,데이터 흐름, State가 존재하는 곳,스택 선택 |
통 하위 계층 5형, LLM 프롬프트, 환상 차단 장치 | |
Tarjan, 사이클의 깨기,웨이브,임계 경로,폭발 반경 | |
에이전트가 호출하는 일곱가지 MCP 도구 | |
`팀의 5방향 병렬 분할 | |
2분 데모,베타씩 | |
있는 것 그대로의 단점,회복,손절 규칙 | |
검증된 API 엔드포인트,헤더,발목 걸리는 함정 | |
OpenRouter + Ox Alpha: 설정,스키마주의,제한 요금,프라이버시 | |
그래프가 저장되는 위치와 세 계층 | |
웹 앱이 사용하는 REST 계약 | |
Lattice를 또 다른 GitHub Copilot App 저장소에 연결하기 | |
에이전트가 이 저장소에서 일하는 방법 |
Quickstart
아직 없습니다 — 스캐폰이 그 이슈 #1이기 때문. 이 섹션은 **"다른 사람이 README만으로 실행할 수있을지"라는 심사 기준이라서 제출 전에 실제로 채우겠다. 목표: 5개 이내의 명령으로 clone에서 graph까지, 그리고 토큰이 전부 하나피도 필요 않는
DEMO_MODE=1픽스처 경로.
License
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