About repovine
repovine builds a checkout-local graph of repository structure and contracts, then serves scoped context to coding agents through MCP. It is for developers and agents navigating dependencies, runtime flows, configuration, and versioned repository annotations.
Key features
- 01Checkout-local repository graph
- 02Cross-unit contract and dependency analysis
- 03Runtime flow and configuration queries
- 04Versioned annotations with freshness checks
- 05MCP tools for graph navigation
Use cases
- 01Trace how a request moves across services
- 02Find consumers affected by an API change
- 03Record repository invariants and operational risks
MCP support
Exposes structured repository graph and annotation queries through MCP tools, including navigation, runtime tracing, dependency analysis, and maintenance. The MCP server runs against the current checkout.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
18Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | No | Max items to return. Default depends on the tool, usually 10-20. |
| match | enum | No | Token matching strategy. auto (default): AND first, then bounded OR — OR hits set strategy.relaxedFrom:"and" and omit emptyDiagnostic; weak-only OR noise may set weakTokenOnlySuppressed with emptyDiagnostic. and: token candidates must carry every token, and a partial token hit alone gives totalResults:0 with emptyDiagnostic strict_and_no_single_node. Semantic candidates enter under every match mode, so with semantic_search_embeddings enabled match:"and" also returns nodes carrying part of the tokens, and no emptyDiagnostic beside them — read topResults[].matchedTokenCount and semanticRank. or: union capped per-token candidates (may return noise on weak tokens like package/route/handler). Default auto.auto | and | or |
| query | string | Yes | Task keyword, feature name, symbol, route, package, config name, or other search text. |
| types | array | No | Optional result type filter. |
| offset | integer | No | Pagination offset. Default 0. |
| include | array | No | Accepted and ignored: the response is identical with and without it. trace_flow selects response sections through its own include enum. |
| perTokenLimit | integer | No | Max OR candidates considered per query token before final ranking. Default scales with limit, capped at 100. |
| responseFormat | enum | No | Response shape override: concise = compact output, debug = full envelope.concise | debug |
| contextSessionId | string | No | Context-quality session id from the harness; pass on every call to score returned context. |
Details
From the project READMErepovine
Repository context assembled and conveyed to coding agents.
The repository knowledge layer
A repository-agnostic core. Across supported languages, frameworks, and infrastructure formats, repovine normalizes repository structure into one queryable model.
Contract boundaries by design. The graph connects repository units through shared code, template, and runtime contracts. These boundaries support repository-scale navigation, dependency impact, runtime flow, and configuration.
Versioned knowledge with explicit ownership. Version-controlled annotations attach intent, invariants, risks, and operational knowledge to graph nodes. Agents and developers author them; repovine checks freshness and structural consistency against repository state.
Together, these layers support intent-driven, context-compiled, contract-verified development. Task intent guides MCP context assembly, and observable claims are checked against repository state.
Checkout-local by design. The live graph and indexes are built from each checkout's working tree and run in memory. Configuration and authored knowledge travel through Git. No database is required.
Benchmarks. Across correctness and restraint tasks drawn from public software repositories, 90% of Repovine runs passed their case-specific diff gate, compared with 10.6% of baseline runs. Explore the results.
Quick start
Start in an existing repository:
npx repovine setup claude # or codex, cursor, all
setup connects the selected client to repovine, adds repovine skills, hooks, and instructions, and builds the repository graph.
The graph model
repovine deterministically derives a graph of cross-unit contracts from repository state. Source and infrastructure plugins translate stack-specific structures into the same vocabulary of packages, modules, exported symbols, templates, runtime resources, and their relationships—so navigation, dependency impact, runtime flow, and configuration work consistently across supported stacks. Explore the design rationale.
How it works
The engine and MCP provide the base workflow. Interactive clients use it directly. For explicit protocol runs, Delivery Protocol adds a structured assignment → result → compliance contract around the same workflow.
Client
In clients such as Claude Code, Codex, or Cursor, the agent uses repovine MCP directly while the developer stays in the loop.
graph LR
SRC["sources"] --> S1["Stage 1: gather facts"]
S1 --> S2["Stage 2: build graph"]
S2 --> ANN["versioned annotations on graph nodes"]
A["agents and developers"] --> ANN
S2 --> S3["Stage 3: build search index"]
ANN --> S3
S3 --> MCP["MCP tools"]
ANN --> MCP
MCP -->|"bounded context"| C["Cursor, Claude Code, or Codex"]
| Stage | Input | Output |
|---|---|---|
| Stage 1: gather facts | sources | exports, imports, env names, routes, infra |
| Stage 2: build graph | facts | packages → modules → symbols; infra/template/domain edges |
| annotations | graph + agent/developer writes | versioned intent, invariants, risks, side effects, and operational constraints |
| Stage 3: build search index | graph + annotations | token index; optional embeddings to assist fuzzy search |
| MCP | graph + annotations + index | bounded graph and annotation query results |
Delivery Protocol
Delivery Protocol defines the assignment → structured result → compliance report contract. Core owns the schemas, projections, and validators that ground the protocol in observable repository state.
The agent uses MCP to access repository context while it works. The repovine CLI validates the assignment and result and produces the compliance report.
graph LR
IN["assignment"] --> AV["assignment validation"]
AV --> A["agent"]
A <-->|"repository context during the run"| MCP["repovine MCP"]
A --> R["structured result"]
AV -->|"validated assignment"| V["repovine compliance validation"]
R --> V
S["observable repository state + recorded context"] --> V
V --> OUT["compliance report"]
repovine validates schema conformance, assignment linkage, and claims it can recompute from the graph, annotations, recorded MCP context, and an optional revision delta. The compliance report covers protocol conformance and repository grounding; behavioral correctness and merge readiness are outside the protocol's scope.
The runnable LangGraph harness demo applies the protocol in an end-to-end agent workflow. Its orchestration topology, sandbox, retries, worktree isolation, and provider behavior are demo-specific implementation choices. See the Delivery Protocol integration guide.
MCP tools
Each tool returns a scoped, structured response.
Query tools, with typical questions for a large repository:
| Group | Example question | Tools |
|---|---|---|
| Navigate | where is authentication? what is inside the billing package? | search_context, map_context, inspect_node |
| Runtime | what are the entrypoints? how does an order flow through services? | get_entrypoints, trace_flow |
| Contracts & config | which consumers are affected by an API change? which environment variables does the worker read? | analyze_dependencies, get_config_surface |
| Architecture | are there boundary violations or god modules? | analyze_architecture |
Maintenance tools service the graph and annotations:
| Group | Purpose | Tools |
|---|---|---|
| Memory | which nodes are annotated or stale? | get_annotation_status, write_annotation, merge_annotations, validate_annotations, get_annotation_merge_status |
| Sync | rebuild and check the graph | refresh_context, get_build_status, get_context_session_quality |
| Domains | tune the domain config | suggest_domains_config |
| Declines | dismiss reviewed advisory items | decline_advisory (kind: domains-config | carrier-link-gaps) |
Setup and CLI
setup adds the following repovine integrations to the workspace while preserving existing configuration and project specialists:
| Integration | Included |
|---|---|
| MCP server | the repovine MCP tools |
| Skills | repovine-workflow, repovine-annotations, repovine-refresh, repovine-review, repovine-status |
| Subagents | repovine-repo-explorer, repovine-annotation-writer, repovine-architecture-auditor, repovine-code-reviewer |
| Hooks | pre-edit boundary notice, post-edit stale-graph notice, session-start "MCP first" reminder |
| Instructions | AGENTS.md (Cursor uses .cursor/rules) |
| Command | Goal |
|---|---|
npx repovine | run the stdio MCP server outside an IDE/CLI client |
npx repovine setup cursor (or claude/codex/all) | add the integrations above, then build the graph |
npx repovine build | build the graph |
npx repovine status | graph / config / annotation health |
npx repovine doctor | diagnose the workspace integration |
npx repovine clear | remove repovine-managed workspace files |
npx repovine --version · --help | version / help |
npx repovine delivery --help | harness/CI Delivery Protocol commands: descriptor, manifests, run brief, validation, and compliance |
npx repovine agents --help | harness/CI utilities for repository roles, deterministic orientation, and context-session quality |
STDIO is the only supported MCP transport in v1. For remote, devcontainer, WSL, VM, or devbox use, launch the repovine subprocess inside that environment so it runs in the checkout being analyzed.
Supported stacks
| Area | Support |
|---|---|
| Languages | First-class support: TypeScript (JS/JSX via the TS toolchain, needs tsconfig.json); Python partial (backend routes + server-rendered templates) |
| Frameworks | React, Next.js, Nuxt, SvelteKit, Angular, NestJS, serverless monorepos; Vue/Svelte single-file components (script blocks only) |
| IaC | Partial, expanding coverage: SAM/CloudFormation, Terraform, Kubernetes, Helm, Dockerfile, docker-compose, Vercel |
IaC parsers turn infra files into runtime-resource nodes plus links to the code and images behind them. They cover selected resources and relationships rather than complete format schemas. Coverage is under active development, and extending the existing extractors is a contribution area. Design detail: DESIGN.md.
Requires Node.js 22+ and one indexable root: tsconfig.json, pyproject.toml/setup.py (needs python3), or IaC files. Repositories with supported IaC files can be indexed without a source project; the graph contains infrastructure modules and runtime resources, but no code modules.
Repository files
| File / dir | Git | Role |
|---|---|---|
repovine.config.json | commit | main config: graph build and MCP output |
repovine.domains.json | commit | logical organization of the repository graph |
repovine.annots.json | commit | semantic annotation memory |
.repovine/ | ignore | local engine cache and workspace state |
Defaults work for most TypeScript repositories. Config reference: docs/workspace-files.md.
Status
Preview (0.1.0), usable today and open to contributions. The graph schema and @repovine/plugin-sdk still change.
Contribute
repovine's plugin architecture provides two public producer surfaces for extending language and infrastructure coverage, both exposed by @repovine/plugin-sdk:
| Plugin | What it adds |
|---|---|
| Language source producer | a language: source files → modules, imports, exports, semantic hints |
| IaC parser | an infra format: files → runtime-resource nodes and links |
Built-in and third-party producers share the same public plugin contracts; core validates their output and owns graph identities and ontology. See the plugin guide and runnable Go source plugin, IaC plugin, and other examples.
Learn more
- DESIGN.md: system boundaries, graph contract, trust model, and limitations
- CONTRIBUTING.md: dev setup, quality gates
- Documentation: guides, references, and the TODO app walkthrough
- Platform support: per-surface OS tiers, prerequisites, and promotion rules
- examples: runnable plugins and the Delivery Protocol harness demo
License
MIT. See LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.