Skip to content

Install OpenCodeHub for any MCP agent

This page is editor-agnostic. It gets codehub on your PATH, indexes a target repo, and points you at the per-editor wiring. If you only use Claude Code, you can stop after step 5 — codehub init writes the right config and links the plugin.

  • Node ≥24.15. The store is the built-in node:sqlite and parsing is web-tree-sitter (WASM): no native binding, no build step.
  • pnpm 11 or newer.
  • git.
  • Optional: mise — recommended for the per-project tool versions and the cli:link task.
clone the repo and install workspace deps
git clone https://github.com/theagenticguy/opencodehub
cd opencodehub
pnpm install --frozen-lockfile
link the CLI
mise run cli:link

cli:link resolves the workspace @opencodehub/cli package and links its bin into your shell. Verify with codehub --version.

If you do not use mise, run pnpm -F @opencodehub/cli link --global inside the checkout.

run inside the repo you want to index
cd /path/to/your/repo
codehub init

codehub init is idempotent. It writes:

  • .mcp.json — local-scope MCP server entry pointing at the codehub binary. Picked up by Claude Code, Cursor (when symlinked into .cursor/mcp.json), and any other agent that reads the standard project-scope MCP file.
  • .claude/ — links the OpenCodeHub plugin so Claude Code gets slash commands, the code-analyst subagent, and 11 skills.
  • .gitignore — appends .codehub/ so the local store.sqlite index stays out of version control.
  • opencodehub.policy.yaml — seed policy file (license tiers, risk thresholds). Edit to taste, commit if you want repo-wide policy.
initial analyze
codehub analyze

Expect 30 seconds for a small TypeScript service, 1–3 minutes for a medium monorepo, 5–10 minutes the first time on a large repo (after which incremental analyzes are sub-second per file). Output is written to .codehub/ next to the project root.

Storage is one always-present file under .codehub/: the whole index lives in store.sqlite (WAL mode) via Node’s built-in node:sqlite, holding graph nodes, edges, embeddings, and the temporal tables. There is no selection knob, no native storage binding, and no platform where this fails for lack of a prebuilt. See ADR 0019.

health check
codehub doctor

codehub doctor prints the active toolchain: the web-tree-sitter (WASM) parse runtime, the built-in node:sqlite store (checked with an import plus a WAL round-trip), and which embedding backend is in effect (SageMaker → HTTP → local ONNX, in that precedence). There is no native storage binding to probe and parsing is WASM-only, so doctor reports OK on any Node ≥24.15.

The per-editor pages give you the config snippet, the path it goes into, and the verification step.