ovecc index
Builds or updates the local architecture database: parses source files, resolves
imports, extracts symbols, call edges, HTTP APIs and schema accesses, ingests Git
history, evaluates rules and security detectors, and persists everything (plus a
snapshot) into .ovecc/graph.db. Run it once per revision; everything else reads
this model.
Usage: ovecc index [OPTIONS] [PATH]
Example
$ ovecc index . --stats
Indexed repository: ~/projects/acme-shop
Database: ~/projects/acme-shop/.ovecc/graph.db
Snapshot: snapshot:8230ae07ba488166774d0865
Files scanned: 9
Files indexed: 9
Files parsed: 0
Files from cache: 9
Modules: 6
Dependencies: 17
External dependencies: 5
Symbols: 27
Calls: 51
APIs: 4
Tables: 3
Commits ingested: 1
index phases (ms):
discovery 48
parse 1
resolve 7
analyze 109
persist 64
total 231
stats: 374 ms wall, 0.3 MB peak heap
This run was fully incremental — Files parsed: 0, Files from cache: 9 — because
nothing changed since the previous index. After editing five files, only those five
are re-parsed.
Options
| Option | Effect |
|---|---|
[PATH] | Repository to index (default: current directory / --repo) |
--exclude <GLOB> | Extra glob(s) to skip, on top of the built-in defaults (node_modules, .venv, dist, target, …). Repeatable |
--include <GLOB> | Restrict indexing to these glob(s) only. Repeatable |
--no-git | Skip Git facts for this run (disables churn/ownership signals) |
--stats | Per-phase timings + peak memory on stderr |
Plus the global options.
ovecc index . --exclude "vendored/**" --exclude "generated/**"
ovecc index . --include "packages/api/**"
Excludes can also live in config.toml under
[index] exclude.
Behavior notes
- Incremental by design. A content-addressed parse cache means unchanged files are never re-parsed; differential sync writes only what changed, plus a new snapshot.
- Snapshots accumulate. Each run appends a snapshot tagged with the current
commit — the raw material for
review,drift, andhistory. - Git ingestion powers churn and ownership metrics.
Commits ingested: 0(or--no-git) simply disables those signals; hotspots then label churn/ownership as n/a. - On very large repositories, the first index is the expensive one (discovery + persist dominate); subsequent runs are cache-hits. Queries against the resulting database are sub-second regardless of repository size.
Related
- Core concepts — what the model contains
capabilities— the contract for consuming it