Native Context Index

Local TypeScript contextfor agents

NCI indexes symbols, dependencies, and versions across packages—so agents move quickly with context that matches the latest APIs you ship against.

From install to query

Same path your terminal takes

Here we pull in effect as a real dependency so the later index has declarations to chew on.

Open the full quickstart

Step 1

Add the dependency you care about

npm·~/effect-demo
npm warn EBADENGINE …

added 12 packages, and audited 13 packages in 3s

2 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

Built for day-to-day engineering decisions

Four practical workflows where NCI removes API guesswork and speeds up your development cycle.

Search Real API Surfaces

Run structured queries over exported symbols and declaration graphs so you see what a package actually exposes — not only what a README claims.

Trace Dependency Context

Inspect package versions and declared dependencies to understand integration impact before shipping to production.

Build Fast, Repeatable Indexes

Index large node modules trees with cache-aware workflows so lookup stays fast across daily iteration.

Discover Invisible Semantics

Surface deprecation tags, visibility, and version notes from TypeScript declarations and JSDoc so agents and humans avoid internal or sunset APIs.

Interfaces for humans and agents

NCI exposes its relational index through a high-performance CLI and a native MCP server for AI agents.

CLI

Initialize, index, and query your declaration graph with a single native binary. Built for sub-millisecond response times and zero-config setup.

MCP

Bridge the gap between code and intelligence. Connect AI agents directly to your local index via the Model Context Protocol.

Benchmark

Average tool calls per task

0NCI
0Without NCI

0% fewer tool calls with NCI in the workflow

3 pilot runs averaged, same tasks with and without NCI indexed in the agent

Cursor · Composer 2.5 benchmarks run through the Cursor SDK with the same tasks.

Common questions

Answers before you wire it in

Short clarifications on what NCI indexes, how agents reach it, and what to expect in a real repo.

  • NCI builds a local SQLite index of TypeScript declarations and package relationships from the node_modules tree you actually compile against. Agents and the CLI query that index for exact signatures, overloads, and dependency edges instead of repeating open-ended text search every turn.
  • Grep chases strings; public docs rarely match your pinned versions. NCI stores structured rows (symbols, versions, source packages) so nci query and nci sql return cite-ready answers from the same files on disk.
  • Run nci index when dependencies change (after install, branch switch, or lockfile updates). The database is local; nothing is uploaded. Your config (nci.config.json) controls roots, scope, and output format.
  • Yes. nci-mcp exposes nci_query and nci_sql plus primer resources. The MCP server shells out to the same nci binary as your terminal, so CLI and agent stay aligned.
  • One shared nci.sqlite lives in your OS cache by default (set database or NCI_CACHE_DIR to override). Size grows with indexed packages—nci db status reports it; nci db clear wipes rows. Queries stay read-only.
  • Skip it if you have no installed packages to index, or your task is only about files you already have open in the editor. NCI pays off on large trees, generated .d.ts files, and recurring agent questions about third-party APIs.