Skip to content

How much work is it to run CodeNavi?

The honest objection to any self-hosted tool is "someone has to run it." This page answers with the actual commands, one per job, so you can judge the operational cost in a minute. Every command below is the real one from the reference pages, not a summary.

Install: one command

On a Linux box with a GPU and Docker (or Podman), the connected install is a single line from your trial or license email:

cd ~ && curl -fsSL https://codenavi.com/trial/install/<your-token> | sh

It detects the GPU before downloading, pulls the matching image, verifies the signature, writes .env, asks for the path of the codebase to index, and starts the server. Windows 11 with Docker Desktop is two lines in PowerShell, no admin. An air-gapped site unpacks the signed package and runs ./setup.sh --airgap instead. macOS runs ./setup.sh and detects the platform. Details: connected setup, air-gapped setup, macOS, Podman.

Verify:

curl -s http://localhost:8765/health | python3 -m json.tool

Index: one command per codebase, then incremental

The installer indexes the first codebase. Adding another, or rebuilding one, is one line:

codenavi reindex --full --codebase billing

After that, reindexing is incremental — typically seconds — and can be triggered by the agent (reindex tool), the web UI, the CLI, or a webhook from your CI so the index follows main without anyone remembering to run it.

Connect an agent: one command

Every package ships the Claude Code plugin. Two lines, then the agent has the MCP connection, thirteen slash commands and a health hook:

claude plugin marketplace add /path/to/your-codenavi-package/plugins/claude
claude plugin install codenavi@codenavi

Already running CodeNavi and just installed the plugin? /codenavi:doctor checks the server and writes a correct .mcp.json for the project. For Codex CLI, Antigravity, VS Code, Zed, OpenCode, Pi and AnythingLLM the server's own wizard at http://<server>:8765/connect produces the config block for each client — paste it and you are connected. One server serves every developer; each machine holds a URL and a token.

Update: one command

./update.sh --check      # report what's new, apply nothing
./update.sh              # download the changed layers, then confirm before applying

Updates are delta packages — usually tens of megabytes, not a fresh image — and the updater verifies the cosign signature before applying and keeps a rollback tag. Air-gapped sites copy the update package in and run the same script. Details: updating CodeNavi.

Watch it: built in

/health for the load balancer, Prometheus metrics on :9091, a ready-made Grafana dashboard, and webhooks for reindex / crawl / scanner events. The observability quick start is the copy-paste version. Nothing phones home; you see everything, the vendor sees nothing.

What you own

  • One box with one GPU. RTX 20-series or newer, or a supported AMD card (GPU matrix). CPU-only indexing works for small repos but is slow; a rented GPU for the initial index is a documented option (rented GPUs).
  • A few minutes per release. ./update.sh, read the release note, done.
  • Nothing per developer. No per-seat provisioning, no accounts to create. The first developer's config block works for the tenth.

What you don't own

  • No model hosting beyond the container — the embedder is baked in, the reranker downloads once on first start (or ships in the air-gapped package).
  • No vector database to operate — LanceDB lives inside the container's data directory; backup is a snapshot from the UI, CLI or backup tool.
  • No cloud account, no API key, no data-processing agreement — unless you choose a cloud LLM for chat, which is an explicit opt-in with a warning.

If the answer to "who runs it?" is still "nobody," the comparison page says plainly when a managed assistant is the better fit.