Projects And Code Indexing¶
Register a project when you want source files, symbols, commits, and docs to show up in graph search.
Transcript indexing happens from provider session roots. Project indexing happens from registered repo roots.
Register¶
Paths must be absolute directories. Symlink aliases collapse to one canonical
project. Git repos also get a repo_id; non-git projects have repo_id=null.
Registration triggers the project-bootstrap path: files are chunked, indexed, and structural edges are emitted.
Project IDs¶
project_id is derived from canonicalized realpath. It is stable across daemon
restarts on the same machine, but not a portable cross-host identity.
repo_id comes from git identity when available, so it is the better anchor for
clone-spanning questions.
Use bbox_project_list before registering a path you think might already be
known.
Initialize .bbox¶
Project-local config lives under .bbox/:
This creates .bbox/config.toml, .bbox/mcp.json, .bbox/local/.gitignore,
and default subdirectories. It is idempotent unless force=true.
Use this before adding project-scoped MCP overlays or project-owned artifacts.
Rename And Unregister¶
Rename when the repo moved and you want blackbox state to follow:
Run dry-run first. Rename can migrate project-scoped knowledge, threads, notes, pins, packets, Slack bindings, live teams, councils, whiteboards, pollers, and crons.
Unregister only removes the registry entry:
By default it refuses when attached state exists. Use bbox_project_rename if
you meant to move the project. Use force=true only when orphaning old state is
intentional.
Code Navigation¶
Once indexed, these tools operate over source structure:
| Tool | Use |
|---|---|
bbox_code_symbols |
Project-wide symbol search with exact line ranges. |
bbox_code_query |
Tree-sitter query against one file. |
bbox_code_node_describe |
Inspect grammar shape at a position. |
bbox_code_refs |
Extract syntactic references from a file. |
bbox_refactor_status |
Check parse health and refactorable items. |
For source-aware search across docs/code/commits, use:
Pass project whenever cross-repo vocabulary could pollute results.
Freshness¶
The background reindexer handles most changes. When diagnosing:
After schema changes or index corruption:
Embedding freshness is separate:
Graph edges are rebuilt from sidecars and live stores. If a legacy sidecar grows
large, bbox_edge_compact can compact one project at a time.