Context infrastructure for coding agents.
The nbx CLI compiles your codebase into a local knowledge graph your agents can query. LLM-free.
curl -fsSL https://install.noodlbox.io | bash
Build a semantic map of your codebase
nbx init resolves the repository into symbols, relationships, communities, and workflows — one local graph every command can reuse.
nbx initSearch code by structure, not strings
nbx search follows calls and workflows to return the symbols, definitions, and communities that belong in the task's context.
nbx search "auth refresh flow"- Seed
- Follow
- Group
- Deliver
Models should reason about code, not how to find it.
Compute retrieval. Reason over results.
Symbol 360°
nbx def returns the definition, callers, callees, references, and functional community for one symbol.
nbx def refreshToken --file auth/session.ts{
"status": "found",
"symbol": {
"uid": "8f3c91d1c9f6f9c9e5e9c6a91f3b52e22ca89b771d2c1f0d30f70b13ea80264a",
"name": "refreshToken",
"kind": "Function",
"file_path": "auth/session.ts",
"start_line": 84,
"start_column": 0,
"end_line": 98,
"signature": "async function refreshToken(session: Session)"
},
"incoming": {
"calls": [
{
"symbol_uid": "2a29a1ee41b5c933",
"name": "retryOn401",
"file": 1,
"line": 121,
"kind": "Function"
},
{
"symbol_uid": "317fe15d507be34a",
"name": "warmSessions",
"file": 2,
"line": 63,
"kind": "Function"
}
]
},
"outgoing": {
"calls": [
{
"symbol_uid": "74c5b0129a32dc41",
"name": "rotateStore",
"file": 0,
"line": 103,
"kind": "Function"
},
{
"symbol_uid": "be91f97031140120",
"name": "persistSession",
"file": 0,
"line": 118,
"kind": "Function"
}
]
},
"files": [
"auth/session.ts",
"web/api-client.ts",
"jobs/session-warmer.ts"
],
"community": {
"community_uid": "auth-session-43",
"label": "Auth & Session",
"size": 43
},
"documents": []
}Cypher Queryable
nbx query traverses symbols and typed relationships directly for precise structural questions.
Graph schema and supported Cypher →nbx query '
MATCH (caller)-[r:CALLS]->(target)
WHERE target.name = "refreshToken"
RETURN caller.name AS caller,
type(r) AS relationship
'[
{
"caller": "retryOn401",
"relationship": "CALLS"
},
{
"caller": "warmSessions",
"relationship": "CALLS"
}
]How much of the relevant code does your agent actually find?
146 scored tasks across four corpora. Separate per-corpus means: how much of the answer key appears in the first 8K tool-response tokens.
See full results and methodology →What each token budget buys.
| Corpus | noodlbox | ripgrep with targeted reads |
|---|---|---|
| 83% | 14% | |
| 79% | 19% | |
| 69% | 8% | |
| 53% | 18% | |
| 2.3.18 harness-scored | ||
What this measures · benchmark V1 · engine noodlbox 2.3.18
Answer key: Code symbols touched by a known solution patch.
A deterministic ripgrep-plus-targeted-reads baseline, not an adaptive coding agent. This measures retrieval coverage, not solve rate, total session cost, or latency.
The reports, frozen answer keys, checksums, and scoring code are public. You can rescore the published reports and recompute their curves. Rerunning retrieval or regenerating the answer keys still requires an unpublished evaluation engine, so this is reproducible scoring, not full end-to-end reproduction.
Context HubAlpha
Popular repositories, already compiled into public boxes.
QUERY IT LIKE ANY BOX
nbx search "router cache" --hub github:vercel/next.js--hub and the command reads your local box.PREVIEW AGENT INSTRUCTIONS ↗The engine
Fast, deterministic context for the code you are editing.
FAQ
What runs locally, what reaches the agent, and where the free line sits.
What is a code context compiler?
It resolves source code into stable symbols, relationships, communities, and workflows, giving agents better search across definitions and execution paths without discovering the repository from scratch.
How is this different from grep or vector search?
Grep matches strings and vector search matches similarity. Noodlbox also follows resolved symbol identity and typed code relationships, so a query can return the definitions and execution paths that belong together rather than a pile of nearby text.
Does private source code leave my machine?
No. Private source and its compiled graph stay local. Repository registration sends a hash of the remote identity so Noodlbox can issue a signed allowance; it does not store the private repository URL or its code.
Which coding agents can use Noodlbox?
Any coding agent that can run the local CLI. The setup prompt installs the nbx skill for Claude Code, Cursor, Codex, and OpenCode; other agents can invoke the same commands directly.
Which languages are supported?
TypeScript, JavaScript, Python, and Java are stable. Go is in beta, and Rust is in preview.
What is free?
Public boxes are unlimited, and your first private box is free forever. There is no timed trial or query cap. Basic unlocks unlimited private boxes.
Can one box contain more than one repository?
Yes. A box can compile several related repositories into one context boundary. If any repository in that box is private, the box counts as private.