NanoBot: Open Source AI Agent With 41K Stars in 2026
Hong Kong University's HKUDS lab built a personal AI agent runtime in roughly 4,000 lines of Python -- and the community gave it 41,000+ GitHub stars in return. Here is what it actually does and whether it belongs in your toolkit.
By Free AI News Editorial · · · 9 min read
When a new AI agent framework lands on GitHub's trending list and holds that position for weeks, it usually means one of two things: it caught a wave of hype, or it actually solves a problem people have been duct-taping around. NanoBot, from Hong Kong University's HKUDS Data Intelligence Lab, is looking like the second kind. The project accumulated 41,700+ stars not because of a viral marketing moment but because it answers a specific question that most agent frameworks dodge: how do you run a genuinely useful personal AI agent on your own infrastructure, with your own keys, reachable through the chat app you already use?
This review pulls from the official GitHub repository, community write-ups, and hands-on installation notes. We cover what NanoBot is, how it differs from competitors, how to install it in under two minutes, and what the fresh v0.2.1 Workbench Release changed.
What Is NanoBot and Who Built It?
NanoBot is an open-source, ultra-lightweight AI agent runtime built by the HKUDS team at the University of Hong Kong's Data Intelligence Lab. The project's stated design goal is to give developers and power users a personal agent they can fully own: readable source code, standard package installation, no vendor lock-in, and a core small enough to understand without a week of study.
The entire runtime core weighs in at roughly 4,000 lines of Python -- a figure the community frequently cites as a differentiator, because most agent frameworks pile on abstraction layers that push their line counts into the tens of thousands before you add a single real skill. Independent reviewer Andrew Chu described it as "90% of an OpenClaw-style core in a fraction of the size," and community contributors report going from cold read to first merged pull request in under a week -- something rarely possible in larger frameworks.
The project is MIT-licensed, packaged on PyPI as nanobot-ai, and requires Python 3.11 or later. It runs on Linux, macOS, and Windows, and ships a Dockerfile so you can containerize it without touching the Python toolchain at all.
This is part of a broader wave of self-hosted agent tools that have gained traction in 2026. If you want a broader look at what is available, our open-source AI section tracks every major release.
What Providers and Channels Does NanoBot Support?
Provider breadth is where NanoBot punches well above its weight class. As of v0.2.1, it ships native support for 20+ LLM providers:
The router supports automatic fallback models -- if your primary provider hits a rate limit or goes down, NanoBot switches to the next configured option without interrupting a task. This is particularly useful for long-running overnight goals where you don't want a single API hiccup to kill the session.
On the channel side, NanoBot can receive and send messages through 14 platforms simultaneously, all sharing the same session state:
- Chat apps -- Telegram, Discord, Slack, WhatsApp, Matrix, Microsoft Teams
- Enterprise platforms -- Feishu/Lark, WeChat, WeCom, DingTalk, QQ
- Email -- full read/send support with self-loop protection
- Built-in Web UI -- ships inside the Python wheel as of v0.2.0, dark mode and i18n included
- OpenAI-compatible API + WebSocket -- lets you point other tools at your own NanoBot instance
The cross-channel design means you can start a research task from your phone on Telegram and check the output in the browser UI on your laptop -- without the agent losing context between platforms. You can compare how this stacks up against other free AI tools and self-hosted options in our tools directory.
How Do You Install and Run NanoBot?
Installation is genuinely fast. The recommended path using uv (a modern Python package manager) takes under two minutes on a clean machine:
uv tool install nanobot-ai
nanobot setup
nanobot start
The nanobot setup wizard autocompletes provider names, asks for your API key, and validates the connection before letting you proceed. If you prefer plain pip:
python3 -m venv .venv && source .venv/bin/activate
pip install nanobot-ai
nanobot setup && nanobot start
For a containerized setup, the repository ships a ready-made docker-compose.yml:
git clone https://github.com/HKUDS/nanobot.git
cd nanobot
docker compose up -d
The Dockerfile pins Python 3.13, runs the agent as a non-root user, and mounts logs to a volume so sessions survive container restarts. macOS users can also install a LaunchAgent with a one-liner added in April 2026, which makes NanoBot auto-start at login and stay alive across sleep cycles -- making it feel like a persistent background assistant rather than a script you remember to run.
To wire up Telegram, for example, you create a bot via BotFather, paste the token into NanoBot's config, and restart. The agent immediately starts responding to messages in that channel. Adding Discord, Slack, or WhatsApp follows the same pattern. Bright Data's engineering team published a detailed walkthrough on connecting NanoBot to web scraping MCP tools, which shows how cleanly it integrates with external tool servers.
What Makes NanoBot Different From Other AI Agent Frameworks?
The AI agent framework space is crowded -- LangGraph, AutoGen, CrewAI, OpenClaw, Claude Code, OpenAI Codex, and dozens of others all compete for the same developer attention. NanoBot's differentiation comes from a deliberate set of constraints that its maintainers refuse to violate.
- Size discipline -- The core stays around 4,000 lines. New features go into plugin code (channels, providers, skills), not into the core loop. This keeps the foundation auditable and hackable even as the ecosystem grows.
- Two-stage "Dream" memory -- NanoBot doesn't just write recent exchanges to a file. Its Dream system runs a two-stage process: working memory holds the active session, and a background consolidation step compresses older context into long-term storage. This allows genuinely long-running agents without context windows ballooning indefinitely.
- Natural-language scheduling -- The
/goalcommand (added in v0.2.0) lets you set sustained objectives that persist across turns. Combined with natural-language cron ("remind me every Monday morning"), the agent can carry out multi-day research or monitoring tasks without manual prompting. - MCP as a first-class citizen -- Model Context Protocol support exposes tools, resources, and prompts to the agent. NanoBot ships with a built-in registry for MCP extensions so you can add capability without touching core code. A ClawHub skill connector brings a community library of pre-built skills directly into the install wizard.
- No vendor dependency -- Claude Code only runs Anthropic models. Codex is OpenAI-native. NanoBot is model-agnostic by architecture: switching from GPT-4o to DeepSeek V4 or a local Ollama instance is a one-line config change, no code required.
The contributor experience also deserves mention. Developer Kiplangat Korir documented going from reading the NanoBot codebase cold to shipping 21 merged contributions in a single month -- an unusually fast ramp that reflects how readable the source actually is. For developers who want to understand what they're running rather than just installing a black box, that matters.
If you're weighing this against paid options, our compare section breaks down free vs. paid AI agent tools across categories like model access, memory, and channel support.
What Did the v0.2.1 Workbench Release Add?
On June 1, 2026 -- the day before this article published -- the NanoBot team shipped v0.2.1, the Workbench Release. The focus was turning the bundled Web UI from a basic chat interface into something closer to a daily working environment.
- Thought/response timelines -- The UI now shows a clearer visual separation between the agent's internal reasoning steps and its final output, making it easier to audit what the model was actually doing on a complex task.
- Live file-edit activity -- When the agent reads or writes files as part of a task, the activity appears in the UI in real time rather than after the fact. This matters for coding and research workflows where you want to see progress, not just a result.
- Project workspaces -- You can now namespace sessions and files by project, so a coding agent and a research agent don't share context when you don't want them to.
- Model and context controls -- Per-session model overrides and context window tuning are now configurable from the UI without editing config files.
- CLI Apps + MCP extensions -- The extension registry from v0.1.5 is now fully integrated with a GUI, so installing and managing MCP tools no longer requires command-line knowledge.
- Steadier sustained goals -- The
/goalsystem received reliability fixes, particularly for long multi-step tasks that span hours or involve tool calls mid-execution.
Earlier in the same week (May 30), the team also hardened Matrix channel verification, added bounded media downloads for safety, and improved the WebUI model timeline display -- showing that the pace of shipping has not slowed as the project matures. You can follow release notes directly at the GitHub releases page.
Is NanoBot Safe to Use on Real Data?
The safety picture is reasonable for a project at this stage, with some important caveats. On the plus side: the Dockerfile runs the agent as a non-root user, the shell sandbox was explicitly tightened in April 2026, web redirect handling was hardened, and email self-loop protection prevents the agent from accidentally spamming itself in an automated workflow. Matrix verification and bounded media downloads were both addressed in the v0.2.1 cycle.
The honest caveat from the community review by Andrew Chu: "Surface area is huge for a 'tiny' agent -- a 4K-line core with 20 providers and 14 channels means most of the bytes live in plugin code, and not every channel is equally polished." If you are running NanoBot against sensitive business data, you should treat it as you would any early-stage open-source infrastructure tool: audit the channel plugins you actually use, do not grant it credentials it doesn't need, and run it in an isolated environment where possible.
For personal productivity use -- coding assistance, research, scheduling, note-taking -- the current security posture is appropriate. For enterprise deployments involving customer data, additional review is warranted. The MIT license means you can audit and modify anything you need to.
Track how NanoBot's pricing (free) and feature set evolve over time alongside other models on our free tier tracker.
🔑 Key Takeaways
- NanoBot is fully free and MIT-licensed, so you can self-host, fork, and modify it without any subscription cost -- your only expense is the LLM API tokens you consume.
- The core runtime is roughly 4,000 lines of Python, making it one of the most readable agent frameworks available and unusually easy to contribute to or audit.
- Version 0.2.1 (June 1, 2026) upgraded the Web UI into a full workbench with live file activity, project workspaces, and clearer thought/response timelines for real-time task monitoring.
- Twenty-plus LLM providers and 14 chat channels are supported simultaneously, including fully local options like Ollama and LM Studio that cost nothing to run beyond electricity.
- The Dream two-stage memory system and natural-language
/goalscheduling enable genuinely long-running autonomous tasks, distinguishing NanoBot from simple chatbot wrappers.
Frequently Asked Questions
Is NanoBot free to use?
Yes. NanoBot is MIT-licensed and free to download, modify, and self-host. You supply your own LLM API keys -- DeepSeek V4, OpenAI, Anthropic, Gemini, or any of 20+ supported providers. There is no NanoBot subscription fee. Your only costs are the API tokens you consume, and providers like Ollama running local models are entirely free beyond hardware costs.
What models does NanoBot support?
NanoBot supports 20+ LLM providers: OpenAI (GPT-4o, o-series), Anthropic Claude, DeepSeek V4, Kimi K2.6, Qwen, Google Gemini, Mistral, MiniMax, Moonshot, GLM, vLLM, Ollama, LM Studio, GitHub Copilot (GPT-5/o-series via OAuth), OpenRouter (200+ models), Azure OpenAI, AWS Bedrock, VolcEngine, StepFun, Xiaomi MiMo, Hugging Face, and NVIDIA NIM. Fallback model chains mean you can configure automatic provider switching on rate limits.
How does NanoBot compare to Claude Code or OpenClaw?
NanoBot sits between a single-CLI tool (Claude Code) and a fully managed cloud runtime (OpenClaw). Its core is roughly 4,000 lines of readable Python. Claude Code locks you to Anthropic models; NanoBot works with any provider. OpenClaw is a managed cloud product with its own infrastructure; NanoBot is entirely self-hosted with no external service dependency. The tradeoff is that NanoBot requires more setup but gives you complete control.
Does NanoBot require a GPU?
No. NanoBot itself is a lightweight Python process with no GPU requirement -- it connects to remote API providers by default. If you want to run models locally without any API costs, you pair it with Ollama or LM Studio on a machine that has a compatible GPU. But the agent runtime itself runs on any modern CPU with a few hundred MB of RAM and no special hardware.
How do I install NanoBot?
The fastest path: run uv tool install nanobot-ai, then nanobot setup and nanobot start. The interactive wizard walks you through provider and model selection. Alternatives include pip install nanobot-ai inside a virtualenv, cloning the repo for source-level hacking, or docker compose up -d from the repo root for a containerized setup. macOS users can also register it as a LaunchAgent so it starts automatically at login.
What is the Dream memory system in NanoBot?
Dream is NanoBot's two-stage memory architecture. Working memory holds the current session's active context in real time. A background consolidation step then compresses older exchanges into long-term storage, preventing the context window from growing without bound during extended tasks. This allows the agent to maintain coherent context across hours or even days of operation -- something a simple conversation buffer cannot do reliably.