Rust-first code graph CLI

ACI

Fast local code indexing for large repositories. ACI turns source files into a queryable graph without a daemon, database, or hosted service.

1.5sNext.js local cold index
40.7sChromium local cold index
15.8MChromium graph edges

Built for fast graph queries after the index.

ACI writes a compact local store with stable IDs and per-file partitions, so command-line queries do not need to crawl the repo again.

01

Symbols and spans

Track names, kinds, qualified paths, and jump locations in path:line:column form.

02

Imports and packages

Capture code dependencies plus package metadata from files like package.json.

03

Calls and references

Traverse callers, callees, refs, dependency trees, and impact sets from one store.

04

Exportable graph

Write JSONL, KiteDB-shaped JSONL, SCIP-shaped JSON, and LSIF-shaped JSON.

Index, query, watch, and export from one CLI.

Build a local graph store, query relationships, keep it current while editing, and export the same graph for other tools.

Install

curl -fsSL https://aci.mask.dev/install.sh | sh

Install ACI as a single local binary.

Index a repository

aci index .

Creates or replaces graph partitions inside the default .aci store.

Query relationships

aci query --pretty symbols --name main

Use text tables for humans or JSON output for scripts and tools.

Watch changes

aci watch . --debounce-ms 250

Keep the graph fresh while editing without re-indexing the world.

Export the graph

aci export --format jsonl

Move the same internal graph into downstream formats when needed.

Benchmark a checkout

aci bench cold ./next.js --variant tree-sitter-fallback

Run cold index timing against real repositories and compare extraction modes.

Cold-index performance on real repositories.

Measured on local checkouts with the tree-sitter-fallback extraction mode.

NX
1.51s

Next.js canary

commit 8980f3a76aa5bc7c2ec93a39cd5d81a7502800f1

  • Indexed files: 21,869
  • Nodes: 435,553
  • Edges: 616,376
  • Diagnostics: 379
  • Skipped files: 970
CH
40.74s

Chromium local checkout

commit 81c154bee3c796d05d993b89e44bf43e3ac92bd9

  • Indexed files: 149,287
  • Nodes: 8,635,542
  • Edges: 15,819,485
  • Diagnostics: 91,088
  • Skipped files: 253,039

local-first pipeline

From files to answers.

ACI keeps parser details behind adapters and writes a compact local graph store for fast lookup, traversal, impact analysis, and export.

Discover and fingerprint

Skip vendor, generated, binary, and unchanged paths before parsing.

Extract neutral graph facts

Language adapters emit the same internal model across Tree-sitter and scanner fallback paths.

Write partitioned store data

Changed files can replace their partitions without rewriting unrelated graph records.

Query or export

Ask for symbols, deps, callers, callees, refs, packages, impact, JSONL, SCIP, or LSIF.