NanoCoder
Health Warn
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
This project is a minimalist, educational AI coding agent written in Python. Inspired by Andrej Karpathy's nanoGPT, it serves as a blueprint that distills the complex architecture of Claude Code into a highly readable ~1,300-line framework, allowing developers to easily read, fork, and build their own coding agents.
Security Assessment
Overall Risk: Low. The light code scan of 12 files found no dangerous patterns and confirmed there are no hardcoded secrets or malicious code. However, by its very nature as a coding agent, the tool does process user inputs and executes shell commands to perform file edits and run code. It also makes standard external network requests to connect to OpenAI-compatible LLM APIs (such as OpenAI, Claude, or local Ollama instances). Standard environment variables are used for API authentication, which is a safe practice.
Quality Assessment
The codebase is distributed under the highly permissive MIT license and is clearly documented with a detailed, bilingual README. The repository is actively maintained, with the most recent push occurring today. The only notable drawback is its extremely low community visibility—the project currently has only 5 GitHub stars. While this indicates it is an early-stage or niche personal project, its educational value and clean code structure remain high.
Verdict
Safe to use. The clean code scan, active maintenance, and MIT license make it a trustworthy educational tool and starting point for developers, though its low community engagement means it is best suited for personal or experimental use rather than production environments.
Minimal AI coding agent (~950 LoC Python) inspired by Claude Code. Works with any LLM. Think nanoGPT for coding agents.
NanoCoder
中文 | English | Claude Code Architecture Deep Dive (7 articles)
512,000 lines of TypeScript → 1,300 lines of Python.
I spent a weekend reverse-engineering the leaked Claude Code source — all half a million lines. Then I stripped it down to the load-bearing walls and rebuilt them in Python. The result: every key architectural pattern from Claude Code, in a codebase you can read in one sitting.
NanoCoder is not another AI coding tool. It's a blueprint — the nanoGPT of coding agents. Read it, fork it, build your own.
$ nanocoder -m kimi-k2.5
You > read main.py and fix the broken import
> read_file(file_path='main.py')
> edit_file(file_path='main.py', ...)
--- a/main.py
+++ b/main.py
@@ -1 +1 @@
-from utils import halper
+from utils import helper
Fixed: halper → helper.
What You Get
Claude Code's 512K lines distilled to 7 patterns that actually matter:
| Pattern | Claude Code | NanoCoder |
|---|---|---|
| Search-and-replace editing (unique match + diff) | FileEditTool | tools/edit.py — 70 lines |
| Parallel tool execution | StreamingToolExecutor (530 lines) | agent.py — ThreadPool |
| 3-layer context compression | HISTORY_SNIP → Microcompact → CONTEXT_COLLAPSE | context.py — 145 lines |
| Sub-agent with isolated context | AgentTool (1,397 lines) | tools/agent.py — 50 lines |
| Dangerous command blocking | BashTool (1,143 lines) | tools/bash.py — 95 lines |
| Session persistence | QueryEngine (1,295 lines) | session.py — 65 lines |
| Dynamic system prompt | prompts.ts (914 lines) | prompt.py — 35 lines |
Every pattern is a real, runnable implementation — not a diagram or a blog post.
Install
pip install nanocoderagent
Pick your model — any OpenAI-compatible API works:
# Kimi K2.5
export OPENAI_API_KEY=your-key OPENAI_BASE_URL=https://api.moonshot.ai/v1
nanocoder -m kimi-k2.5
# Claude Opus 4.6 (via OpenRouter)
export OPENAI_API_KEY=your-key OPENAI_BASE_URL=https://openrouter.ai/api/v1
nanocoder -m anthropic/claude-opus-4-6
# OpenAI GPT-5
export OPENAI_API_KEY=sk-...
nanocoder -m gpt-5
# DeepSeek V3
export OPENAI_API_KEY=sk-... OPENAI_BASE_URL=https://api.deepseek.com
nanocoder -m deepseek-chat
# Qwen 3.5
export OPENAI_API_KEY=sk-... OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
nanocoder -m qwen-max
# Ollama (local)
export OPENAI_API_KEY=ollama OPENAI_BASE_URL=http://localhost:11434/v1
nanocoder -m qwen3:32b
# One-shot mode
nanocoder -p "add error handling to parse_config()"
Architecture
The whole thing fits in your head:
nanocoder/
├── cli.py REPL + commands 160 lines
├── agent.py Agent loop + parallel tools 120 lines
├── llm.py Streaming client + retry 150 lines
├── context.py 3-layer compression 145 lines
├── session.py Save/resume 65 lines
├── prompt.py System prompt 35 lines
├── config.py Env config 30 lines
└── tools/
├── bash.py Shell + safety + cd tracking 95 lines
├── edit.py Search-replace + diff 70 lines
├── read.py File reading 40 lines
├── write.py File writing 30 lines
├── glob_tool.py File search 35 lines
├── grep.py Content search 65 lines
└── agent.py Sub-agent spawning 50 lines
Use as a Library
from nanocoder import Agent, LLM
llm = LLM(model="kimi-k2.5", api_key="your-key", base_url="https://api.moonshot.ai/v1")
agent = Agent(llm=llm)
response = agent.chat("find all TODO comments in this project and list them")
Add Your Own Tools (~20 lines)
from nanocoder.tools.base import Tool
class HttpTool(Tool):
name = "http"
description = "Fetch a URL."
parameters = {"type": "object", "properties": {"url": {"type": "string"}}, "required": ["url"]}
def execute(self, url: str) -> str:
import urllib.request
return urllib.request.urlopen(url).read().decode()[:5000]
Commands
/model <name> Switch model mid-conversation
/compact Compress context (like Claude Code's /compact)
/tokens Token usage
/save Save session to disk
/sessions List saved sessions
/reset Clear history
quit Exit
How It Compares
| Claude Code | Claw-Code | Aider | NanoCoder | |
|---|---|---|---|---|
| Code | 512K lines (closed) | 100K+ lines | 50K+ lines | 1,300 lines |
| Models | Anthropic only | Multi | Multi | Any OpenAI-compatible |
| Readable? | No | Hard | Medium | One afternoon |
| Purpose | Use it | Use it | Use it | Understand it, build yours |
The Deep Dive
I wrote 7 articles breaking down Claude Code's architecture — the agent loop, tool system, context compression, streaming executor, multi-agent, and 44 hidden feature flags. If you want to understand why NanoCoder is designed this way, start there.
License
MIT. Fork it, learn from it, ship something better. A mention of this project is appreciated.
Built by Yufeng He · Agentic AI Researcher @ Moonshot AI (Kimi)
Claude Code Source Analysis — 170K+ reads, 6000 bookmarks on Zhihu
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found