Code index

The shape of your source tree. For each project, the code index records which files exist, what each one exports, and how their imports resolve to each other.

Part of the brain.

It answers the questions grep is bad at:

  • Which files export this symbol?
  • Which files import this one?
  • What does this file depend on?

An agent that can ask those before it starts editing spends far less of a session rediscovering the codebase.

Reindexing is incremental#

A reindex takes the cheapest valid path per file. A file whose modification time is unchanged is skipped outright. Otherwise its contents are hashed, because a git checkout churns modification times without changing bytes and hashing avoids a pointless re-parse. Only a file that genuinely changed is parsed.

Files that vanished from disk are dropped. A --full reindex ignores both fast paths and re-parses everything.

Import resolution runs as a second pass, once every file has a row, so relative imports can be pointed at the file they actually reach. Package imports are not resolved: the index tracks your code, not your dependencies.

A full reindex runs weekly per project on the scheduler's system lane, and a new project is picked up automatically.

Not every project should be indexed#

Indexing is opt-in per project, and two cases want it off:

  • Customer parents, whose child repositories already cover the same trees. Indexing the parent directory counts every file twice.
  • Non-source repositories: config, YAML, or docs-only.

Toggle it from board's Projects screen. Turning it off refuses future reindexes; clearing the project's existing rows is a separate step, so nothing is deleted by accident.

Structure only#

There is no semantic code search here: no embeddings, no "find me the function that does X". Search is a substring match over file paths and exported symbol names. Meaning-based retrieval is memory and library's job; this index is precise and structural on purpose.

In board#

The Code Index screen shows per-project index status and file counts, and is where a reindex is triggered by hand. Projects with indexing disabled are hidden.

Full command surface: CLI & contract reference.