Install
binaryACI installs as a single CLI. The install script detects platform and architecture, downloads the matching release, and places the binary in a user-writable bin directory.
curl -fsSL https://aci.mask.dev/install.sh | sh
aci --help
For local development, run commands through Cargo: cargo run -p aci-cli -- ...
Index and watch
storeIndexing writes graph partitions into the local .aci store. Watch mode refreshes changed files and reverse dependencies after filesystem changes settle.
aci index .
aci index . --store .aci
aci watch . --debounce-ms 250
aci watch . --once --max-wait-ms 5000
What gets indexed
Files, symbols, imports, exports, calls, references, packages, diagnostics, spans, and fact quality.
What gets skipped
Vendor directories, generated paths, binaries, unsupported files, and parser work above configured limits.
Query
answersQuery commands read the store and return either human-readable text, aligned tables, or JSON for automation.
aci query --pretty symbols --name main
aci query deps --file src/lib.rs
aci query callers main
aci query callees main
aci query refs main
aci query --format json impact src/lib.rs
aci export --format jsonl
Branch diff
reviewaci diff checks two Git refs out into isolated detached worktrees, indexes both trees, and compares the resulting graph snapshots.
aci diff main feature
aci diff main feature --pretty
aci diff main feature --agent
aci diff main feature --agent --format json --pretty
Use --agent for compact review focus: risk, top changes, important symbols, dependency changes, diagnostics, and notes.
Parser limits
boundsTree-sitter parsing is bounded per file. If a source file is larger than the cap, ACI records a diagnostic and keeps scanner fallback facts when fallback mode is active.
aci index . --max-parse-bytes 10485760
aci watch . --max-parse-bytes 10485760
aci diff main feature --agent --max-parse-bytes 10485760
aci bench cold . --max-parse-bytes 10485760
- Raise the cap for legitimate large source files that need parser-backed spans and calls.
- Keep generated bundles out of source indexing rather than raising the cap for generated output.
- Diagnostics from skipped parses are review signals, not fatal index failures.
Release checks
qualityUse the same gate before publishing a release or handing a branch to another developer.
./scripts/check-loc.sh
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
RUSTDOCFLAGS="-D warnings" cargo doc --workspace --no-deps
./scripts/validate-packaging.sh
sh -n site/install.sh
cargo audit