nuroctane/nur-cli

NurCLI: Fully-loaded, SOTA cost-efficient coding agent command-line interface.

TypeScript

5

409 commits

updated Oct 15, 2026

See the code

README

NurCLI

Extremely efficient token spend

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.

TypeSafe · Jev judgments run inside the harness rather than beside it: one batched request decides which tool calls are still worth their tokens, whether a result actually worked, and what a fresh context can drop - so compaction writes no summary, survivors stay verbatim, and the frontier model is never paid to answer an if-statement. Provider-agnostic (one key lifts every model), and keyless on this machine through three supported local engines - openJev-verdict-2.0, Bespoke-Nimble-9B, and Laya Core ML (docs/jev-local.md). 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.

NurCLI logo

NurCLI demo: the gold TUI with its live sidegraph, an inline diff and the fixed calc suite
Watch the full demo

Your personal coding agent. Custom Rust harness, dense gold TUI, native vision, tools, knowledge stack, gated execution. Multi-provider /provider plus a unified /auth vault. Any model via --model / /model / config.

nur          # interactive gold TUI

NurCLI


Install: dead simple

One command on every OS:

npx nur-cli

Downloads 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.

Windows (PowerShell) - recommended

irm https://raw.githubusercontent.com/nuroctane/nur-cli/main/install.ps1 | iex

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/nuroctane/nur-cli/main/install.sh | bash

After install

nur 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 70 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, Factory Droid, Cline, 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 / Droid / Cline / 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); Factory Droid works the same way through droid exec (NUR_DROID_BIN when the launcher is outside PATH). 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.

Sign-in handling and its regression coverage are documented in the 65-provider authentication review, including vendor CLI progress, token rotation, credential replacement, and Claude's manual fallback.

Update

nur update

Pulls 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-cliFresh prebuilt binary + stack
Re-run the one-linerFull rebuild from GitHub
Re-download + double-click Windows EXEPrebuilt path
nur installReinstall this binary + stack (no git pull)

Verify: nur --version · nur doctor. Detail: docs/setup.md → Update.

Other ways to install

1. npx (above)
Prebuilt binary, every OS. Fastest.
2. One-liner
Builds from source + full stack.
3. Prebuilt EXE (Windows)
Download → double-click → done.
4. From a clone
You already have the repo.

2. Prebuilt Windows binary

  1. Open Releases → latest
  2. Download nur-windows-x86_64.exe
  3. Double-click it (or .\nur-windows-x86_64.exe in 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 / Linux

4. 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 login

What install puts on your PC

Everything is local. Secrets never go into the git repo.

A. Tooling install may add (if missing)

PieceWhy
Rust / cargoBuilds the CLI (one-liner / cargo only; npx path needs none)
GitClone / update
Node.js 20+PLUR · Ruflo · Executor · skills · browser · AKM (the npx shim itself needs only Node 18+)
Bunomp backend
uvGraphify
ripgrep (rg)Fast grep / glob, and the file walk behind sgrep
sgrepSemantic code search (sgrep tool); built with cargo install --git https://github.com/context-dot-dev/sgrep --locked, model (32 MB) downloaded once
ffmpegextract_frames

B. NurCLI itself

PiecePath
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

C. Data home: ~/.nur/

PathPurpose
auth.jsonActive credential
provider_keys.json · provider_sessions.jsonPer-provider keys / OAuth sessions (failover + subagents)
config.tomlModel, effort, budgets, etc.
sessions/Chat sessions
plugins/ · plugins/registry.jsonMarketplace installs (/plugins, nur plugins)
skills/ · ruflo/ · tool-results/Skills, vector memory, spilled tool output
status.json · usage.jsonl · ade.jsonLive usage + host panels
nur.logTracing (not painted into the TUI)

D. Ecosystem packs

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


SurfaceWhat ships
TUIStreaming · duration chips · thought/tool cards · every transcript piece in a theme-coloured frame · 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 · 41 themes including 18 chromatic studies + transparency mode · provider logo in the busy line + tab title · every path in the transcript is a link that opens · block-structured markdown with theme-role colours · LaTeX rendering (image-peek build) · /receipt verifies the hash chain and exports spans · budgets · doctor
AgentManual / plan / auto · tools · subagents · todos · auto-compact · session $ / token budgets · Esc cancel · Shift+Tab mid-turn · NL skill auto-activation
Visionlook · extract_frames · prompt auto-attach · compact image attachments with on-demand previews (Ctrl+V paste or /image <path>, F4 preview)
Toolsread · edit · bash · web · browser (incl. element picking) · git · knowledge · agent · judgments (typesafe) · security agents (enclave) · memory (optmem connectome mem) · diagrams (excalidraw tldraw penecho) · policy (dogwood) · background (bg) · async (admission goal proposal message question) · docs (anydoc) · python REPL (repl) · excalidraw
EcosystemGraphify · GraphJin · PLUR · Ruflo · Executor · TypeSafe/Jev (+ keyless local engines) · Enclave (security agents over native MCP) · OptMem · Headroom · Connectome · dogwood · omp · browser · AKM · 1,000+ skills · /sc-research whitehat DeFi + X bounty intel + historical vuln library · plugin marketplace (Fable, Superpowers, Vercel, …)
HardeningApproval modes · parsed bash denylist · per-domain fetch approval · SSRF blocks · atomic ~/.nur IO · permissions/hooks · signed releases (minisign + SHA-256) · nur doctor

Why NurCLI

Real agent, not a wrapperModes, tools, streaming, cancel, subagents, auto-compact
Sees mediaMultimodal images/short video. Sparse frames, not spam.
One-shot installnpx nur-cli, one-liner, or Windows EXE · PATH · ecosystem · browser
Easy updatesnur update
Knowledge stackGraph · 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 skillsthink 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 localKeys only in ~/.nur/auth.json (or env) · prefer NUR_API_KEY

Feature map

Agent harness

  • Multi-provider via /login (70); 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
  • /poor cost-saver prompt
  • Usage ledger: nur ledger · /ledger totals seven agent log formats locally, without importing keys or prompt content (docs/ledger.md)
  • /startup-skill routes to the installed startup validation, competitor research, positioning, and pitch workflows
  • 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 — press c to switch between /sessions and /takeover
  • /model opens a live model list for the active provider (or /model <id> to set one directly)
  • Modal pickers fit their contents and terminal height, with visible scroll position and consistent keyboard/mouse selection. /theme previews align with their click targets; Enter saves and Esc restores the previous palette.
  • /plugins marketplace 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 until DONE or Ctrl+C
  • /local — run a model locally with bundled llama.cpp (auto-fetch llama-server + a GGUF sized to your RAM); no API key
  • /bench — benchmark models on your own tasks, replayed in isolated git worktrees and scored
  • nur gateway --chat <id> — run headless as a Telegram bot answering one chat; each message is an agent turn in your project (without --chat it only pairs: it replies with your chat id and runs nothing)

Tools (native)

FamilyTools
readread_file list_dir sgrep (semantic, Context.dev sgrep, first choice for "where is the code that…") grep glob
editwrite_file edit_file multi_edit apply_patch
shellbash
visionlook · extract_frames
webweb_search web_fetch
browserreal default browser via agent-browser-cli
terminal_browserin-terminal Chromium (terminal-browser.com); Windows host fallback
gitgit_status git_diff
knowledgegraphify graphjin plur ruflo executor skill memory
diagramsexcalidraw (hand-drawn .excalidraw via excalidraw-cli) · tldraw (offline desktop boards) · penecho (20k canvas: ink, MathJax, plots)
judgmentstypesafe (System One typed decisions: gate a call, judge a result, rank, route)
securityenclave (Enclave security agents over native MCP: pentests, code security review, findings)
memoryoptmem (permanent, ~/.optmem) · connectome (hierarchical + chronicle) · mem (vector/graph router) · memory · plur ruflo
policydogwood (Cedar + temporal policy over an agent event stream)
contextcontext (RLM store: register/peek/slice/search) · anydoc (PDF/DOCX/XLSX → markdown)
backgroundbg (jobs that outlive the turn) · admission (async subagent handles) · goal · proposal (staged outputs) · message (peer mail)
pythonrepl (long-lived kernel; state survives compaction)
agenttodo_write submit_plan agent omp · skill harness · codemode (one JS script, several read-only tool calls, one model round)

Vision

ToolWhat it does
lookAttach workspace images or short video so the model sees them
extract_framesSparse keyframes via ffmpeg → .nur/frames/<name>/
nur "steal UI design tokens from demo.mp4 and scaffold a matching component"

Image attachments: pasted screenshots (Ctrl+V) and /image <path> stay in a compact composer row until sent. F4 previews or cycles images; Shift+F4 removes one. Sent attachments offer click-to-peek. Previews render as real pixels on terminals that support the kitty graphics protocol, sixel, or iTerm2 inline images. Queued follow-ups keep their own attachments. Personal accent colors ([theme] accent = "#..." in config.toml) layer over any /theme pick. Details: docs/vision.md.

TypeSafe (Jev): a system-one boost layer for whatever provider you are using - tool gate, result judge, compaction with no summary, skill checks, routing. One key, every provider. The full Jev library (nur jev models · /jev models) lists every engine with its native endpoint, local adapter, or connection recipe; keys are selected per engine. Details: docs/typesafe.md.

Enclave: Enclave's autonomous security agents (pentests, code security review, findings, CVE monitoring) through Enclave's MCP server, spoken natively - no gateway. Enclave is not a chat provider, so its key is a sidecar like TypeSafe's: nur auth login --provider enclave, then ask for security work or run /enclave. Details: docs/enclave.md.

Ecosystem

The TUI includes an F6 session inspector for changes, tools, agents, and context, with compact completed-tool rows and viewport-based transcript rendering. See TUI controls.

PieceRole
GraphifyCode knowledge graph (graphify-out/ in the workspace; gitignored, regenerable)
ExcalidrawArchitecture / flow diagrams → .excalidraw (npm i -g excalidraw-cli; auto-provisioned)
PLURShared engram memory
RufloVector memory / swarm helpers under ~/.nur/ruflo/
ExecutorMCP / OpenAPI gateway
SkillsProgressive packs via skill
AKMSkill package manager
fractalHierarchical 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
ConnectomeAgent-native memory: hierarchical self-authored notes + an append-only chronicle (connectome)
dogwoodCedar + temporal policy language for governing tool calls (dogwood; on-demand checker, not a runtime gate)
tldrawOffline desktop boards and interactive demos (tldraw)
penecho20k canvas beyond chat: ink, MathJax, plots (/pen · /drawings)
akarsoPost/schedule across 14 social platforms (/akarso; outward-facing calls ask first)
HeadroomInline tool-result compression (default on; [headroom] enabled = false to disable)
TypeSafe · JevSystem One typed judgments woven through the harness (/typesafe · tool typesafe): tool gate, result judge, Jev-scored compaction with no summary, skill checks, routing. Provider-agnostic - one key boosts every provider. See docs/typesafe.md
EnclaveAutonomous security agents over native MCP (/enclave · tool enclave): pentests, code security review, findings, CVE monitoring. Sidecar key, every provider; calls are approval-gated. See docs/enclave.md
Local Jev enginesSame typed contract on this machine, no key: openJev-verdict-2.0 (CPU), Bespoke-Nimble-9B (NVIDIA GPU / Apple Silicon MLX), Laya Core ML (Apple Silicon ANE), plus a mock backend. nur jev start · nur jev use
OptMemPermanent memory at ~/.optmem (/optmem · /memo)
egakiImage/video gen (/egaki; ChatGPT-sub login supported. /image <path> is vision attach)
terminal-browserIn-terminal Chromium (/tb); Windows host fallback via agent-browser-cli
HelixDBOptional graph-vector resident behind mem: local-first durable outbox, background mirror, scoped vector/text recall (mem helix_status / helix_sync)
Text-to-CADAuto-provisioned STEP-first CAD, DXF, G-code, robot-description, sourcing, validation, and review skills (/cad, /cad-viewer, …). MIT
DroidRun Mobile HarnessAuto-provisioned Android, iOS, and cloud-phone operating harness for mobilerun-core (/mobile-harness). MIT
penechoInfinite thinking canvas run as a sidecar (/penecho). AGPL-3.0
t3codeVendor-CLI auth delegation — driver probing, env isolation, pairing. MIT

TUI (gold)

  • 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

Reliability

  • Atomic writes under ~/.nur/
  • Session *.json.bak · compaction .precompact.bak
  • API retries · nur doctor · install SHA-256
  • Logs: ~/.nur/nur.log

Secrets

On GitHubOn your PC only
Source, install scripts~/.nur/auth.json
No keys in the reposessions, 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.


Quick use

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).


Permission modes (Shift+Tab)

ModeBehavior
manualReads free; writes / shell need approval
planExplore + shell freely; blocks code authoring and VCS mutation
autoAuto-approve tools (-y)

TUI keys

KeyAction
↑ ↓ · wheel · scrollbarScroll transcript
Drag chat textSelect + auto-copy
Click ↓ N · EndJump to latest
Ctrl+A / C / V / XSelect-all · copy · paste · cut
EnterSend
Shift+EnterNewline
Shift+TabCycle permission mode
Ctrl+RReverse-search prompt history (Ctrl+R steps older, Esc cancels)
y / a / nApprove once / always (the tool, or for bash the programs it runs) / deny
EscClose peek → cancel turn

Slash commands (highlights)

CommandPurpose
/helpKeys + commands
/provider /loginChoose and activate provider (/login is an alias)
/auth /logoutManage all provider credentials / clear active provider
/modelShow and switch models for the active provider
/pluginsBrowse and install marketplace plugins (provider-picker UX)
/goal /btwSession goal / one-off note
/broChill mode: plain words, straight answers (toggle)
/adhdSticky ADHD-friendly output (toggle)
/<skill>Any installed skill — sticky, or /<skill> <prompt> one-shot
/scanMap the codebase → shareable foglamp architecture scan
/codesearch /csWorkspace ripgrep
/mc /mcpMCP via Executor
/feedback /tipsIssue / interaction tips
/budget /poorSpend ceiling / lean prompt
/cd /pwd /doctor /statusWorkspace + health
/sessions /resumeSession browser — press c to switch to the takeover window
/takeover /hijackCross-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 /dialkitDeep-integrated tools: akarso (native tool — post/schedule across 14 social platforms), OpenSEO (SEO research/audits via MCP), dialkit (live-tune interface parameters)
/failoverCross-provider failover + privacy tiers (provider-picker; Space adds a fallback, Alt+P sets its privacy tier)
/fusionMulti-model debate → one synthesized answer (/fusion panel <ids>, then /fusion <question>)
/localRun a model locally via bundled llama.cpp: /local up [tier|url] · status · models · down
/benchBenchmark models on your tasks: /bench add|list|run <name> [models]|remove
/undoRevert the last file edit (write / edit / multi_edit) this session
/receiptSession receipt — verify what actually ran (models, tools, privacy tiers), hash-chained
/cuaComputer-use desktop driver: /cua on = always-on background desktop control (elevated), off = on-demand only, status
/graphInline live execution-graph card for the current turn (tools · subagents · status)
/drawOpen / build interactive tldraw offline boards: /draw <file.tldraw> opens · /draw install · /draw <idea> builds
/steerInject 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.


ADE / Orca

PathRole
~/.nur/status.jsonLive tokens · cost · model · state
~/.nur/usage.jsonlPer-request log
~/.nur/ade.jsonDiscovery manifest

Config sketch

~/.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 prompt

See docs/configuration.md and docs/authentication.md.


License

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.

agentic
ai
ai-agent
ai-tools
anthropic
autonomous-agents
cli
code-assistant
coding-agent
developer-tools
llm
mcp
model-context-protocol
multi-provider
openai
ratatui
rust
terminal
tokio
tui

nuroctane/nur-cli

NurCLI: Fully-loaded, SOTA cost-efficient coding agent command-line interface.

TypeScript

5

409 commits

updated Oct 15, 2026

See the code

README

NurCLI

Extremely efficient token spend

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.

TypeSafe · Jev judgments run inside the harness rather than beside it: one batched request decides which tool calls are still worth their tokens, whether a result actually worked, and what a fresh context can drop - so compaction writes no summary, survivors stay verbatim, and the frontier model is never paid to answer an if-statement. Provider-agnostic (one key lifts every model), and keyless on this machine through three supported local engines - openJev-verdict-2.0, Bespoke-Nimble-9B, and Laya Core ML (docs/jev-local.md). 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.

NurCLI logo

NurCLI demo: the gold TUI with its live sidegraph, an inline diff and the fixed calc suite
Watch the full demo

Your personal coding agent. Custom Rust harness, dense gold TUI, native vision, tools, knowledge stack, gated execution. Multi-provider /provider plus a unified /auth vault. Any model via --model / /model / config.

nur          # interactive gold TUI

NurCLI


Install: dead simple

One command on every OS:

npx nur-cli

Downloads 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.

Windows (PowerShell) - recommended

irm https://raw.githubusercontent.com/nuroctane/nur-cli/main/install.ps1 | iex

macOS / Linux

curl -fsSL https://raw.githubusercontent.com/nuroctane/nur-cli/main/install.sh | bash

After install

nur 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 70 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, Factory Droid, Cline, 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 / Droid / Cline / 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); Factory Droid works the same way through droid exec (NUR_DROID_BIN when the launcher is outside PATH). 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.

Sign-in handling and its regression coverage are documented in the 65-provider authentication review, including vendor CLI progress, token rotation, credential replacement, and Claude's manual fallback.

Update

nur update

Pulls 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-cliFresh prebuilt binary + stack
Re-run the one-linerFull rebuild from GitHub
Re-download + double-click Windows EXEPrebuilt path
nur installReinstall this binary + stack (no git pull)

Verify: nur --version · nur doctor. Detail: docs/setup.md → Update.

Other ways to install

1. npx (above)
Prebuilt binary, every OS. Fastest.
2. One-liner
Builds from source + full stack.
3. Prebuilt EXE (Windows)
Download → double-click → done.
4. From a clone
You already have the repo.

2. Prebuilt Windows binary

  1. Open Releases → latest
  2. Download nur-windows-x86_64.exe
  3. Double-click it (or .\nur-windows-x86_64.exe in 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 / Linux

4. 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 login

What install puts on your PC

Everything is local. Secrets never go into the git repo.

A. Tooling install may add (if missing)

PieceWhy
Rust / cargoBuilds the CLI (one-liner / cargo only; npx path needs none)
GitClone / update
Node.js 20+PLUR · Ruflo · Executor · skills · browser · AKM (the npx shim itself needs only Node 18+)
Bunomp backend
uvGraphify
ripgrep (rg)Fast grep / glob, and the file walk behind sgrep
sgrepSemantic code search (sgrep tool); built with cargo install --git https://github.com/context-dot-dev/sgrep --locked, model (32 MB) downloaded once
ffmpegextract_frames

B. NurCLI itself

PiecePath
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

C. Data home: ~/.nur/

PathPurpose
auth.jsonActive credential
provider_keys.json · provider_sessions.jsonPer-provider keys / OAuth sessions (failover + subagents)
config.tomlModel, effort, budgets, etc.
sessions/Chat sessions
plugins/ · plugins/registry.jsonMarketplace installs (/plugins, nur plugins)
skills/ · ruflo/ · tool-results/Skills, vector memory, spilled tool output
status.json · usage.jsonl · ade.jsonLive usage + host panels
nur.logTracing (not painted into the TUI)

D. Ecosystem packs

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


SurfaceWhat ships
TUIStreaming · duration chips · thought/tool cards · every transcript piece in a theme-coloured frame · 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 · 41 themes including 18 chromatic studies + transparency mode · provider logo in the busy line + tab title · every path in the transcript is a link that opens · block-structured markdown with theme-role colours · LaTeX rendering (image-peek build) · /receipt verifies the hash chain and exports spans · budgets · doctor
AgentManual / plan / auto · tools · subagents · todos · auto-compact · session $ / token budgets · Esc cancel · Shift+Tab mid-turn · NL skill auto-activation
Visionlook · extract_frames · prompt auto-attach · compact image attachments with on-demand previews (Ctrl+V paste or /image <path>, F4 preview)
Toolsread · edit · bash · web · browser (incl. element picking) · git · knowledge · agent · judgments (typesafe) · security agents (enclave) · memory (optmem connectome mem) · diagrams (excalidraw tldraw penecho) · policy (dogwood) · background (bg) · async (admission goal proposal message question) · docs (anydoc) · python REPL (repl) · excalidraw
EcosystemGraphify · GraphJin · PLUR · Ruflo · Executor · TypeSafe/Jev (+ keyless local engines) · Enclave (security agents over native MCP) · OptMem · Headroom · Connectome · dogwood · omp · browser · AKM · 1,000+ skills · /sc-research whitehat DeFi + X bounty intel + historical vuln library · plugin marketplace (Fable, Superpowers, Vercel, …)
HardeningApproval modes · parsed bash denylist · per-domain fetch approval · SSRF blocks · atomic ~/.nur IO · permissions/hooks · signed releases (minisign + SHA-256) · nur doctor

Why NurCLI

Real agent, not a wrapperModes, tools, streaming, cancel, subagents, auto-compact
Sees mediaMultimodal images/short video. Sparse frames, not spam.
One-shot installnpx nur-cli, one-liner, or Windows EXE · PATH · ecosystem · browser
Easy updatesnur update
Knowledge stackGraph · 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 skillsthink 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 localKeys only in ~/.nur/auth.json (or env) · prefer NUR_API_KEY

Feature map

Agent harness

  • Multi-provider via /login (70); 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
  • /poor cost-saver prompt
  • Usage ledger: nur ledger · /ledger totals seven agent log formats locally, without importing keys or prompt content (docs/ledger.md)
  • /startup-skill routes to the installed startup validation, competitor research, positioning, and pitch workflows
  • 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 — press c to switch between /sessions and /takeover
  • /model opens a live model list for the active provider (or /model <id> to set one directly)
  • Modal pickers fit their contents and terminal height, with visible scroll position and consistent keyboard/mouse selection. /theme previews align with their click targets; Enter saves and Esc restores the previous palette.
  • /plugins marketplace 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 until DONE or Ctrl+C
  • /local — run a model locally with bundled llama.cpp (auto-fetch llama-server + a GGUF sized to your RAM); no API key
  • /bench — benchmark models on your own tasks, replayed in isolated git worktrees and scored
  • nur gateway --chat <id> — run headless as a Telegram bot answering one chat; each message is an agent turn in your project (without --chat it only pairs: it replies with your chat id and runs nothing)

Tools (native)

FamilyTools
readread_file list_dir sgrep (semantic, Context.dev sgrep, first choice for "where is the code that…") grep glob
editwrite_file edit_file multi_edit apply_patch
shellbash
visionlook · extract_frames
webweb_search web_fetch
browserreal default browser via agent-browser-cli
terminal_browserin-terminal Chromium (terminal-browser.com); Windows host fallback
gitgit_status git_diff
knowledgegraphify graphjin plur ruflo executor skill memory
diagramsexcalidraw (hand-drawn .excalidraw via excalidraw-cli) · tldraw (offline desktop boards) · penecho (20k canvas: ink, MathJax, plots)
judgmentstypesafe (System One typed decisions: gate a call, judge a result, rank, route)
securityenclave (Enclave security agents over native MCP: pentests, code security review, findings)
memoryoptmem (permanent, ~/.optmem) · connectome (hierarchical + chronicle) · mem (vector/graph router) · memory · plur ruflo
policydogwood (Cedar + temporal policy over an agent event stream)
contextcontext (RLM store: register/peek/slice/search) · anydoc (PDF/DOCX/XLSX → markdown)
backgroundbg (jobs that outlive the turn) · admission (async subagent handles) · goal · proposal (staged outputs) · message (peer mail)
pythonrepl (long-lived kernel; state survives compaction)
agenttodo_write submit_plan agent omp · skill harness · codemode (one JS script, several read-only tool calls, one model round)

Vision

ToolWhat it does
lookAttach workspace images or short video so the model sees them
extract_framesSparse keyframes via ffmpeg → .nur/frames/<name>/
nur "steal UI design tokens from demo.mp4 and scaffold a matching component"

Image attachments: pasted screenshots (Ctrl+V) and /image <path> stay in a compact composer row until sent. F4 previews or cycles images; Shift+F4 removes one. Sent attachments offer click-to-peek. Previews render as real pixels on terminals that support the kitty graphics protocol, sixel, or iTerm2 inline images. Queued follow-ups keep their own attachments. Personal accent colors ([theme] accent = "#..." in config.toml) layer over any /theme pick. Details: docs/vision.md.

TypeSafe (Jev): a system-one boost layer for whatever provider you are using - tool gate, result judge, compaction with no summary, skill checks, routing. One key, every provider. The full Jev library (nur jev models · /jev models) lists every engine with its native endpoint, local adapter, or connection recipe; keys are selected per engine. Details: docs/typesafe.md.

Enclave: Enclave's autonomous security agents (pentests, code security review, findings, CVE monitoring) through Enclave's MCP server, spoken natively - no gateway. Enclave is not a chat provider, so its key is a sidecar like TypeSafe's: nur auth login --provider enclave, then ask for security work or run /enclave. Details: docs/enclave.md.

Ecosystem

The TUI includes an F6 session inspector for changes, tools, agents, and context, with compact completed-tool rows and viewport-based transcript rendering. See TUI controls.

PieceRole
GraphifyCode knowledge graph (graphify-out/ in the workspace; gitignored, regenerable)
ExcalidrawArchitecture / flow diagrams → .excalidraw (npm i -g excalidraw-cli; auto-provisioned)
PLURShared engram memory
RufloVector memory / swarm helpers under ~/.nur/ruflo/
ExecutorMCP / OpenAPI gateway
SkillsProgressive packs via skill
AKMSkill package manager
fractalHierarchical 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
ConnectomeAgent-native memory: hierarchical self-authored notes + an append-only chronicle (connectome)
dogwoodCedar + temporal policy language for governing tool calls (dogwood; on-demand checker, not a runtime gate)
tldrawOffline desktop boards and interactive demos (tldraw)
penecho20k canvas beyond chat: ink, MathJax, plots (/pen · /drawings)
akarsoPost/schedule across 14 social platforms (/akarso; outward-facing calls ask first)
HeadroomInline tool-result compression (default on; [headroom] enabled = false to disable)
TypeSafe · JevSystem One typed judgments woven through the harness (/typesafe · tool typesafe): tool gate, result judge, Jev-scored compaction with no summary, skill checks, routing. Provider-agnostic - one key boosts every provider. See docs/typesafe.md
EnclaveAutonomous security agents over native MCP (/enclave · tool enclave): pentests, code security review, findings, CVE monitoring. Sidecar key, every provider; calls are approval-gated. See docs/enclave.md
Local Jev enginesSame typed contract on this machine, no key: openJev-verdict-2.0 (CPU), Bespoke-Nimble-9B (NVIDIA GPU / Apple Silicon MLX), Laya Core ML (Apple Silicon ANE), plus a mock backend. nur jev start · nur jev use
OptMemPermanent memory at ~/.optmem (/optmem · /memo)
egakiImage/video gen (/egaki; ChatGPT-sub login supported. /image <path> is vision attach)
terminal-browserIn-terminal Chromium (/tb); Windows host fallback via agent-browser-cli
HelixDBOptional graph-vector resident behind mem: local-first durable outbox, background mirror, scoped vector/text recall (mem helix_status / helix_sync)
Text-to-CADAuto-provisioned STEP-first CAD, DXF, G-code, robot-description, sourcing, validation, and review skills (/cad, /cad-viewer, …). MIT
DroidRun Mobile HarnessAuto-provisioned Android, iOS, and cloud-phone operating harness for mobilerun-core (/mobile-harness). MIT
penechoInfinite thinking canvas run as a sidecar (/penecho). AGPL-3.0
t3codeVendor-CLI auth delegation — driver probing, env isolation, pairing. MIT

TUI (gold)

  • 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

Reliability

  • Atomic writes under ~/.nur/
  • Session *.json.bak · compaction .precompact.bak
  • API retries · nur doctor · install SHA-256
  • Logs: ~/.nur/nur.log

Secrets

On GitHubOn your PC only
Source, install scripts~/.nur/auth.json
No keys in the reposessions, 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.


Quick use

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).


Permission modes (Shift+Tab)

ModeBehavior
manualReads free; writes / shell need approval
planExplore + shell freely; blocks code authoring and VCS mutation
autoAuto-approve tools (-y)

TUI keys

KeyAction
↑ ↓ · wheel · scrollbarScroll transcript
Drag chat textSelect + auto-copy
Click ↓ N · EndJump to latest
Ctrl+A / C / V / XSelect-all · copy · paste · cut
EnterSend
Shift+EnterNewline
Shift+TabCycle permission mode
Ctrl+RReverse-search prompt history (Ctrl+R steps older, Esc cancels)
y / a / nApprove once / always (the tool, or for bash the programs it runs) / deny
EscClose peek → cancel turn

Slash commands (highlights)

CommandPurpose
/helpKeys + commands
/provider /loginChoose and activate provider (/login is an alias)
/auth /logoutManage all provider credentials / clear active provider
/modelShow and switch models for the active provider
/pluginsBrowse and install marketplace plugins (provider-picker UX)
/goal /btwSession goal / one-off note
/broChill mode: plain words, straight answers (toggle)
/adhdSticky ADHD-friendly output (toggle)
/<skill>Any installed skill — sticky, or /<skill> <prompt> one-shot
/scanMap the codebase → shareable foglamp architecture scan
/codesearch /csWorkspace ripgrep
/mc /mcpMCP via Executor
/feedback /tipsIssue / interaction tips
/budget /poorSpend ceiling / lean prompt
/cd /pwd /doctor /statusWorkspace + health
/sessions /resumeSession browser — press c to switch to the takeover window
/takeover /hijackCross-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 /dialkitDeep-integrated tools: akarso (native tool — post/schedule across 14 social platforms), OpenSEO (SEO research/audits via MCP), dialkit (live-tune interface parameters)
/failoverCross-provider failover + privacy tiers (provider-picker; Space adds a fallback, Alt+P sets its privacy tier)
/fusionMulti-model debate → one synthesized answer (/fusion panel <ids>, then /fusion <question>)
/localRun a model locally via bundled llama.cpp: /local up [tier|url] · status · models · down
/benchBenchmark models on your tasks: /bench add|list|run <name> [models]|remove
/undoRevert the last file edit (write / edit / multi_edit) this session
/receiptSession receipt — verify what actually ran (models, tools, privacy tiers), hash-chained
/cuaComputer-use desktop driver: /cua on = always-on background desktop control (elevated), off = on-demand only, status
/graphInline live execution-graph card for the current turn (tools · subagents · status)
/drawOpen / build interactive tldraw offline boards: /draw <file.tldraw> opens · /draw install · /draw <idea> builds
/steerInject 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.


ADE / Orca

PathRole
~/.nur/status.jsonLive tokens · cost · model · state
~/.nur/usage.jsonlPer-request log
~/.nur/ade.jsonDiscovery manifest

Config sketch

~/.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 prompt

See docs/configuration.md and docs/authentication.md.


License

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.

agentic
ai
ai-agent
ai-tools
anthropic
autonomous-agents
cli
code-assistant
coding-agent
developer-tools
llm
mcp
model-context-protocol
multi-provider
openai
ratatui
rust
terminal
tokio
tui

Project health

Latest release

0.51.0 · Oct 15, 2026

Releases this year

44