Description
Ingest any local git checkout into the code knowledge graph with one command: dots repo ingest <path>. The ingester parses the repo's files and symbols, derives a stable repo identity from the remote URL, and lands three connected layers in the workspace — a Repos row, one Repo Files row per file, and one Code Symbols row per function/class/type — joined by structural edges (contains / defines / imports_module / calls / inherits). Against a hosted API it uploads the resolved graph as a single compressed object and applies it through a durable, checkpointed background job; re-ingest is content-hash incremental, so an unchanged repo is a no-op. Multiple repos coexist in one workspace with fully isolated graphs.
Selling Points
- One command turns any codebase into a queryable knowledge graph — no CI integration, no language server, no config.
- Incremental by content hash: day-to-day refreshes cost seconds, not a rebuild.
- Durable hosted apply: a dropped connection never leaves a half-written graph; the job checkpoints and resumes.
- Multi-repo safe: every file and symbol is keyed by repo identity, so graphs never bleed into each other.
- The ingested graph powers downstream agent tooling (
callers_of,impact,trace) that would otherwise need a bespoke code-intelligence service.
User Story
A developer (or an agent on their behalf) runs dots repo ingest D:/apps/myrepo after cloning or after a batch of commits. Minutes later, every agent connected to the workspace can answer "who calls this function", "what breaks if I change this", and "how does this symbol connect back to the spec that designed it" through the CLI (dots graph …) or MCP tools — grounded in rows and edges the whole platform (search, edges, views) treats as first-class knowledge.
Extension Surface
Automatable, not pluggable: the parsing pipeline and language classification are internal, but the whole lifecycle is drivable end-to-end from the outside — dots repo ingest / reset / guided-ingest in shells and CI, detect_changes over MCP for staleness checks, and the standard rows/edges/search surfaces for reading the result. There is no extension point for adding a custom language parser today.
Capabilities & Limits
- Extracts files, symbols, and structural edges; embeds symbols when embedding is enabled.
- Repo identity survives machine moves (remote-URL keyed, path-hash fallback for remote-less repos).
dots repo reset <path>purges exactly one repo's graph (dry-run by default,--yesto execute).- Limits: no cross-repo edges are drawn automatically; friendly path refs require uniqueness across the workspace's repos; re-ingest freshness is enforced fail-closed against server state.
Implementation Map
packages/ingestion/src/repo/detect/source-key.tslocal.tsincremental/host/job.tsstore/reset.tspackages/cli/src/commands/repo-graph-upload.tsdots repo ingestpackages/api/src/jobs/repo-apply-job.tsrepo.applypackages/knowledge-graph/createInternalSystemEdgeWriter