{"id":44144991,"url":"https://github.com/HKUDS/nanobot","last_synced_at":"2026-02-09T17:01:16.041Z","repository":{"id":335848041,"uuid":"1147094660","full_name":"HKUDS/nanobot","owner":"HKUDS","description":"\"🐈 nanobot: The Ultra-Lightweight Clawdbot\"","archived":false,"fork":false,"pushed_at":"2026-02-07T18:15:19.000Z","size":32775,"stargazers_count":12215,"open_issues_count":208,"forks_count":1638,"subscribers_count":72,"default_branch":"main","last_synced_at":"2026-02-07T20:49:23.629Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HKUDS.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-01T07:16:15.000Z","updated_at":"2026-02-07T20:48:38.000Z","dependencies_parsed_at":"2026-02-07T14:00:37.074Z","dependency_job_id":null,"html_url":"https://github.com/HKUDS/nanobot","commit_stats":null,"previous_names":["hkuds/nanobot"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/HKUDS/nanobot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HKUDS%2Fnanobot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HKUDS%2Fnanobot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HKUDS%2Fnanobot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HKUDS%2Fnanobot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HKUDS","download_url":"https://codeload.github.com/HKUDS/nanobot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HKUDS%2Fnanobot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29273139,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-09T13:47:44.167Z","status":"ssl_error","status_checked_at":"2026-02-09T13:47:43.721Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-09T02:00:34.019Z","updated_at":"2026-02-09T17:01:16.013Z","avatar_url":"https://github.com/HKUDS.png","language":"Python","funding_links":[],"categories":["AI Agent Frameworks","\u003cimg src=\"./assets/satellite.svg\" width=\"16\" height=\"16\" style=\"vertical-align: middle;\"\u003e Satellites","Python","Frameworks","Personal Assistants","框架与衍生项目","Alternatives \u0026 Competitors","6 つのトラック","Uncategorized","Experimental Hardware Projects","🗂️ Projects","Main Projects","Frameworks \u0026 Libraries","Ecosystem","AI Agent Frameworks \u0026 SDKs","Lightweight Alternatives \u0026 Forks","By Category","A01_文本生成_文本对话","Alternative Architekturen","Related Projects","⚡ Alternative Clients \u0026 Runtimes","Catalog","Open-Source LLM \u0026 Agent Projects","Full-Featured","OpenClaw Rewrites \u0026 Alternatives","Terminal-native coding agents","Table of Contents","Agent Harness 🚀"],"sub_categories":["General Agent Frameworks","Memory for Local Models","Tier 6：Skill Discovery / Agent Infrastructure","Uncategorized","📋 Project Overview","Personal AI Agents","Context Management","Multi-Agent Collaboration Systems","Lightweight","大语言对话模型及数据","AI Assistants","OpenClaw Forks","OpenClaw ecosystem","Reference Harness Implementations","5. The Convergence: Harness-as-a-Service (HaaS)"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"nanobot_logo.png\" alt=\"nanobot\" width=\"500\"\u003e\n  \u003ch1\u003enanobot: Ultra-Lightweight Personal AI Assistant\u003c/h1\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://pypi.org/project/nanobot-ai/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/nanobot-ai\" alt=\"PyPI\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://pepy.tech/project/nanobot-ai\"\u003e\u003cimg src=\"https://static.pepy.tech/badge/nanobot-ai\" alt=\"Downloads\"\u003e\u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/badge/python-≥3.11-blue\" alt=\"Python\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-MIT-green\" alt=\"License\"\u003e\n    \u003ca href=\"./COMMUNICATION.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/Feishu-Group-E9DBFC?style=flat\u0026logo=feishu\u0026logoColor=white\" alt=\"Feishu\"\u003e\u003c/a\u003e\n    \u003ca href=\"./COMMUNICATION.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/WeChat-Group-C5EAB4?style=flat\u0026logo=wechat\u0026logoColor=white\" alt=\"WeChat\"\u003e\u003c/a\u003e\n    \u003ca href=\"https://discord.gg/MnCvHqpUGB\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord-Community-5865F2?style=flat\u0026logo=discord\u0026logoColor=white\" alt=\"Discord\"\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n🐈 **nanobot** is an **ultra-lightweight** personal AI assistant inspired by [Clawdbot](https://github.com/openclaw/openclaw) \n\n⚡️ Delivers core agent functionality in just **~4,000** lines of code — **99% smaller** than Clawdbot's 430k+ lines.\n\n## 📢 News\n\n- **2026-02-01** 🎉 nanobot launched! Welcome to try 🐈 nanobot!\n\n## Key Features of nanobot:\n\n🪶 **Ultra-Lightweight**: Just ~4,000 lines of code — 99% smaller than Clawdbot - core functionality.\n\n🔬 **Research-Ready**: Clean, readable code that's easy to understand, modify, and extend for research.\n\n⚡️ **Lightning Fast**: Minimal footprint means faster startup, lower resource usage, and quicker iterations.\n\n💎 **Easy-to-Use**: One-click to depoly and you're ready to go.\n\n## 🏗️ Architecture\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"nanobot_arch.png\" alt=\"nanobot architecture\" width=\"800\"\u003e\n\u003c/p\u003e\n\n## ✨ Features\n\n\u003ctable align=\"center\"\u003e\n  \u003ctr align=\"center\"\u003e\n    \u003cth\u003e\u003cp align=\"center\"\u003e📈 24/7 Real-Time Market Analysis\u003c/p\u003e\u003c/th\u003e\n    \u003cth\u003e\u003cp align=\"center\"\u003e🚀 Full-Stack Software Engineer\u003c/p\u003e\u003c/th\u003e\n    \u003cth\u003e\u003cp align=\"center\"\u003e📅 Smart Daily Routine Manager\u003c/p\u003e\u003c/th\u003e\n    \u003cth\u003e\u003cp align=\"center\"\u003e📚 Personal Knowledge Assistant\u003c/p\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cp align=\"center\"\u003e\u003cimg src=\"case/search.gif\" width=\"180\" height=\"400\"\u003e\u003c/p\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cp align=\"center\"\u003e\u003cimg src=\"case/code.gif\" width=\"180\" height=\"400\"\u003e\u003c/p\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cp align=\"center\"\u003e\u003cimg src=\"case/scedule.gif\" width=\"180\" height=\"400\"\u003e\u003c/p\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cp align=\"center\"\u003e\u003cimg src=\"case/memory.gif\" width=\"180\" height=\"400\"\u003e\u003c/p\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003eDiscovery • Insights • Trends\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eDevelop • Deploy • Scale\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eSchedule • Automate • Organize\u003c/td\u003e\n    \u003ctd align=\"center\"\u003eLearn • Memory • Reasoning\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## 📦 Install\n\n**Install from source** (latest features, recommended for development)\n\n```bash\ngit clone https://github.com/HKUDS/nanobot.git\ncd nanobot\npip install -e .\n```\n\n**Install with [uv](https://github.com/astral-sh/uv)** (stable, fast)\n\n```bash\nuv tool install nanobot-ai\n```\n\n**Install from PyPI** (stable)\n\n```bash\npip install nanobot-ai\n```\n\n## 🚀 Quick Start\n\n\u003e [!TIP]\n\u003e Set your API key in `~/.nanobot/config.json`.\n\u003e Get API keys: [OpenRouter](https://openrouter.ai/keys) (LLM) · [Brave Search](https://brave.com/search/api/) (optional, for web search)\n\u003e You can also change the model to `minimax/minimax-m2` for lower cost.\n\n**1. Initialize**\n\n```bash\nnanobot onboard\n```\n\n**2. Configure** (`~/.nanobot/config.json`)\n\n```json\n{\n  \"providers\": {\n    \"openrouter\": {\n      \"apiKey\": \"sk-or-v1-xxx\"\n    }\n  },\n  \"agents\": {\n    \"defaults\": {\n      \"model\": \"anthropic/claude-opus-4-5\"\n    }\n  },\n  \"tools\": {\n    \"web\": {\n      \"search\": {\n        \"apiKey\": \"BSA-xxx\"\n      }\n    }\n  }\n}\n```\n\n\n**3. Chat**\n\n```bash\nnanobot agent -m \"What is 2+2?\"\n```\n\nThat's it! You have a working AI assistant in 2 minutes.\n\n## 🖥️ Local Models (vLLM)\n\nRun nanobot with your own local models using vLLM or any OpenAI-compatible server.\n\n**1. Start your vLLM server**\n\n```bash\nvllm serve meta-llama/Llama-3.1-8B-Instruct --port 8000\n```\n\n**2. Configure** (`~/.nanobot/config.json`)\n\n```json\n{\n  \"providers\": {\n    \"vllm\": {\n      \"apiKey\": \"dummy\",\n      \"apiBase\": \"http://localhost:8000/v1\"\n    }\n  },\n  \"agents\": {\n    \"defaults\": {\n      \"model\": \"meta-llama/Llama-3.1-8B-Instruct\"\n    }\n  }\n}\n```\n\n**3. Chat**\n\n```bash\nnanobot agent -m \"Hello from my local LLM!\"\n```\n\n\u003e [!TIP]\n\u003e The `apiKey` can be any non-empty string for local servers that don't require authentication.\n\n## 💬 Chat Apps\n\nTalk to your nanobot through Telegram or WhatsApp — anytime, anywhere.\n\n| Channel | Setup |\n|---------|-------|\n| **Telegram** | Easy (just a token) |\n| **WhatsApp** | Medium (scan QR) |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eTelegram\u003c/b\u003e (Recommended)\u003c/summary\u003e\n\n**1. Create a bot**\n- Open Telegram, search `@BotFather`\n- Send `/newbot`, follow prompts\n- Copy the token\n\n**2. Configure**\n\n```json\n{\n  \"channels\": {\n    \"telegram\": {\n      \"enabled\": true,\n      \"token\": \"YOUR_BOT_TOKEN\",\n      \"allowFrom\": [\"YOUR_USER_ID\"]\n    }\n  }\n}\n```\n\n\u003e Get your user ID from `@userinfobot` on Telegram.\n\n**3. Run**\n\n```bash\nnanobot gateway\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eWhatsApp\u003c/b\u003e\u003c/summary\u003e\n\nRequires **Node.js ≥18**.\n\n**1. Link device**\n\n```bash\nnanobot channels login\n# Scan QR with WhatsApp → Settings → Linked Devices\n```\n\n**2. Configure**\n\n```json\n{\n  \"channels\": {\n    \"whatsapp\": {\n      \"enabled\": true,\n      \"allowFrom\": [\"+1234567890\"]\n    }\n  }\n}\n```\n\n**3. Run** (two terminals)\n\n```bash\n# Terminal 1\nnanobot channels login\n\n# Terminal 2\nnanobot gateway\n```\n\n\u003c/details\u003e\n\n## ⚙️ Configuration\n\nConfig file: `~/.nanobot/config.json`\n\n### Providers\n\n\u003e [!NOTE]\n\u003e Groq provides free voice transcription via Whisper. If configured, Telegram voice messages will be automatically transcribed.\n\n| Provider | Purpose | Get API Key |\n|----------|---------|-------------|\n| `openrouter` | LLM (recommended, access to all models) | [openrouter.ai](https://openrouter.ai) |\n| `anthropic` | LLM (Claude direct) | [console.anthropic.com](https://console.anthropic.com) |\n| `openai` | LLM (GPT direct) | [platform.openai.com](https://platform.openai.com) |\n| `groq` | LLM + **Voice transcription** (Whisper) | [console.groq.com](https://console.groq.com) |\n| `gemini` | LLM (Gemini direct) | [aistudio.google.com](https://aistudio.google.com) |\n\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eFull config example\u003c/b\u003e\u003c/summary\u003e\n\n```json\n{\n  \"agents\": {\n    \"defaults\": {\n      \"model\": \"anthropic/claude-opus-4-5\"\n    }\n  },\n  \"providers\": {\n    \"openrouter\": {\n      \"apiKey\": \"sk-or-v1-xxx\"\n    },\n    \"groq\": {\n      \"apiKey\": \"gsk_xxx\"\n    }\n  },\n  \"channels\": {\n    \"telegram\": {\n      \"enabled\": true,\n      \"token\": \"123456:ABC...\",\n      \"allowFrom\": [\"123456789\"]\n    },\n    \"whatsapp\": {\n      \"enabled\": false\n    }\n  },\n  \"tools\": {\n    \"web\": {\n      \"search\": {\n        \"apiKey\": \"BSA...\"\n      }\n    }\n  }\n}\n```\n\n\u003c/details\u003e\n\n## CLI Reference\n\n| Command | Description |\n|---------|-------------|\n| `nanobot onboard` | Initialize config \u0026 workspace |\n| `nanobot agent -m \"...\"` | Chat with the agent |\n| `nanobot agent` | Interactive chat mode |\n| `nanobot gateway` | Start the gateway |\n| `nanobot status` | Show status |\n| `nanobot channels login` | Link WhatsApp (scan QR) |\n| `nanobot channels status` | Show channel status |\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eScheduled Tasks (Cron)\u003c/b\u003e\u003c/summary\u003e\n\n```bash\n# Add a job\nnanobot cron add --name \"daily\" --message \"Good morning!\" --cron \"0 9 * * *\"\nnanobot cron add --name \"hourly\" --message \"Check status\" --every 3600\n\n# List jobs\nnanobot cron list\n\n# Remove a job\nnanobot cron remove \u003cjob_id\u003e\n```\n\n\u003c/details\u003e\n\n## 🐳 Docker\n\n\u003e [!TIP]\n\u003e The `-v ~/.nanobot:/root/.nanobot` flag mounts your local config directory into the container, so your config and workspace persist across container restarts.\n\nBuild and run nanobot in a container:\n\n```bash\n# Build the image\ndocker build -t nanobot .\n\n# Initialize config (first time only)\ndocker run -v ~/.nanobot:/root/.nanobot --rm nanobot onboard\n\n# Edit config on host to add API keys\nvim ~/.nanobot/config.json\n\n# Run gateway (connects to Telegram/WhatsApp)\ndocker run -v ~/.nanobot:/root/.nanobot -p 18790:18790 nanobot gateway\n\n# Or run a single command\ndocker run -v ~/.nanobot:/root/.nanobot --rm nanobot agent -m \"Hello!\"\ndocker run -v ~/.nanobot:/root/.nanobot --rm nanobot status\n```\n\n## 📁 Project Structure\n\n```\nnanobot/\n├── agent/          # 🧠 Core agent logic\n│   ├── loop.py     #    Agent loop (LLM ↔ tool execution)\n│   ├── context.py  #    Prompt builder\n│   ├── memory.py   #    Persistent memory\n│   ├── skills.py   #    Skills loader\n│   ├── subagent.py #    Background task execution\n│   └── tools/      #    Built-in tools (incl. spawn)\n├── skills/         # 🎯 Bundled skills (github, weather, tmux...)\n├── channels/       # 📱 WhatsApp integration\n├── bus/            # 🚌 Message routing\n├── cron/           # ⏰ Scheduled tasks\n├── heartbeat/      # 💓 Proactive wake-up\n├── providers/      # 🤖 LLM providers (OpenRouter, etc.)\n├── session/        # 💬 Conversation sessions\n├── config/         # ⚙️ Configuration\n└── cli/            # 🖥️ Commands\n```\n\n## 🤝 Contribute \u0026 Roadmap\n\nPRs welcome! The codebase is intentionally small and readable. 🤗\n\n**Roadmap** — Pick an item and [open a PR](https://github.com/HKUDS/nanobot/pulls)!\n\n- [x] **Voice Transcription** — Support for Groq Whisper (Issue #13)\n- [ ] **Multi-modal** — See and hear (images, voice, video)\n- [ ] **Long-term memory** — Never forget important context\n- [ ] **Better reasoning** — Multi-step planning and reflection\n- [ ] **More integrations** — Discord, Slack, email, calendar\n- [ ] **Self-improvement** — Learn from feedback and mistakes\n\n### Contributors\n\n\u003ca href=\"https://github.com/HKUDS/nanobot/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=HKUDS/nanobot\" /\u003e\n\u003c/a\u003e\n\n\n## ⭐ Star History\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://star-history.com/#HKUDS/nanobot\u0026Date\"\u003e\n    \u003cpicture\u003e\n      \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=HKUDS/nanobot\u0026type=Date\u0026theme=dark\" /\u003e\n      \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/svg?repos=HKUDS/nanobot\u0026type=Date\" /\u003e\n      \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=HKUDS/nanobot\u0026type=Date\" style=\"border-radius: 15px; box-shadow: 0 0 30px rgba(0, 217, 255, 0.3);\" /\u003e\n    \u003c/picture\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cem\u003e Thanks for visiting ✨ nanobot!\u003c/em\u003e\u003cbr\u003e\u003cbr\u003e\n  \u003cimg src=\"https://visitor-badge.laobi.icu/badge?page_id=HKUDS.nanobot\u0026style=for-the-badge\u0026color=00d4ff\" alt=\"Views\"\u003e\n\u003c/p\u003e\n\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003enanobot is for educational, research, and technical exchange purposes only\u003c/sub\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHKUDS%2Fnanobot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FHKUDS%2Fnanobot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHKUDS%2Fnanobot/lists"}