Skip to content

Repository files navigation

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

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


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

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

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)

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

B. NurCLI itself

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

C. Data home: ~/.nur/

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)

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


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

Why NurCLI

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 UIor /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

Feature map

Agent harness

  • 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
  • /poor cost-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 — 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)
  • /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 — run headless as a Telegram bot; each message is an agent turn in your project

Tools (native)

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

Vision

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.

Ecosystem

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

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


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)

Mode Behavior
manual Reads free; writes / shell need approval
plan Explore + shell freely; blocks code authoring and VCS mutation
auto Auto-approve tools (-y)

TUI keys

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

Slash commands (highlights)

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.


ADE / Orca

Path Role
~/.nur/status.json Live tokens · cost · model · state
~/.nur/usage.jsonl Per-request log
~/.nur/ade.json Discovery 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.

Releases

Packages

Contributors

Languages