npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

rig-constellation

v0.1.5

Published

Local-first semantic knowledge graph

Downloads

847

Readme

Rig

Watch your codebase become a constellation — and give your AI agent a map of it.

Rig builds a local-first semantic knowledge graph of your project, renders it as an interactive map you can fly through, and exposes it to coding agents (Claude Code, Cursor, Codex, …) over MCP. Your agent stops grepping blindly and starts navigating — by structure, by meaning, and by what it's touched before.

Everything runs on your machine. No API key, no upload, nothing leaves your laptop.


Quickstart

In any project directory:

npx rig-constellation

(Have Bun? bunx rig-constellation works too.) That's the whole thing. One command:

  ⬡ Rig — mapping my-project
  http://localhost:7491

  ✓ initialized  ./.rig
  ✓ map live    http://localhost:7491
  → 1/6 extract      ██████████████████ 212/212
  → 5/6 hubness      ████████████████░░
  ✓ indexed     1,204 nodes · 3,891 edges · 212 files · 36 skills
  ✓ wired       claude

  press Ctrl-C to stop the map.

It initializes .rig/, opens the live map first, then indexes your code so the graph assembles in the already-open browser tab in real time, and wires up whichever agent it detects. The map title and port are derived per project, so two checkouts can run side by side on stable, distinct ports. Re-run any time, or use the explicit subcommands below.

The command is rig (alias: rig-constellation). Prefer a global install? npm i -g rig-constellation (or bun install -g rig-constellation), then rig start. Installed locally with npm i rig-constellation? The binary lives in node_modules/.bin — run it with npx rig start (or install with -g to get rig on your PATH).


What you get

  • A map of your codebase. Files, symbols, calls, imports, and dependencies as a navigable graph — not a file tree.
  • Magnetic pull. Ask "what's related to X" and get a ranked answer that blends graph distance, semantic similarity, and what's been active recently.
  • Hubs. The structurally important anchors surface first, so a 5k-node graph stays legible.
  • Dependency intelligence. "What version of X do I have?" and "what's declared but never imported?" become one-hop graph queries.
  • Waypoints. Your agent drops durable markers at decisions and constraints that survive context-window compaction — so a new session picks up oriented.
  • An MCP tool surface your agent calls directly: search, pull, callers/callees, impact, hubs, deps, and more.

What your agent does differently

Without a map, an agent answers "what breaks if I change parseConfig?" by grepping the string and reading whatever files match — blind, lossy, and token-expensive.

With Rig it's one call:

rig_impact parseConfig
→ 7 transitive callers, ranked:
   loadSettings          calls · depth 1
   bootstrap             calls · depth 2
   __tests__/config…     tests · depth 1
   …

And "what else should I look at?" isn't a guess — rig_pull returns related anchors scored by graph distance, on-device embedding similarity, and recent activity, with the three components broken out so the ranking is explainable, not a black box:

rig_pull parseConfig
→ { node: "validateSchema", score: 0.81,
    components: { structural: 0.4, semantic: 0.9, recency: 0.7 } }

That ranked, self-explaining retrieval — not a flat grep dump — is the difference.


Privacy & local-first

  • Embeddings run locally via a small on-device model (bge-small). No API key required.
  • The graph lives in .rig/rig.db in your project. rig auto-adds .rig/ to your .gitignore.
  • Nothing is uploaded. The map UI is served on loopback only.

Wiring your agent

bunx rig-constellation auto-detects and wires the agents you have installed. To wire one explicitly:

rig install claude      # also: cursor · codex · opencode · openrouter

This merges Rig's MCP server into the agent's config; the agent spawns rig serve --mcp on demand.


Commands

| Command | What it does | |---|---| | rig start | One-shot: init + index + wire agent + open the live map | | rig index | Extract + write nodes (--include / --exclude <glob>) | | rig sync | Incremental update | | rig query | CLI search | | rig serve --all | Start MCP and/or the web map (--mcp / --web / --auth) | | rig status | Index health | | rig doctor | Diagnose environment, db, model cache, agent configs | | rig export-docs | Render waypoints into a markdown doc tree |

Run rig --help for the full list.


How it works

.contracts/ is the declarative source of truth (tools, anchors, migrations, events); bun run gen emits the matching code into generated/. The graph is plain SQLite. Retrieval is a single magnetic-pull scoring function over structural edges, on-device embeddings, and recency. The map UI is a force-graph over WebSocket.

  • packages/core — the Rig class: DB, extraction, graph, embeddings, magnetic pull
  • packages/mcp — MCP stdio server + tool dispatch
  • packages/web — Fastify + WebSocket + React map UI
  • packages/cli — the rig binary
  • packages/contractsdefineToolContract & friends

See docs/contracts.md to add a tool, docs/integration.md for the architecture, and COMPATIBILITY.md for the stability promise.


Requirements

  • Bun ≥ 1.1 (primary), or Node ≥ 20 (fallback).
  • Works on macOS, Linux, and Windows.

Contributing

Adding a tool means touching one file in .contracts/ and one implementation — the generator wires the rest. Start with docs/contracts.md, then docs/integration.md for where new ideas plug in. Stable tools are protected by a compatibility gate (bun run check:compat); see COMPATIBILITY.md.

License

Apache-2.0. Rig's extraction layer is derived from CodeGraph (MIT, © Colby Mchenry); those portions remain under their original MIT terms — see LICENSE-CODEGRAPH.txt and NOTICE. With thanks.