Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

nanocode-cli

A coding agent I use, maintain, and customize in one Python file.

nanocode demo

Editing code and running tools in one interactive session.

中文

Install

Requires Python 3.11+ and uv.

uv tool install nanocode-cli
nanocode --init-config

Configure any OpenAI-compatible provider in ~/.nanocode/config.toml. For example, DeepSeek Flash:

[provider]
active = "default"

[provider.default]
url = "https://api.deepseek.com"
key = "API_KEY"
model = "deepseek-v4-flash"

Replace url, key, and model with the values from your provider.

Then start:

nanocode

Upgrade: nanocode upgrade

Common flags:

  • -c, --last, --latest: resume the latest session in the current project
  • --resume [UID]: resume a saved session; without UID, resumes latest
  • --yolo: skip tool confirmations
  • --mcp <selector>: choose which MCP servers to enable
  • --config <path>: use a specific TOML config file

A working personal agent

nanocode does not introduce a new kind of coding agent. It combines familiar features—reading and editing files, running commands, follow-ups, sessions, diffs, MCP, and skills—into a tool I use personally.

It works on real repositories, including its own: I use nanocode to build and maintain nanocode. Everything ships in one Python module, so I can change the behavior directly whenever I want the workflow to work differently.

nanocode session

Resuming a saved session with its conversation and tool history.

Highlights

  • Live follow-ups: type while the agent works; queued input joins the next model request or can interrupt the current one.
  • Anchored edits: structured edits use line:hash anchors and reject stale file content instead of guessing.
  • Resumable sessions: conversation, completed tool calls, diffs, and working memory survive interruption and -c or --resume.
  • Built-in diff viewer: /diff shows changes from the latest user round and the net session result.
  • Prompt-cache aware: stable instructions, environment, and tool schemas preserve reusable request prefixes.
  • Provider compatibility: tested with DeepSeek, OpenCode, Alibaba Cloud, and ZenMux; other OpenAI-compatible endpoints should work in principle. Anthropic APIs, remote/local MCP servers, and Markdown skills are also supported.

Common commands

Command Description
/help Show the complete command and tool reference
/status Runtime status: token usage, context %, cache hit rate
/context Model context frame — environment and memory (goal/plan/known/check)
/diff Latest edit diffs and net session diff (interactive, tabbed)
/compact Compact context now
/mcp Manage MCP servers and tools
/model [MODEL] Show or switch model
/yolo Toggle tool confirmations

Run /help for every command and tool. Interactive selectors support j/k, arrows, / search, Enter, and Esc; input supports history completion, Ctrl-R search, and Ctrl-X to edit the current input in $EDITOR (falling back to vim).

Configuration

Config file: ~/.nanocode/config.toml

The generated file documents common provider and runtime options. Multiple [provider.<name>] sections are supported; select one with [provider] active = "name". Use /config to inspect the active configuration and /help for runtime commands.

MCP

Connect to Model Context Protocol servers and expose their tools through MCP.

Remote server (HTTP):

[mcp.example]
url = "https://example.com/mcp"
bearer_token_env_var = "EXAMPLE_MCP_TOKEN"  # optional
enabled = true

Local server (stdio):

[mcp.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
enabled = true

Runtime management: /mcp to view status, /mcp tools [server] to list tools, /mcp login/logout <server> for OAuth.

Skills

Skills are instruction packs the agent loads on demand. Each skill is a folder with a SKILL.md.

  • Discovery: .nanocode/skills/ (project) and ~/.nanocode/skills/ (user); project wins on name clash
  • Model view: only a name + description index sits in context; the full body loads on Skill(name) call
  • Inline reference: type $name in a message (Tab-completes) to inject that skill's instructions
  • Bundled scripts: {skill_dir} expands to the skill's absolute path for running via Bash
  • Built-in: ships with a nanocode-help skill containing a self-contained manual and auto-generated command/tool/config lists

Safety

Use at your own risk. nanocode can edit files and run shell commands in the environment where it is started. It does not provide sandbox protection. Run it inside your own sandbox, container, VM, or other isolated environment when needed.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nanocode_cli-0.9.8.tar.gz (124.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nanocode_cli-0.9.8-py3-none-any.whl (120.2 kB view details)

Uploaded Python 3

File details

Details for the file nanocode_cli-0.9.8.tar.gz.

File metadata

  • Download URL: nanocode_cli-0.9.8.tar.gz
  • Upload date:
  • Size: 124.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for nanocode_cli-0.9.8.tar.gz
Algorithm Hash digest
SHA256 a934106dc679d9ff435f39778327ecb04d00d02d7ace13f1b4546d4b5da4e76f
MD5 b95b70138928127c49c290002fc28ed4
BLAKE2b-256 0316ef7d2ca2a02f6876858fc9679446eb8c078aed802318515c7bd4ada3be9e

See more details on using hashes here.

File details

Details for the file nanocode_cli-0.9.8-py3-none-any.whl.

File metadata

  • Download URL: nanocode_cli-0.9.8-py3-none-any.whl
  • Upload date:
  • Size: 120.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for nanocode_cli-0.9.8-py3-none-any.whl
Algorithm Hash digest
SHA256 ad1844be9e7d2716ba5cbf7a6d2ea8758e7a340c19f9c2895d19069fa9e6e10e
MD5 9563c476b0a859a5b7359559aad942df
BLAKE2b-256 6586b1a9087b2ea8e44e1af676c1d2401f8da1a46f5dced4422bcf9e463c5e80

See more details on using hashes here.

Release history Release notifications | RSS feed

0.9.9

2 files

This release

0.9.8 This release

2 files

0.9.7

2 files

0.9.6

2 files

0.9.4

2 files

0.9.2

2 files

0.9.1

2 files

0.7.2

2 files

0.7.1

2 files

0.7.0

2 files

0.6.6

2 files

0.6.4

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.5.7

2 files

0.5.4

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.9

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page