nanobot-ai-assistant
```markdown
What this skill does
```markdown
---
name: nanobot-ai-assistant
description: Ultra-lightweight personal AI assistant framework with multi-channel support, MCP integration, and agent capabilities
triggers:
- set up nanobot AI assistant
- configure nanobot with telegram discord
- install nanobot agent framework
- connect nanobot to chat platforms
- nanobot MCP tool integration
- deploy lightweight AI agent
- nanobot provider configuration
- build AI assistant with nanobot
---
# nanobot AI Assistant
> Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection.
nanobot is an ultra-lightweight personal AI assistant framework (~99% fewer lines of code than OpenClaw) that delivers full agent functionality including multi-channel chat integrations, MCP (Model Context Protocol) support, memory, scheduled tasks, web search, and extensible skills.
## Installation
### From Source (recommended for development)
```bash
git clone https://github.com/HKUDS/nanobot.git
cd nanobot
pip install -e .
```
### From PyPI (stable)
```bash
pip install nanobot-ai
```
### With uv (fast, isolated)
```bash
uv tool install nanobot-ai
```
### Update
```bash
pip install -U nanobot-ai
# or
uv tool upgrade nanobot-ai
```
**Requirements:** Python ≥ 3.11
## Quick Start
```bash
# 1. Initialize workspace
nanobot onboard
# 2. Edit config at ~/.nanobot/config.json
# 3. Start chatting
nanobot agent
```
## Configuration
All configuration lives in `~/.nanobot/config.json`.
### Minimal Configuration
```json
{
"providers": {
"openrouter": {
"apiKey": "$OPENROUTER_API_KEY"
}
},
"agents": {
"defaults": {
"model": "anthropic/claude-opus-4-5",
"provider": "openrouter"
}
}
}
```
### Full Configuration Example
```json
{
"providers": {
"openrouter": {
"apiKey": "$OPENROUTER_API_KEY"
},
"openai": {
"apiKey": "$OPENAI_API_KEY"
},
"anthropic": {
"apiKey": "$ANTHROPIC_API_KEY"
},
"deepseek": {
"apiKey": "$DEEPSEEK_API_KEY"
},
"ollama": {
"baseUrl": "http://localhost:11434"
}
},
"agents": {
"defaults": {
"model": "anthropic/claude-opus-4-5",
"provider": "openrouter"
}
},
"memory": {
"enabled": true
},
"search": {
"provider": "tavily",
"apiKey": "$TAVILY_API_KEY"
}
}
```
### Supported Providers
| Provider | Config Key | Notes |
|----------|-----------|-------|
| OpenRouter | `openrouter` | Recommended for global access |
| OpenAI | `openai` | Direct OpenAI API |
| Anthropic | `anthropic` | Direct Anthropic API |
| DeepSeek | `deepseek` | |
| Qwen | `qwen` | |
| Moonshot/Kimi | `moonshot` | |
| MiniMax | `minimax` | |
| VolcEngine | `volcengine` | |
| Azure OpenAI | `azure` | |
| Ollama | `ollama` | Local models via `baseUrl` |
| vLLM | `vllm` | Local LLMs |
| OpenAI Codex | `codex` | OAuth login |
## CLI Reference
```bash
# Initialize workspace
nanobot onboard
# Start interactive agent chat
nanobot agent
# Start all configured channels (Telegram, Discord, etc.)
nanobot channels start
# Login / setup a specific channel
nanobot channels login
# List available skills
nanobot skills list
# Install a skill from ClawHub
nanobot skills install <skill-name>
# Show version
nanobot --version
# Restart bot (useful in channel sessions)
/restart
```
## Channel Setup
### Telegram (Recommended)
```json
{
"channels": {
"telegram": {
"enabled": true,
"token": "$TELEGRAM_BOT_TOKEN",
"allowFrom": ["YOUR_TELEGRAM_USER_ID"]
}
}
}
```
Setup steps:
1. Message `@BotFather` on Telegram → `/newbot`
2. Copy the token into config
3. Find your User ID in Telegram settings
4. Run `nanobot channels start`
### Discord
```json
{
"channels": {
"discord": {
"enabled": true,
"token": "$DISCORD_BOT_TOKEN",
"allowFrom": ["YOUR_DISCORD_USER_ID"]
}
}
}
```
Requires **Message Content Intent** enabled in Discord Developer Portal.
### Slack
```json
{
"channels": {
"slack": {
"enabled": true,
"botToken": "$SLACK_BOT_TOKEN",
"appToken": "$SLACK_APP_TOKEN"
}
}
}
```
### WhatsApp
```json
{
"channels": {
"whatsapp": {
"enabled": true
}
}
}
```
```bash
nanobot channels login # Scan QR code to authenticate
```
After upgrading nanobot with WhatsApp:
```bash
rm -rf ~/.nanobot/bridge
nanobot channels login
```
### Feishu (Lark)
```json
{
"channels": {
"feishu": {
"enabled": true,
"appId": "$FEISHU_APP_ID",
"appSecret": "$FEISHU_APP_SECRET"
}
}
}
```
### DingTalk
```json
{
"channels": {
"dingtalk": {
"enabled": true,
"appKey": "$DINGTALK_APP_KEY",
"appSecret": "$DINGTALK_APP_SECRET"
}
}
}
```
### Email
```json
{
"channels": {
"email": {
"enabled": true,
"imap": {
"host": "imap.gmail.com",
"port": 993,
"user": "$EMAIL_USER",
"password": "$EMAIL_PASSWORD"
},
"smtp": {
"host": "smtp.gmail.com",
"port": 587,
"user": "$EMAIL_USER",
"password": "$EMAIL_PASSWORD"
}
}
}
}
```
## MCP (Model Context Protocol)
nanobot supports MCP for connecting external tools and data sources.
### MCP Configuration
```json
{
"mcp": {
"servers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "$GITHUB_TOKEN"
}
},
"remote-sse": {
"url": "https://your-mcp-server.com/sse",
"headers": {
"Authorization": "Bearer $MCP_TOKEN"
}
}
}
}
}
```
MCP servers can expose tools, prompts, and resources that nanobot's agent can use automatically during conversations.
## Web Search
```json
{
"search": {
"provider": "tavily",
"apiKey": "$TAVILY_API_KEY"
}
}
```
Supported search providers: `tavily`, and other multi-provider options. Web search enables the agent to retrieve real-time information.
## Memory System
Token-based memory is enabled by default. The agent automatically stores and retrieves relevant context across conversations.
```json
{
"memory": {
"enabled": true,
"maxTokens": 4000
}
}
```
## Scheduled Tasks (Cron)
nanobot supports natural language cron scheduling. Tell the agent:
```
"Remind me every day at 9am to check emails"
"Send me a market summary every weekday at 8am"
```
The agent will set up recurring tasks stored in your workspace.
## Skills / Plugins
```bash
# Browse available skills on ClawHub
nanobot skills list
# Install a skill
nanobot skills install web-scraper
# Skills live in ~/.nanobot/skills/
```
Custom skills are Python files placed in `~/.nanobot/skills/`. Each skill exposes tools the agent can call.
### Writing a Custom Skill
```python
# ~/.nanobot/skills/my_skill.py
from nanobot.skill import skill, tool
@skill(name="my-skill", description="My custom skill")
class MySkill:
@tool(description="Fetch data from an API")
async def fetch_data(self, url: str) -> str:
"""Fetch data from the given URL."""
import httpx
async with httpx.AsyncClient() as client:
response = await client.get(url)
return response.text
@tool(description="Process text input")
async def process_text(self, text: str, uppercase: bool = False) -> str:
"""Process the input text."""
if uppercase:
return text.upper()
return text.strip()
```
## Docker Deployment
```bash
# Build image
docker build -t nanobot .
# Run with config volume
docker run -d \
-v ~/.nanobot:/root/.nanobot \
-e OPENROUTER_API_KEY=$OPENROUTER_API_KEY \
--name nanobot \
nanobot
```
Docker Compose example:
```yaml
version: "3.8"
services:
nanobot:
image: hkuds/nanobot:latest
volRelated in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing — use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.