Use fewer paid tokens by default.
The harness supersedes stale duplicate reads, spills large tool results, preserves provider prompt caches, and compacts repeatedly using an OMP-style response reserve instead of a premature fixed percentage. It also supports local context estimates when providers omit usage, prompt caching, local models, and focused Oh My Pi delegation through a verified authenticated economy model. Native failover, cross-provider subagents, and delegated OMP work all report their actual token and cost impact in Nur's session budgets and /usage totals.
Your personal coding agent. Custom Rust harness, dense gold TUI, native vision, tools, knowledge stack, hardened sandbox. Multi-provider /provider plus a unified /auth vault. Any model via --model / /model / config.
nur # interactive gold TUI
NurCLI
One command on every OS:
npx nur-cliDownloads the prebuilt native binary from GitHub Releases (no Rust toolchain, no clone, no build), drops it in ~/.local/bin, and runs the full stack setup. Keep it permanently with npm i -g nur-cli.
Prefer a one-liner without Node? The classic one-liners (build from source) or the Windows EXE (prebuilt) each drop nur on your PATH, pull in every runtime dependency they can, and wire the full agent stack before the TUI opens.
irm https://raw.githubusercontent.com/nuroctane/nur-cli/main/install.ps1 | iexcurl -fsSL https://raw.githubusercontent.com/nuroctane/nur-cli/main/install.sh | bashnur auth login # key -> ~/.nur/auth.json (or set NUR_API_KEY)
nur # open the TUI
nur doctor # health check
Or run nur and use /provider in the TUI (/login remains an alias): pick any of 63 providers
(OpenAI, Anthropic, Gemini, xAI, Groq, OpenRouter, Requesty, local Ollama/LM Studio, Meta Model API, and so on).
For OpenAI, Anthropic, xAI, Kimi Code, Google Gemini, Azure OpenAI, GitHub Models, GitHub Copilot, Cursor, Muse Code, DeepSeek Harness, and ZCode (GLM) you can sign in with a browser or an official CLI session (or import an existing Codex / Claude Code / Grok / Kimi / Cursor Agent / Muse / dsh / ZCode session) instead of pasting an API key. nur auth login --provider muse --browser (and the same for deepseek / zcode) is the CLI equivalent of TUI /login. OAuth sessions refresh before use, retry once after an authentication rejection, and /model detects the models available to the active credential. Cursor uses cursor-agent login and runs chat through the Agent CLI (no API key required). DeepSeek's official harness is API-key only ($DSH_HOME/.credentials.yaml). No credential on launch and login opens automatically.
Provider requests have a shared five-minute watchdog by default, immediate Esc cancellation, and clean transport teardown. Set NUR_PROVIDER_TURN_TIMEOUT_SECS to adjust the ceiling. On Windows, Nur also recovers successful Cursor Agent turns from Cursor's durable transcript when affected CLI builds emit no redirected stdout.
Keys are kept per provider, so switching with /provider never strands the one you switched away from - it stays available for failover, fusion, and subagents running on another provider's model. /auth opens one scrollable vault for every provider, where you can add, replace, import CLI/OMP, or delete credentials without switching the current chat. Imported OMP credentials retain their real kind, so API keys use API endpoints and OAuth subscriptions use their provider-specific OAuth routes. See docs/authentication.md.
nur updatePulls latest main when a Laboratory checkout exists (~/laboratory/nur-cli or ~/Laboratory/nur-cli), rebuilds, reinstalls nur on PATH, re-provisions the ecosystem. No checkout? Falls back to nur install.
| Also fine | |
|---|---|
Re-run npx nur-cli |
Fresh prebuilt binary + stack |
| Re-run the one-liner | Full rebuild from GitHub |
| Re-download + double-click Windows EXE | Prebuilt path |
nur install |
Reinstall this binary + stack (no git pull) |
Verify: nur --version · nur doctor. Detail: docs/setup.md → Update.
| 1. npx (above) Prebuilt binary, every OS. Fastest. |
2. One-liner Builds from source + full stack. |
Download → double-click → done. |
4. From a clone You already have the repo. |
- Open Releases → latest
- Download
nur-windows-x86_64.exe - Double-click it (or
.\nur-windows-x86_64.exein a terminal)
Copies itself to ~\.local\bin\nur.exe, PATH, prereqs, ecosystem + browser setup, then opens NurCLI.
3. Already cloned
cd nur-cli
.\install.ps1 # Windows
# ./install.sh # macOS / Linux4. Manual cargo build
git clone https://github.com/nuroctane/nur-cli.git
cd nur-cli
cargo build --release
./target/release/nur install # Windows: .\target\release\nur.exe install
nur auth loginEverything is local. Secrets never go into the git repo.
| Piece | Why |
|---|---|
| Rust / cargo | Builds the CLI (one-liner / cargo only; npx path needs none) |
| Git | Clone / update |
| Node.js 20+ | PLUR · Ruflo · Executor · skills · browser · AKM (the npx shim itself needs only Node 18+) |
| Bun | omp backend |
| uv | Graphify |
ripgrep (rg) |
Fast grep / glob |
| ffmpeg | extract_frames |
| Piece | Path |
|---|---|
nur binary |
~/.local/bin/nur (Windows: nur.exe) |
| SHA-256 record | ~/.local/bin/nur.sha256 |
| Source checkout (one-liner) | ~/laboratory/nur-cli (override NUR_CLI_DIR) |
| User PATH | ~/.local/bin |
| Path | Purpose |
|---|---|
auth.json |
Active credential |
provider_keys.json · provider_sessions.json |
Per-provider keys / OAuth sessions (failover + subagents) |
config.toml |
Model, effort, budgets, etc. |
sessions/ |
Chat sessions |
plugins/ · plugins/registry.json |
Marketplace installs (/plugins, nur plugins) |
skills/ · ruflo/ · tool-results/ |
Skills, vector memory, spilled tool output |
status.json · usage.jsonl · ade.json |
Live usage + host panels |
nur.log |
Tracing (not painted into the TUI) |
Graphify · PLUR · Ruflo · Executor · omp · agent-browser-cli · Text-to-CAD ·
mobile-harness · /sc-research whitehat DeFi pack (X bounty intel + historical vuln library) · skill packs. Installed when
Node/uv/Bun are available.
Docs: nuroctane.xyz/cli · docs/setup.md
v0.13.4: Natural-language skill activation · Fable + Superpowers phrases · full skill mirror · NUR_* host-panel envs · plugins. Docs
| Surface | What ships |
|---|---|
| TUI | Streaming · duration chips · thought/tool cards · peek · drag-select · scrollbar · sessions · multi-provider /login · /model picker · /plugins marketplace · /goal /bro /adhd /scan /btw /codesearch /mc /feedback /tips · every skill as /name · 26 themes incl superred / banana / nous + transparency mode · provider logo in the busy line + tab title · budgets · doctor |
| Agent | Manual / plan / auto · tools · subagents · todos · auto-compact · session $ / token budgets · Esc cancel · Shift+Tab mid-turn · NL skill auto-activation |
| Vision | look · extract_frames · prompt auto-attach · inline images in the TUI (kitty graphics protocol, sixel, iTerm2; Ctrl+V paste or /image <path>) |
| Tools | read · edit · bash · web · browser · git · knowledge · agent · excalidraw |
| Ecosystem | Graphify · PLUR · Ruflo · Executor · omp · browser · AKM · 800+ skills · /sc-research whitehat DeFi + X bounty intel + historical vuln library · plugin marketplace (Fable, Superpowers, Vercel, …) |
| Hardening | Sandbox · denylist · SSRF blocks · atomic ~/.nur IO · permissions/hooks · SHA-256 install · nur doctor |
| Real agent, not a wrapper | Modes, tools, sandbox, streaming, cancel, subagents, auto-compact |
| Sees media | Multimodal images/short video. Sparse frames, not spam. |
| One-shot install | npx nur-cli, one-liner, or Windows EXE · PATH · ecosystem · browser |
| Easy updates | nur update |
| Knowledge stack | Graph · engrams · vector memory · MCP · skills |
| Plugin marketplace | /plugins picker · Superpowers, Fable, Matt Pocock, Addy Osmani, Google, NVIDIA, finance/marketing packs, … → ~/.nur/plugins |
| Natural-language + slash skills | think like fable · TDD this · site cli · HAR file · polish the UI — or /fable-method /adhd /site-cli /<any-skill> |
| Take over other agents | /takeover (alias /hijack) imports Claude Code · Codex · Cursor · Nur · Grok Build sessions |
| Secrets stay local | Keys only in ~/.nur/auth.json (or env) · prefer NUR_API_KEY |
- Multi-provider via
/login(63); Responses or Chat Completions adapter - Manual / plan / auto · Shift+Tab mid-turn
- Tool loop, approvals, Esc cancel, subagents, todos, plan mode
- Session budgets (
/budget), tool-result spill, smarter auto-compact - Optional
permissions.toml/hooks.toml /poorcost-saver prompt- Project instructions:
NUR.md·AGENTS.md·CLAUDE.md - Session resume:
-c,-r,/sessions(alias/resume) - Takeover cross-agent migration (
/takeover·/hijack): import a session from Claude Code · Codex · Cursor · Grok Build into a native nur session and resume it. Two windows in one modal — presscto switch between/sessionsand/takeover /modelopens a live model list for the active provider (or/model <id>to set one directly)/pluginsmarketplace picker (same UX as/login): install Superpowers, Vercel, Firecrawl, Chrome DevTools, Fable, and more into~/.nur/plugins- Natural-language + slash skill activation: plain phrases or
/skill-name//skill-name <prompt>inject the skill body (Fable, TDD, site-cli, adhd, design-eng, resume-*, Excalidraw, …). Palette lists matching skills as you type. Docs /fusion— multi-model debate → one synthesized answer (panel of providers, active model judges)--continuous— sovereign/autonomous mode: loop headless turns toward a goal untilDONEor Ctrl+C/local— run a model locally with bundled llama.cpp (auto-fetchllama-server+ a GGUF sized to your RAM); no API key/bench— benchmark models on your own tasks, replayed in isolated git worktrees and scorednur gateway— run headless as a Telegram bot; each message is an agent turn in your project
| Family | Tools |
|---|---|
| read | read_file list_dir grep glob |
| edit | write_file edit_file multi_edit apply_patch |
| shell | bash |
| vision | look · extract_frames |
| web | web_search web_fetch |
| browser | real default browser via agent-browser-cli |
| terminal_browser | in-terminal Chromium (terminal-browser.com); Windows host fallback |
| git | git_status git_diff |
| knowledge | graphify plur ruflo executor skill memory |
| diagrams | excalidraw (hand-drawn .excalidraw via excalidraw-cli) |
| agent | todo_write submit_plan agent omp |
| Tool | What it does |
|---|---|
look |
Attach workspace images or short video so the model sees them |
extract_frames |
Sparse keyframes via ffmpeg → .nur/frames/<name>/ |
nur "steal UI design tokens from demo.mp4 and scaffold a matching component"
Inline rendering (v0.28+): pasted screenshots (Ctrl+V) and /image <path>
render as real pixels inside the TUI on terminals that support the
kitty graphics protocol,
sixel, or iTerm2 inline images - and are queued for model vision at the same
time. Personal accent colors ([theme] accent = "#..." in config.toml)
layer over any /theme pick. Details: docs/vision.md.
| Piece | Role |
|---|---|
| Graphify | Code knowledge graph (graphify-out/ in the workspace; gitignored, regenerable) |
| Excalidraw | Architecture / flow diagrams → .excalidraw (npm i -g excalidraw-cli; auto-provisioned) |
| PLUR | Shared engram memory |
| Ruflo | Vector memory / swarm helpers under ~/.nur/ruflo/ |
| Executor | MCP / OpenAPI gateway |
| Skills | Progressive packs via skill |
| AKM | Skill package manager |
| fractal | Hierarchical recursive agent loops in git worktrees (/fractal). Apache-2.0. Unix only — fractal 1.0.0 imports fcntl, so use WSL on Windows. Python 3.12–3.14 |
| Headroom | Inline tool-result compression (default on; [headroom] enabled = false to disable) |
| OptMem | Permanent memory at ~/.optmem (/optmem · /memo) |
| egaki | Image/video gen (/egaki · /image; ChatGPT-sub login supported) |
| terminal-browser | In-terminal Chromium (/tb); Windows host fallback via agent-browser-cli |
| HelixDB | Optional graph-vector resident behind mem: local-first durable outbox, background mirror, scoped vector/text recall (mem helix_status / helix_sync) |
| Text-to-CAD | Auto-provisioned STEP-first CAD, DXF, G-code, robot-description, sourcing, validation, and review skills (/cad, /cad-viewer, …). MIT |
| DroidRun Mobile Harness | Auto-provisioned Android, iOS, and cloud-phone operating harness for mobilerun-core (/mobile-harness). MIT |
| penecho | Infinite thinking canvas run as a sidecar (/penecho). AGPL-3.0 |
| t3code | Vendor-CLI auth delegation — driver probing, env isolation, pairing. MIT |
- Streaming · thought/tool cards · duration chips · peek · ↓ End
- Drag-select · scrollbar · Ctrl+A / C / V / X
- Sticky prompt · sessions · approval mini-diff
- Splash: NUR logotype + active provider
- Atomic writes under
~/.nur/ - Session
*.json.bak· compaction.precompact.bak - API retries ·
nur doctor· install SHA-256 - Logs:
~/.nur/nur.log
| On GitHub | On your PC only |
|---|---|
| Source, install scripts | ~/.nur/auth.json |
| No keys in the repo | sessions, usage, frames under ~/.nur / workspace |
Env: NUR_API_KEY preferred. Vendor keys (OPENAI_API_KEY, META_API_KEY for Meta Model API, etc.) still work. Home override: NUR_HOME.
nur # interactive TUI
nur "fix the bug" # start with a prompt
nur "design from ref.mp4" # vision: auto-attach media if path exists
nur -c # continue last session in this directory
nur -r <session-id> # resume a session
nur --mode plan "..." # plan mode
nur run "..." -y # headless + auto-approve
nur sessions
nur usage
nur auth status
nur ecosystem status
nur ecosystem ensure --force
nur doctor
nur doctor and nur ecosystem status are read-only snapshots. Use
nur ecosystem ensure --force when you want Nur to install or upgrade ecosystem tools.
Launching from a drive root (C:\) auto-picks a safe workspace (git / last session / Laboratory).
| Mode | Behavior |
|---|---|
| manual | Reads free; writes / shell need approval |
| plan | Explore + shell freely; blocks code authoring and VCS mutation |
| auto | Auto-approve tools (-y) |
| Key | Action |
|---|---|
| ↑ ↓ · wheel · scrollbar | Scroll transcript |
| Drag chat text | Select + auto-copy |
Click ↓ N · End |
Jump to latest |
| Ctrl+A / C / V / X | Select-all · copy · paste · cut |
| Enter | Send |
| Shift+Enter | Newline |
| Shift+Tab | Cycle permission mode |
| Ctrl+R | Reverse-search prompt history (Ctrl+R steps older, Esc cancels) |
| y / a / n | Approve once / always / deny |
| Esc | Close peek → cancel turn |
| Command | Purpose |
|---|---|
/help |
Keys + commands |
/provider /login |
Choose and activate provider (/login is an alias) |
/auth /logout |
Manage all provider credentials / clear active provider |
/model |
Show and switch models for the active provider |
/plugins |
Browse and install marketplace plugins (provider-picker UX) |
/goal /btw |
Session goal / one-off note |
/bro |
Chill mode: plain words, straight answers (toggle) |
/adhd |
Sticky ADHD-friendly output (toggle) |
/<skill> |
Any installed skill — sticky, or /<skill> <prompt> one-shot |
/scan |
Map the codebase → shareable foglamp architecture scan |
/codesearch /cs |
Workspace ripgrep |
/mc /mcp |
MCP via Executor |
/feedback /tips |
Issue / interaction tips |
/budget /poor |
Spend ceiling / lean prompt |
/cd /pwd /doctor /status |
Workspace + health |
/sessions /resume |
Session browser — press c to switch to the takeover window |
/takeover /hijack |
Cross-agent migration: import a Claude/Codex/Cursor/Grok session into nur and resume it. Press c to switch back to sessions; /takeover ls [agent] lists; /takeover <agent> [id|latest] imports one |
/akarso /openseo /dialkit |
Deep-integrated tools: akarso (native tool — post/schedule across 14 social platforms), OpenSEO (SEO research/audits via MCP), dialkit (live-tune interface parameters) |
/failover |
Cross-provider failover + privacy tiers (provider-picker; Space adds a fallback, Alt+P sets its privacy tier) |
/fusion |
Multi-model debate → one synthesized answer (/fusion panel <ids>, then /fusion <question>) |
/local |
Run a model locally via bundled llama.cpp: /local up [tier|url] · status · models · down |
/bench |
Benchmark models on your tasks: /bench add|list|run <name> [models]|remove |
/undo |
Revert the last file edit (write / edit / multi_edit) this session |
/receipt |
Session receipt — verify what actually ran (models, tools, privacy tiers), hash-chained |
/cua |
Computer-use desktop driver: /cua on = always-on background desktop control (elevated), off = on-demand only, status |
/graph |
Inline live execution-graph card for the current turn (tools · subagents · status) |
/draw |
Open / build interactive tldraw offline boards: /draw <file.tldraw> opens · /draw install · /draw <idea> builds |
/steer |
Inject a message into the running turn without cancelling it (or click steer on a queued follow-up) |
Full list: docs/commands.md → TUI slash commands.
| Path | Role |
|---|---|
~/.nur/status.json |
Live tokens · cost · model · state |
~/.nur/usage.jsonl |
Per-request log |
~/.nur/ade.json |
Discovery manifest |
~/.nur/config.toml (created on first run):
provider = "meta" # or openai, openrouter, ollama, ...
model = "muse-spark-1.2"
base_url = "https://api.meta.ai/v1"
reasoning_effort = "high"
max_turns = 0 # 0 = unlimited agent rounds per promptSee docs/configuration.md and docs/authentication.md.
GNU General Public License v3.0 (or later) — see LICENSE.
Meta CLI is free software: you may redistribute it and/or modify it under the terms of the GPL as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. It is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose.

