Spend tokens on coding, not searching.

4.2–5.9× better search → 94–98% fewer tokens spent on retrieval.
curl -fsSL https://install.noodlbox.io | bash

macOS · Linux

TS/JS · Python · Rust · Go

nbx search "auth refresh flow"
web client18 symbols
auth & session43 symbols
configuration9 symbols
workflow 01 · refresh on 401
retryOn401()web/api-client.ts
requireSession()auth/middleware.ts
refreshToken()auth/session.ts
rotateStore()auth/tokens.ts
REFRESH_TTLconfig/env.ts

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?

One query, capped at 8K tokens: how much of the code that matters makes it into window.

See full results and methodology →

Based on SWE-bench Lite · 39 tasksat 8K: 83.3% vs ripgrep 14.1%if ripgrep keeps hunting: 447K tokens median

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, and Python 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.