Back to Nanobot

README

README.md

0.3.019.6 KB
Original Source
<picture> <source media="(prefers-color-scheme: dark)" srcset="./images/readme-cover-dark.svg"> </picture> <div align="center"> <p> <a href="https://nanobot.wiki/docs/latest/getting-started/nanobot-overview">English</a> | <a href="https://nanobot.wiki/cn/docs/latest/getting-started/nanobot-overview">็ฎ€ไฝ“ไธญๆ–‡</a> | <a href="https://nanobot.wiki/zh-Hant/docs/latest/getting-started/nanobot-overview">็น้ซ”ไธญๆ–‡</a> | <a href="https://nanobot.wiki/es/docs/latest/getting-started/nanobot-overview">Espaรฑol</a> | <a href="https://nanobot.wiki/fr/docs/latest/getting-started/nanobot-overview">Franรงais</a> | <a href="https://nanobot.wiki/id/docs/latest/getting-started/nanobot-overview">Bahasa Indonesia</a> | <a href="https://nanobot.wiki/ja/docs/latest/getting-started/nanobot-overview">ๆ—ฅๆœฌ่ชž</a> | <a href="https://nanobot.wiki/ko/docs/latest/getting-started/nanobot-overview">ํ•œ๊ตญ์–ด</a> | <a href="https://nanobot.wiki/ru/docs/latest/getting-started/nanobot-overview">ะ ัƒััะบะธะน</a> | <a href="https://nanobot.wiki/vi/docs/latest/getting-started/nanobot-overview">Tiแบฟng Viแป‡t</a> </p> <p> <a href="https://pypi.org/project/nanobot-ai/"></a> <a href="https://pepy.tech/project/nanobot-ai"></a>
<a href="https://github.com/HKUDS/nanobot/graphs/commit-activity" target="_blank">
    </a>
<a href="https://github.com/HKUDS/nanobot/issues?q=is%3Aissue%20is%3Aclosed" target="_blank">
    </a>
<a href="https://twitter.com/intent/follow?screen_name=nanobot_project" target="_blank">
    </a>
<a href="https://nanobot.wiki/docs/latest/getting-started/nanobot-overview"></a>
<a href="./COMMUNICATION.md"></a>
<a href="./COMMUNICATION.md"></a>
<a href="https://discord.gg/MnCvHqpUGB"></a>
</p> </div>

๐Ÿˆ nanobot is an open-source, ultra-lightweight personal AI agent you can truly own. It keeps the agent core small and readable while giving you the practical pieces for real long-running work: WebUI, chat channels, tools, memory, MCP, model routing, automation, and deployment.

Start Here

You want to...Go to
Install nanobot with no terminal/config backgroundStart Without Technical Background
Install quickly and get one CLI replyInstall and Quick Start
Open the bundled browser UIWebUI
Connect Telegram, Discord, WeChat, Slack, Email, Mattermost, or another chat appChat Apps
Configure providers, fallback models, Langfuse, MCP, web tools, or securityDocs and Configuration
Understand or extend the internalsArchitecture and Development
Deploy to the cloud or keep nanobot running as a serviceDeployment, including one-click Render setup

What can nanobot do?

nanobot is a self-hosted personal AI agent runtime. It can:

  • run in a browser WebUI or terminal
  • connect to Telegram, Discord, Slack, WeChat, Email, Mattermost, and other chat apps
  • use tools such as files, shell, web search, web fetch, MCP, cron, image generation, and subagents
  • keep session history and long-term memory through Dream
  • run long-horizon goals and scheduled automations
  • expose a Python SDK and OpenAI-compatible API for integrations
  • deploy as a long-running local or server-side agent gateway

Releases

Coming next: v0.3.0 - The Agency Release

The Agency Release turns nanobot from a durable workbench into an agent runtime that can coordinate helpers, switch models per session, and carry authorized work through to completion.

  • Consult inline subagents without leaving the current task
  • Switch model presets per session directly from the composer
  • Start from a guided WebUI setup with clearer execution controls
  • Apply configuration changes live across a more reliable provider, channel, and tool runtime

Follow the v0.3.0 release candidate

Current stable: v0.2.2 - The Durability Release

Open Source Partners

<p align="center"> <a href="https://platform.kimi.com?aff=nanobot"><picture><source media="(prefers-color-scheme: dark)" srcset="https://kimi-file.moonshot.cn/prod-chat-kimi/kfs/4/1/2026-06-05/1d8h69mt3v89kkekg24gg"></picture></a> <a href="https://platform.minimaxi.com/subscribe/token-plan?code=GILTJpMTqZ&source=link"></a> </p>

Recent Updates

  • 2026-07-24 Guided first-run setup, inline subagents, and model switching from the composer.
  • 2026-07-23 Grok OAuth with hosted X Search, live image settings, and clearer fallback models.
  • 2026-07-22 Parallel Search, live configuration reloads, richer app discovery, and a smoother mobile WebUI.
  • 2026-07-21 Codex fast mode, visible skill references, safer configuration saves, and sturdier task cleanup.
  • 2026-07-20 Cleaner code blocks and copy actions, self-contained channels, and steadier QQ reconnects.

For older updates, see the release archive or GitHub releases.

๐Ÿ’ก Why nanobot

  • Persistent workflows: goals, memory, tools, and chat context survive long-running work.
  • Chat-native reach: WebUI, API, Telegram, Feishu, Slack, Discord, Teams, email, and Mattermost.
  • Model freedom: OpenAI-compatible APIs, local LLMs, image generation, search, and fallbacks.
  • Small core: readable internals with MCP, memory, deployment, and automation built in.
  • Own your stack: inspect, customize, self-host, and extend without a giant platform.

๐Ÿ“ฆ Install

[!IMPORTANT] If you want the newest features and experiments, install from source.

If you want the most stable day-to-day experience, install from PyPI or with uv.

Pick one install method:

Prerequisites: Python 3.11 or newer. Git is only needed for a source install. Published packages already include the WebUI; a current-source install needs bun or npm to build it.

If terminals, API keys, or config files are new to you, use the guided zero-background walkthrough in Start Without Technical Background instead of this compact README path.

One-command setup

macOS / Linux:

bash
curl -fsSL https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.sh | sh

Windows PowerShell:

powershell
irm https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.ps1 | iex

The default command installs or upgrades nanobot-ai from PyPI, then starts nanobot onboard --wizard. It avoids system-wide pip installs by using an active virtual environment, uv, pipx, or a managed venv under ~/.nanobot/venv. If Quick Start finishes, skip the manual initialize/configure steps below and go straight to Open the WebUI. The installer also prints the exact command it used to run nanobot; reuse that full command below if nanobot is not on PATH.

To preview the plan without changing your environment, pass --dry-run; combine it with --dev when you want to preview the main-branch install.

bash
curl -fsSL https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.sh | sh -s -- --dry-run
powershell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.ps1))) --dry-run

To install the current main branch instead, pass --dev:

bash
curl -fsSL https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.sh | sh -s -- --dev
powershell
& ([scriptblock]::Create((irm https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.ps1))) --dev

If you prefer to inspect the script first, open scripts/install.sh or scripts/install.ps1.

Install with uv

bash
uv tool install nanobot-ai

Install from PyPI with pip

bash
python -m pip install nanobot-ai

If pip reports externally-managed-environment on macOS or Linux, use the one-command installer, uv tool install nanobot-ai, pipx install nanobot-ai, or install inside a virtual environment.

Install from source

bun or npm must be available. From an activated virtual environment:

bash
git clone https://github.com/HKUDS/nanobot.git
cd nanobot
python -m pip install .

On Windows, if pip reports that it cannot launch npm, run cd webui, npm.cmd install --package-lock=false, npm.cmd run build, and cd .. in order, then retry the install. Contributors who need an editable checkout should follow CONTRIBUTING.md and webui/README.md.

Verify the install:

bash
nanobot --version

If nanobot is not on PATH, invoke it through the method that installed it: reuse the recommended installer's command, use uv tool run --from nanobot-ai nanobot ... or pipx run --spec nanobot-ai nanobot ..., or use the Python executable from the environment where pip installed the package.

๐Ÿš€ Quick Start

1. Initialize

Skip this step if the one-command setup already started the wizard and Quick Start finished there.

bash
nanobot onboard

Use nanobot onboard --wizard if you prefer an interactive setup.

2. Configure (~/.nanobot/config.json)

Skip this step if you already configured provider and model settings in the wizard.

nanobot onboard creates ~/.nanobot/config.json and ~/.nanobot/workspace/. Configure these two parts in the config file. Add or merge the following blocks into the existing file instead of replacing the whole file.

The example below uses a generic OpenAI-compatible custom provider so the compact path does not recommend one hosted service. Provider examples are recipes, not rankings or endorsements. For copyable provider-specific setup, see Provider Cookbook.

Set your API key:

json
{
  "providers": {
    "custom": {
      "apiKey": "your-api-key",
      "apiBase": "https://api.example.com/v1"
    }
  }
}

Set a model preset and make it active:

json
{
  "modelPresets": {
    "primary": {
      "label": "Primary",
      "provider": "custom",
      "model": "model-id-from-your-provider",
      "maxTokens": 8192,
      "contextWindowTokens": 200000,
      "temperature": 0.1
    }
  },
  "agents": {
    "defaults": {
      "modelPreset": "primary"
    }
  }
}

Direct agents.defaults.provider and agents.defaults.model still work for existing configs, but named presets are the recommended path because they also power /model switching and fallbackModels.

For another provider, the same config shape still applies:

ReplaceWhere
Provider config keyproviders.<provider>
API keyproviders.<provider>.apiKey
Preset provider namemodelPresets.primary.provider
Model IDmodelPresets.primary.model
Endpoint URL, only when neededproviders.<provider>.apiBase

3. Open the WebUI

The stable-compatible path is:

bash
nanobot gateway

Leave the terminal open and visit http://127.0.0.1:8765. Current source versions also provide nanobot webui, which prepares the local WebSocket channel if needed, starts the gateway, and opens the browser automatically. The first-run WebUI binds to 127.0.0.1 by default, so it is not exposed to your LAN. Prefer not to keep a terminal open? Use nanobot gateway --background, then manage it with nanobot gateway status, logs, restart, and stop.

For manual or terminal-only setup, test one CLI message:

bash
nanobot status
nanobot agent -m "Hello!"

In nanobot status, it is normal for most providers to say not set. The active preset's provider should be configured, and Config plus Workspace should show check marks.

If that works, start an interactive chat:

bash
nanobot agent

Need help with PATH, API keys, provider/model matching, or JSON errors? See the fuller Install and Quick Start and Troubleshooting.

๐ŸŒ WebUI

The WebUI ships inside the published wheel โ€” no extra build step. It is the browser workbench for topics, workspace controls, Apps, Skills, Automations, and settings. For the full user guide, see docs/webui.md.

<p align="center"> </p>

Open it

bash
nanobot webui

On current source versions, the command enables the local WebSocket channel after confirmation, starts the gateway, and opens http://127.0.0.1:8765. If your installed stable release does not include nanobot webui, run nanobot gateway and open that address manually. To open it from another device on your LAN, see WebUI docs -> LAN access.

The WebUI is served by the WebSocket channel on port 8765 by default. The gateway's 18790 port is for the health endpoint, not the browser UI.

[!TIP] Working on the WebUI itself? Check out webui/README.md for the source-tree, Vite dev server, build, and test workflow.

๐Ÿ—๏ธ Architecture

<p align="center"> </p>

๐Ÿˆ nanobot stays lightweight by centering everything around a small agent loop: messages come in from chat apps, the LLM decides when tools are needed, and memory or skills are pulled in only as context instead of becoming a heavy orchestration layer. That keeps the core path readable and easy to extend, while still letting you add channels, tools, memory, and deployment options without turning the system into a monolith.

โœจ Features

<table align="center"> <tr align="center"> <th><p align="center">๐Ÿ“ˆ 24/7 Real-Time Market Analysis</p></th> <th><p align="center">๐Ÿš€ Full-Stack Software Engineer</p></th> <th><p align="center">๐Ÿ“… Smart Daily Routine Manager</p></th> <th><p align="center">๐Ÿ“š Personal Knowledge Assistant</p></th> </tr> <tr> <td align="center"><p align="center"></p></td> <td align="center"><p align="center"></p></td> <td align="center"><p align="center"></p></td> <td align="center"><p align="center"></p></td> </tr> <tr> <td align="center">Discovery โ€ข Insights โ€ข Trends</td> <td align="center">Develop โ€ข Deploy โ€ข Scale</td> <td align="center">Schedule โ€ข Automate โ€ข Organize</td> <td align="center">Learn โ€ข Memory โ€ข Reasoning</td> </tr> </table>

๐Ÿ“š Docs

Browse the repo docs for the latest features and GitHub development version, or visit nanobot.wiki for the stable release documentation.

๐Ÿค Contribute & Roadmap

PRs welcome! The codebase is intentionally small and readable. ๐Ÿค—

Contribution Flow

See CONTRIBUTING.md for setup, review, and contribution guidelines.

Roadmap โ€” Pick an item and open a PR!

  • Multi-modal โ€” See and hear (images, voice, video)
  • Long-term memory โ€” Never forget important context
  • Better reasoning โ€” Multi-step planning and reflection
  • More integrations โ€” Calendar and more
  • Self-improvement โ€” Learn from feedback and mistakes

Contact

Nanobot was started by Xubin Ren as a personal open-source project and is now maintained collaboratively with contributors from the open-source community. Feel free to contact [email protected] for questions, ideas, or collaboration.

Contributors

<a href="https://github.com/HKUDS/nanobot/graphs/contributors"> </a> <p align="center"> <em> Thanks for visiting โœจ nanobot!</em> </p>