Nav
The NavigatorUnderstands the course, proposes a route, coordinates the crew and asks before important decisions.
A pair-programming system where you keep the keyboard. A crew of AI models helps you explore, understand and change your code. You stay at the helm.
nav tui
The Crew
You talk to Nav. Nav brings in Vigie, Lux or Mousse when the task calls for it. You see each one's goal and progress as it works, and each one only has the access its role needs.
Understands the course, proposes a route, coordinates the crew and asks before important decisions.
Scouts the codebase, docs and web. Separates what it saw from what it assumes, and cites its sources.
When the route becomes uncertain, ask Lux: architecture, risks, reviews and hard bugs.
A quick hand for small, local edits: renames, formatting, basic tests. Hands the task back to Nav when it grows.
I remain in control, but I no longer navigate alone.
Under the hood · four layers
Each layer has its own model and its own job. The fast ones run often; the deep ones speak only when it is worth it.
You. You keep the helm, give each remark a verdict and decide what gets done. Nav does the work only when you hand it over.
Ghost-text suggestions in the editor, accepted with Tab.
Typed decisions: is this worth saying, is this tool call safe, is this subagent stuck.
Short remarks beside your code, review of risky tool calls, and a wake for Nav when the code contradicts what you agreed.
Where Nav and the crew run: the build and plan agents, Vigie, Lux and Mousse in the background, tools, skills and rules.
Models come from the gateways you configure. One model per lower layer, one per agent, all in config.json.
You keep the helm
Nav writes down the goal, the route and the decisions as they settle. When the code drifts from them, Nav says so beside the line.
.withnav/intent.md
Writes, edits, shell commands and fetches pass a permission gate. Instinct clears the ordinary ones, risky ones get a Metacognition review, and anything still in doubt is asked to you. It guards against drift; it is not a sandbox.
allow once · always · deny
Mark a remark useful or noise, or dismiss it. Verdicts go to a local decision log, and you can replay recorded runs against a changed flow without calling a model.
useful · noise · dismissed
One core, every surface
Every client talks to one local session server. Settings in any of them write the same config.json.
Tabs, a command palette, a model picker, subagents and Settings, built with Ratatui.
nav tui
Inline suggestions, remarks on the line, and the Nav chat beside your code.
pixmants.withnav
Workspaces and sessions on a private local link that changes on every run.
nav web
Run one task and exit, with exit codes for scripts and CI.
nav run -p "…"
HTTP for commands, Server-Sent Events for the stream. Every event carries a sequence number, so a client can reconnect and pick up where it left off. nav serve listens on loopback by default.
# start a session curl -s -H 'content-type: application/json' \ -d '{"workspace":"'"$PWD"'"}' 127.0.0.1:7310/v1/sessions # follow it (resume with Last-Event-ID) curl -N 127.0.0.1:7310/v1/sessions/<id>/events id: 42 data: {"kind":"llm.delta", …}
Your models
models.json lists what you can reach, named gateway/id. config.json says which model each layer and agent uses. Change it from /config, VS Code or the browser; a session can switch its own model without touching the file.
// ~/.config/withnav/config.json { "layers": { "reflex": "inception/mercury-edit-2", "instinct": "omniroute/typesafe/jev-1.13", "metacognition": { "model": "omniroute/combo/deepseek-v4-flash", "variant": "low" } }, "default_agent": "build", "agents": { "build": { "model": "omniroute/cc/claude-opus-5-5" } } }
Install
Every release on GitHub ships ready-to-install files for Linux, with SHA256SUMS to check them.
One package for x64 and one for arm64. Each has nav inside, so there is nothing else to install.
withnav-linux-x64-<version>.vsix
No binary inside. It uses nav from your PATH, or the path in withnav.serverPath.
withnav-<version>.vsix
Static Linux binaries for x64 and arm64, as tarballs. One nav runs the terminal, the browser and the server.
nav-<version>-x86_64-unknown-linux-musl.tar.gz
The flake builds both. Its overlay adds pkgs.withnav and pkgs.vscode-withnav.
nix build github:PixmaNts/withnav#withnav
Clone the repository and build with cargo (Rust 1.89 or later).
cargo build --release --bins
The extension needs VS Code 1.91 or later. It is not on the VS Code Marketplace yet: install the VSIX file with code --install-extension. Native Windows is not supported; use WSL or a VS Code Remote window with the Linux package. Then add your gateways and keys (see the quick start) and run nav doctor to check the setup.
WithNav is developed in the open on GitHub. Read the code, ask a question, open an issue, or send a pull request to develop.