Skip to content

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

macOS · LinuxTS/JS · Python · Rust · Go · Java

Preview public context boxExplore Langfuse’s code graph
Noodlbox graph of Langfuse's evaluation-job workflow and its connected code definitions
A public codebase, compiled by nbx. Open the graph to explore it.A public codebase, compiled by nbx.

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 init
Five structural views of a codebaseSource repositories compile into community, workflow, definition and relationship planes that form a persistent structural model.REPO / 01REPO / 020102030405SOURCE / REPOSITORIESSTRUCTURAL MODEL / .NBX03WORKFLOWSEXECUTION PATHS

Search 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"
  1. Seed
  2. Follow
  3. Group
  4. Deliver
A code search expanding multiple seed hits into one context sliceA query fans out into three initial symbol seeds. Each seed expands through structural edges, while the central workflow continues through the graph into a single task-scoped context slice.AUTH & SESSIONFUNCTIONAL COMMUNITYTOKEN REFRESH ON 401ORDERED WORKFLOW · 5 STEPSretryOn401()refreshToken()REFRESH_TTL03GROUPAUTH & SESSIONFUNCTIONAL COMMUNITY02FOLLOW2 WORKFLOWSORDERED EXECUTION PATHS01SEED3 SEEDSINITIAL SYMBOL HITS

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.

0%50%100%8K32K100K1MMedian response · 447K · 56×14%50% by 32K83%91% at cap2.3.18 harness-scored0%50%100%8K32K100K1M447K median14%50% by 32K83%91% at cap2.3.18 harness-scored
noodlboxripgrep with targeted reads
Share of the answer key found · response tokens, log scale. Dashed lines connect measured checkpoints.
Coverage in the first 8K response tokensSelecting a corpus draws it in the chart above.
Corpusnoodlboxripgrep 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
Context Hub command actions
Drop --hub and the command reads your local box.PREVIEW AGENT INSTRUCTIONS ↗

The engine

Fast, deterministic context for the code you are editing.

Capabilities05
Compiler resolution01 / 05

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.