HKUDS

    HKUDS/nanobot

    #337 this week

    Ultra-lightweight, open-source, self-hosted personal AI agent framework in Python with WebUI, tools, memory, MCP, multi-agent workflows, automation, and chat apps

    ai
    ai-agents
    llm
    agent-framework
    ai-agent
    chatbot
    chatops
    discord-bot
    Python
    MIT
    46.6K stars
    8.2K forks
    46.6K GitHub watchers
    Updated 8/4/2026
    View on GitHub

    Backblaze Generative Media Hackathon

    Build the next generation of AI media apps with Genblaze, stored on Backblaze B2. $10,000 in prizes.

    Enter the hackathon

    Loading star history...

    Use Cases & Benefits

    • Provides a lightweight, open-source personal AI agent runtime for tools, chats, and workflows with WebUI and multi-channel chat app integration.
    • Enables persistent, customizable AI workflows with a small, readable core supporting long-term memory, automation, and flexible model/provider routing.
    • Use for integrating AI agents into chat platforms like Telegram, Discord, Slack, or WeChat to automate conversations and tasks.
    • Use for building and managing long-running AI workflows with memory, scheduled automations, and tool usage in a self-hosted environment.
    • Use for developers needing an extensible Python SDK and OpenAI-compatible API to embed AI agent capabilities into custom applications or services.

    About nanobot

    nanobot README cover

    🐈 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

    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

    Latest Release

    v0.2.2 - Durability Release

    Highlights:

    • Segmented WebUI transcripts
    • Python SDK runtime controls
    • Automation management
    • Search/STT provider improvements
    • Gateway/session/provider reliability

    See full changelog

    Open Source Partners

    Kimi Open Source Friends MiniMax

    Recent Updates

    • 2026-07-12 Explicit /goal activation, safer runtime and workspace access.
    • 2026-07-11 Syntax-highlighted previews and diffs, queued prompts, safer edits.
    • 2026-07-10 Stable model routing, multiline CLI input, new automation guide.
    • 2026-07-09 Live file-edit diffs, safer localhost setup, Matrix image fixes.
    • 2026-07-08 Safer WebUI/API setup, onboard refresh, responsive prompt rail.

    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:

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

    Windows 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.

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

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

    curl -fsSL https://raw.githubusercontent.com/HKUDS/nanobot/main/scripts/install.sh | sh -s -- --dev
    
    & ([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

    uv tool install nanobot-ai
    

    Install from PyPI with pip

    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:

    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:

    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.

    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:

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

    Set a model preset and make it active:

    {
      "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:

    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:

    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:

    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 chat sessions, workspace controls, Apps, Skills, Automations, and settings. For the full user guide, see docs/webui.md.

    nanobot webui preview

    Open it

    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

    nanobot architecture

    🐈 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

    📈 24/7 Real-Time Market Analysis

    🚀 Full-Stack Software Engineer

    📅 Smart Daily Routine Manager

    📚 Personal Knowledge Assistant

    Discovery • Insights • TrendsDevelop • Deploy • ScaleSchedule • Automate • OrganizeLearn • Memory • Reasoning

    📚 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

    This project was started by Xubin Ren as a personal open-source project and continues to be maintained in an individual capacity using personal resources, with contributions from the open-source community. Feel free to contact [email protected] for questions, ideas, or collaboration.

    Contributors

    Contributors

    Thanks for visiting ✨ nanobot!

    Views

    Discover Repositories

    Search across tracked repositories by name or description