the engine room
Rust all the way down, so there's nothing else to install.
Scanner, extraction, resolver, graph engine, MCP server β every crate is
Rust, compiled to one static binary with the database inside it: SurrealDB
embedded on RocksDB, full-text index included. That store opens in
about 80 ms on a
344-file index, and on macOS and Linux the daemon holds it warm, so your agent's
second question never pays it again. The one part that isn't Rust β the galaxy UI β ships
pre-built into a single HTML file the binary carries, so cargo build never
needs Node, and neither do you.
0.66Γindex wall clock vs CodeGraph Β· selene-crates
0.93Γdjango Β· at parity
1.2β4.4 mscorridor traversal Β· Phase-1 fixture
0.18β0.45 swarm explore Β· 3rdβ6th call
How to read these. What was timed is a cold, full
selene index of the same source-only corpus by each tool, and lower is faster:
0.66Γ means SeleneCode finished that index in 66% of CodeGraph's wall time β best-of-3, same
machine (selene-crates and django measured 2026-09-09; codegraph-src's 0.77Γ is the older
2026-07-17 window and has not been re-run). Faster never meant resolving less: a gate holds
the Rust resolver to the TypeScript engine's edge identity at tolerance 0 over an
18-project corpus. django measured 1.03Γ in the previous window, so the medium corpus reads as at
parity β unresolved either way until a counter-balanced A/B says otherwise. VS Code scale
has not been re-benchmarked since these optimizations. The millisecond band is corridor
traversal and path-finding on the Phase-1 synthetic fixture, not hub-rooted queries, which are
bound by result size.
β¦The model can't reach the index
selene index and selene sync never call a model, and a stock
binary cannot reach one at all β the LLM crate is an optional dependency behind a feature
that is off by default. Extraction itself is sync, with no async runtime on the path, and
its parallel fan-out commits in a fixed order β so the ids never depend on which thread
finished first.
β¦One batched query per hop
Callers, callees, impact and shortest path are Rust walks whose every adjacency
expansion is one batched query over the whole frontier β never a query per node β so
a traversal costs O(depth) round-trip pairs however wide the frontier gets, and each node's
payload crosses the wire at most once per walk. On the Phase-1 benchmark graph β synthetic,
20,000 nodes and 102,008 edges β corridor traversal at depth 3β5 and 15-hop path-finding
land at 1.2β4.4 ms.
One crate touches the database; everything above it sees a single GraphStore
trait.
β¦Made for every agent
selene install -t auto finds every agent on the machine and wires them
all β eight targets across four
config formats (JSON, TOML, JSONC, YAML). It rewrites exactly the selene entry and
leaves every neighboring MCP server byte-identical; if the file will not round-trip
losslessly it refuses to write at all. Your ~/.claude.json stays yours.