bb v0.3.0 — local-first code intelligence
Your codebase,
understood locally.
bb parses source files with tree-sitter AST grammars into one project-local SQLite index — precise symbol extraction, code search, call-graph queries, and relationship mapping over 49 languages. No cloud, no upload.
Your coding agents reach the same index through 16 MCP tools — bb_search, bb_analyze, bb_ask — with exact source bounds and guarded edits.
$ bb --version
0.3.0
$ bb --help
Usage: bb [options] [command]
Backbencher Brain — universal code intelligence (40+ languages)
Options:
-v, --version output the version number
-h, --help display help for command
Commands:
tool <name> run one of the public tools with JSON args
index [dir] index a project (default: current dir)
setup embedding provider setup (API key, model)
doctor [opts] diagnose setup and index consistency
stats [dir] query index counts anytime
search <query> search the index (symbol, content, file)
health [dir] index health and freshness
mcp [opts] start the MCP server over stdio
$
bb 0.3.0 · 49 Languages Indexed · 46 dedicated tree-sitter parsers · 16 Agent Tools · 15 SQLite tables
01 · The brain
From source files to a guarded code graph.
One pipeline: parse with AST precision, persist a relational code graph, serve queries with explicit fallbacks, and mutate source only through guarded, index-verified operations.
- 01
Discover & Parse
Discovers eligible source files, applies project exclusions, and parses them in fault-contained workers.
DISCOVERRespecting .gitignore, .bbignore, and generated paths
WORKERSParsing changed files in isolated subprocesses
STATUSRecording clean, recovered, or partial parse state
- 02
Persist the Code Graph
Stores files, symbols, source bounds, imports, relationships, patterns, taint flows, and index health in project-local SQLite.
SQLITECommitting one file result per transaction
SYMBOLSWriting names, kinds, owners, and byte bounds
EDGESResolving unambiguous relationship targets
- 03
Query & Enrich
Serves symbol reads and graph queries, then layers on impact, patterns, security findings, health, and semantic search where data exists.
SELECTReading only the indexed symbol range
GRAPHTraversing callers, callees, and import edges
FALLBACKUsing keyword search when embeddings are unavailable
- 04
Guard Source Changes
Uses fresh indexed coordinates to update, insert, delete, rename, or create source, with safety behavior specific to each tool.
PREFLIGHTRefreshing stale bounds before mutation
PATCHApplying an indexed byte-range operation
REINDEXSynchronizing the accepted or restored file
Guarantees vary by parser, index freshness, tool, and available LSP — the pipeline reports what actually happened instead of pretending every file or edit has identical guarantees.
02 · Language coverage
Indexed once, in the languages you ship.
46 dedicated tree-sitter parsers across 49 languages and file types. Depth varies by grammar availability and file size — the index records what it could parse instead of pretending otherwise.
- TypeScript
- JavaScript
- Python
- Rust
- Go
- Java
- C++
- C
- C#
- Ruby
- PHP
- Swift
- Kotlin
- Dart
- Elixir
- Clojure
- Haskell
- Scala
- Lua
- R
- Bash
- SQL
- HTML
- CSS / SCSS
- JSON
- YAML
- PowerShell
- GraphQL
- HCL / Terraform
- Erlang
- F#
- Groovy
- Vue
- Svelte
- Perl
- Clean
- Zig
- Objective-C
- Markdown
- TOML
- XML
- Make
- Protobuf
- Nim
- Visual Basic
Symbols + call graph
A dedicated analyzer plus resolved imports and call edges — your agent can trace callers, callees, and impact across these families.
TypeScript, Python, Rust, Go, Swift, Kotlin
Structural symbols
A dedicated analyzer records structure and semantics precisely, without a resolved call graph.
SQL, HTML, CSS, JSON, YAML, GraphQL
Generic pass
The grammar parses and the generic traversal records symbols — honest, but deliberately weaker depth.
TOML, Protobuf, Nim, Visual Basic
Browse the full register — 45 families, one graphopen
Application & systems
15TypeScript
call graph
functions · classes · interfaces · enums
JavaScript
call graph
functions · classes · methods
Python
call graph
functions · classes · methods · types
Rust
call graph
functions · structs · traits · modules
Go
call graph
functions · methods · interfaces · packages
Java
call graph
classes · interfaces · methods · constructors
C++
call graph
classes · methods · namespaces · enums
C
call graph
functions · structs · enums · types
C#
call graph
classes · interfaces · events · methods
Swift
call graph
classes · protocols · methods · constructors
Kotlin
call graph
classes · interfaces · methods · constructors
Dart
call graph
classes · enums · methods · constructors
Zig
call graph
functions · structs · enums · constants
Objective-C
call graph
classes · protocols · methods
Visual Basic
generic pass
grammar parses · generic key pass
Functional & declarative
8Elixir
call graph
modules · functions · typespecs
Clojure
call graph
namespaces · functions · protocols
Haskell
call graph
modules · type classes · data types
Scala
call graph
classes · traits · methods · objects
Erlang
call graph
modules · functions · macros · typespecs
F#
call graph
modules · functions · types · methods
Clean
call graph
modules · functions · types
Nim
generic pass
grammar parses · generic key pass
Scripting & shell
8Ruby
call graph
classes · modules · methods
PHP
call graph
classes · namespaces · methods · enums
Lua
call graph
functions · methods · variables
R
call graph
functions · methods · classes
Bash
call graph
functions · variables · env constants
PowerShell
call graph
functions · classes · enums
Groovy
call graph
classes · interfaces · methods
Perl
call graph
packages · functions · methods
Web, data & config
14SQL
structural
tables · views · procedures · columns
HTML
structural
semantic elements · id anchors
CSS / SCSS
structural
selectors · mixins · custom properties
JSON
structural
object keys · nesting shape
YAML
structural
hierarchical keys · values
GraphQL
structural
types · interfaces · fields · operations
HCL / Terraform
structural
resources · modules · variables
Vue
call graph
components · props · events · methods
Svelte
call graph
components · methods · state
Markdown
structural
heading hierarchy · sections
TOML
generic pass
grammar parses · generic key pass
XML
structural
elements · namespaces · attributes
Make
structural
targets · variables
Protobuf
generic pass
grammar parses · generic key pass
45 families · extensions · registry names · per-family depth on one page
03 · Agent toolkit
Every public tool your agent can already call.
Every tool is an MCP call over stdio — symbol reads, code search, graph queries, diagnostics, and guarded source edits, all bounded by the index.
All 16 tools · MCP over stdio
04 · Why bb
Precise, local, and honest with your agents.
Local by default
bb never sends source to a server. The index is a SQLite file beside your project, and reading it offline is the normal case — code search and call-graph queries run without a network.
Honest about depth
Every tool reports what it actually knows. When no embedding model is configured, semantic search falls back to keywords and says so — the index never pretends to be richer than it is.
Agents call the same index
bb speaks MCP over stdio, so your coding agents run the same precise queries you do — symbol reads, impact analysis, and guarded edits, all with exact source bounds.