Features

Everything NanoAgent can do

A local-first AI coding agent built for real engineering work — from the terminal to the editor to your CI pipeline. Every capability below is sourced straight from the README and documentation, grouped so you can jump to what matters.

🖥️

CLI experience

A keyboard-first agent that lives in your terminal via the nanoai command.

⌨️

Interactive sessions

Full terminal UI with persistent conversation history and a live activity stream of every action and reasoning step.

↩️

Session resume

Pick up where you left off with --session <guid>; NanoAgent prints the resume command on exit.

🎛️

Rich CLI flags

-p/--prompt, -y/--yes, --stdin, --session, --profile, --thinking, and --acp cover scripted and interactive runs.

F2 model switch

Swap the active model mid-session from the terminal without breaking your flow.

💬

Slash commands

Type / for inline suggestions — /help, /config, /models, /profile, /clear, /exit and many more.

🧱

One-command install

Bash installer for macOS/Linux and a PowerShell installer for Windows — no build step required.

Terminal (TUI) shortcuts

  • F2 Switch the active model with the arrow-key picker
  • / Open inline slash-command suggestions
  • Move through suggestions and picker options
  • Enter Accept the highlighted command or model
  • Esc Back out to the settings menu
  • ! Run the line as a direct shell command
  • !! Launch a live background terminal
⚙️

Oneshot & headless

Non-interactive runs for scripts, pipelines, and automation.

🎯

One-shot prompts

Run a single query with nanoai -p "…" and capture the response — ideal for scripts and cron jobs.

Piped stdin

Feed context straight from a pipe with --stdin so the agent reads from upstream commands.

Auto-approve

-y/--yes skips interactive prompts for fully unattended, fail-closed automation runs.

🔑

Env-var setup

Preseed everything with NANOAGENT_PROVIDER, NANOAGENT_MODEL, NANOAGENT_THINKING, NANOAGENT_REASONING and NANOAGENT_API_KEY.

⌨️

Shell & terminals

Run commands without leaving the conversation.

! direct shell

Prefix a line with ! to run a local shell command directly — no agent round-trip, no approval gate.

‼️

!! background terminals

Launch a background terminal with !! whose output streams live while the session keeps going.

🧮

Terminal management

Track running terminals with /terminals; concurrency and TTL limits are configurable per session.

🛠️

shell_command tool

The agent executes system commands through a permission-gated tool with sandbox enforcement.

📂

File, search & web tools

The built-in toolset the agent uses to read your code and reach the web — every call permission-gated.

📄

File operations

file_read, file_write, and file_delete read and edit workspace files under your permission policy.

🔎

Navigate & search

directory_list, text_search, and search_files browse structure and find code by content or path.

🌐

web_search

Network-gated web search lets the agent pull in current information when you allow it.

🔗

webfetch

Fetch a URL over HTTP with approval — bring docs, issues, or specs straight into the conversation.

🧭

headless_browser

Chromium-family browser automation for pages that need real rendering — covered by the network permission.

🚫

.nanoignore aware

File tools respect .nanoignore so sensitive paths stay out of the agent's reach.

🔌

ACP — Agent Client Protocol

Drive the local CLI from any editor over a clean JSON-RPC channel.

🔗

nanoai --acp

Starts a stdio-based JSON-RPC server speaking line-delimited messages over stdin/stdout.

🏠

Purely local

No network transport — editors talk to the agent as a local child process, keeping data on your machine.

🧵

Session methods

session/new, load, prompt, cancel, and close — one active session per process.

🔐

Optional token auth

Require a token via NANOAGENT_ACP_AUTH_TOKEN; client mcpServers merge with your config.

🧰

MCP & Skills

Extend the agent with external tools and reusable playbooks.

🧩

MCP servers

Load Model Context Protocol servers over stdio or streamable HTTP, from user- or workspace-level config.

🎚️

Tool filtering

enabledTools/disabledTools plus per-server startup and tool timeouts keep things tight.

🔍

/mcp inspection

List active servers, custom providers, and the dynamic tools they expose at a glance.

🧪

Custom tools

Any language that reads JSON stdin and writes stdout becomes a tool exposed as custom__<name>.

📓

Skills

Drop task- or tool-specific playbooks in .nanoagent/skills (e.g. a dotnet or code-review SKILL.md).

💾

Custom slash commands

Save repeatable prompts in .nanoagent/commands with namespaces, front matter, and $ARGUMENTS.

🧠

Repo memory

Team knowledge that lives in version control — reviewable, not hidden.

📚

Reviewable memory files

Knowledge lives in .nanoagent/memory — architecture, conventions, decisions, known-issues, and test-strategy markdown.

🎓

Lessons

lessons.jsonl can auto-capture failures and fixes, then inject relevant lessons back into future prompts.

📌

AGENTS.md instructions

Persistent project instructions via AGENTS.md, plus full or appended system-prompt overrides.

🛡️

Approval & redaction

Memory writes require approval by default, and secret-looking values are redacted before storage.

🌐

Model providers

Use the model that fits your budget and policy — subscription, API key, or fully local.

🔑

Subscription sign-in

OAuth into ChatGPT Plus/Pro and Anthropic Claude Pro/Max, plus device-code login for GitHub Copilot.

🗝️

API-key providers

OpenAI, Anthropic, Google AI Studio, OpenRouter, Kilo Code, Cerebras, Groq, DeepSeek, and Ollama Cloud.

💻

Local providers

Run on-device with Ollama (localhost:11434) or LM Studio for fully offline workflows.

🔌

OpenAI-compatible

Point at any custom base URL and API key to plug in third-party or self-hosted endpoints.

🔎

Model discovery

NanoAgent automatically discovers available models from your selected provider.

👤

Provider profiles

Save and switch between provider configurations; onboarding fails closed and offers reconfiguration.

🎚️

Model & reasoning controls

Tune how the model thinks and switch it on the fly.

🔀

Model switching

The /models picker, /use <model>, and F2 let you change models instantly.

🧠

Thinking mode

/thinking on|off toggles whether the provider's extended reasoning is shown.

📈

Reasoning effort

/reasoning sets effort from minimal through low/medium/high up to xhigh and max.

🪙

Token & cost tracking

Cached input tokens are tracked separately from standard input for accurate pricing.

🤝

Profiles & subagents

Right-sized agents for building, planning, reviewing, and delegating.

🏗️

Primary profiles

build for edit-enabled implementation, plan for read-only investigation, and review for findings-first code review.

🔭

Subagents

general handles delegated implementation; explore does fast, read-only codebase discovery.

📣

@subagent handoff

Mention a subagent directly — e.g. @explore How does auth work? — for a single-turn handoff.

🧭

Delegate & orchestrate

agent_delegate hands off one focused task; agent_orchestrate coordinates subtasks.

ask_question tool

The agent can ask you a question with options, multi-select, or free-form text when it needs a decision.

✍️

Custom agent prompts

Override any profile's prompt with markdown in .nanoagent/agents/*.md.

🧩

LSP & code intelligence

Real symbols, types, and diagnostics from language servers — not guesses.

🧠

Language Server Protocol

The code_intelligence tool gives the agent definitions, completions, diagnostics, and read-only rename previews.

🌍

Multi-language

Built-in support for TypeScript/JavaScript, Python, C#, Rust, Go, and C/C++.

🔧

Server detection & status

Discovers servers from built-ins and workspace overrides, with health and install hints on demand.

🩺

/lsp commands

/lsp, /lsp refresh, and /lsp file <path> manage code intelligence from the session.

🗂️

Codebase indexing

Local embeddings for fast, relevant repository search.

🧬

Local embeddings

Lightweight per-file vectors are cached in .nanoagent/cache/codebase-index.json — entirely on-device.

♻️

Incremental updates

Unchanged files are reused and only changed files re-indexed; optional auto-update runs after each turn.

🚫

Ignore-aware

Respects .gitignore, .nanoignore, and built-in exclusions.

🗄️

/index commands

/index, update, status, rebuild, and list control the index.

🛡️

Permissions & sandboxing

You decide what runs automatically, what needs approval, and what's denied.

🚦

Allow / Ask / Deny

Per-tool permission modes gate file edits, shell commands, network, MCP tools, and memory writes.

📦

Sandbox modes

ReadOnly, WorkspaceWrite, and DangerFullAccess scope what the agent may touch.

🧱

OS-native sandboxing

bubblewrap on Linux, sandbox-exec on macOS, and a Windows sandbox runner for foreground commands.

⚖️

Session overrides

/allow and /deny adjust rules on the fly; explicit deny patterns always win.

Undo / redo

Tracked file edits can be undone and redone with /undo and /redo.

🔒

Secret redaction

Pattern-based redaction protects credentials across output, memory, audit, and logs.

🪟

Editors & desktop

The same agent, wherever you work.

🖥️

Desktop app

A visual workspace with chat, model controls, budget config, file-edit tracking, and per-workspace sections.

🆚

VS Code extension

rizwan3d.nanoagent docks a chat view and adds send-selection, review-file, review-diff, plan, and apply-changes commands.

🟪

Visual Studio extension

NanoAgent.VS keeps a NanoAgent tool window inside Visual Studio 2022+.

🧠

JetBrains via ACP

Any ACP-capable editor drives the local nanoai CLI over the protocol.

🔃

Diff review & apply

Review Git diffs and apply suggested changes directly from the editor.

CI code reviews

Automated, findings-first reviews on every pull and merge request.

🐙

GitHub Actions

A ready-made workflow runs NanoAgent against PR diffs and posts a review comment.

🦊

GitLab CI

A pipeline + script reviews merge requests and comments back using your GitLab token.

🪣

Bitbucket Pipelines

The same review automation wired for Bitbucket with an access-token integration.

📝

Review profile

A read-only pr-reviewer profile computes the diff, skips drafts, and retains artifacts for 14 days.

🧪

Developer experience

The tooling, transparency, and trust that make the agent practical day to day.

💰

Budget controls

Optional local or cloud budgets with monthly USD caps, alert thresholds, and per-1M token pricing.

🪝

Lifecycle hooks

Run hooks around task, tool, file, shell, web, memory, permission, and delegation events with timeouts.

📑

Tool audit log

Optionally record every tool call to .nanoagent/logs/tool-audit.jsonl for review.

🎨

Tool-output modes

full, compact, or preview rendering — set per-profile or with /tooloutput.

🧰

/init scaffolding

Scaffold workspace-local .nanoagent files with recommended, minimal, or custom presets.

📦

SDK on NuGet

Embed NanoAgent in your own .NET app via the NanoAgent package on NuGet.org.

💿

Cross-platform builds

Windows x64 (installer + portable), macOS Apple Silicon & Intel, and Linux x64/arm64.

🔏

Verified releases

Every release ships SHA256SUMS and GitHub artifact attestations for SLSA build provenance.

⬆️

In-place updates

/update checks for new versions and /update now installs immediately.

🏠

Local-first privacy

Workspace files, config, sections, index cache, and credentials stay on your machine — only prompts and selected context go to the provider.

📊

Anonymous telemetry, opt-out

Aggregate, anonymous usage analytics only — turn it off entirely with /disableanalytics.

📐

Task-based benchmarks

The benchmarks/ suite tracks bug-fixing, repo understanding, patch quality, security review, and tool safety over time.

Ship with an agent that keeps you in control.

Local-first. Reviewable. Open source under Apache-2.0.