NanoBot
The NanoBot sandbox — ultra-lightweight Python agent on agentstead.dev.
NanoBot is an ultra-lightweight Python AI agent sandbox. Where other sandboxes focus on desktop and coding workflows, NanoBot is built for channel-based AI — connecting to Telegram, Discord, Slack, WhatsApp, and other messaging platforms with minimal overhead.
Port: 18790 | Token type: Gateway Token | RAM: 2 GB | Best for: Channel bots, Telegram/Discord agents, MCP-connected assistants
What starts on boot
- NanoBot onboard — creates
~/.nanobot/config.jsonwith defaults on first boot. - Proxy injection — OpenRouter and Anthropic providers are automatically configured to route through the AgentStead LLM proxy using your proxy token. No API key setup needed.
- Health server — a lightweight HTTP server starts on port
18790at/healthz. - NanoBot gateway — connects to any channels you've configured (Telegram, Discord, etc.) and starts the agent loop.
Data directory
NanoBot stores config, workspace, and cron jobs in ~/.nanobot/ inside your persistent volume.
~/.nanobot/
├── config.json # provider keys, channel tokens, model settings
├── workspace/
│ ├── AGENTS.md # agent persona / instructions
│ ├── HEARTBEAT.md # scheduled task definitions
│ ├── SOUL.md # agent values and constraints
│ └── memory/ # persistent memory files
└── cron/ # scheduled job definitionsConfiguring channels
Edit ~/.nanobot/config.json from the desktop terminal to enable channels. The gateway picks up changes on next restart.
Telegram
{
"channels": {
"telegram": {
"enabled": true,
"token": "YOUR_BOT_TOKEN",
"allowFrom": ["YOUR_TELEGRAM_USER_ID"]
}
}
}Get a bot token from @BotFather on Telegram, then restart the gateway:
pkill -f "nanobot gateway" && nanobot gateway &Discord
{
"channels": {
"discord": {
"enabled": true,
"token": "YOUR_BOT_TOKEN",
"allowFrom": ["YOUR_DISCORD_USER_ID"],
"groupPolicy": "mention"
}
}
}Other channels
NanoBot supports WhatsApp, Slack, Email, DingTalk, Feishu, QQ, WeCom, and Matrix. See the NanoBot channel docs for setup instructions for each.
LLM provider setup
The AgentStead proxy is injected automatically on boot — OpenRouter and Anthropic are pre-configured. The default model is anthropic/claude-sonnet-4-6 via OpenRouter.
To change the model, update config.json:
{
"agents": {
"defaults": {
"model": "anthropic/claude-opus-4-6",
"provider": "openrouter"
}
}
}You can also add a direct Anthropic API key in Secrets and point the provider at it instead of the proxy.
MCP tools
NanoBot supports MCP (Model Context Protocol) servers, giving your agent access to external tools and data sources.
{
"tools": {
"mcpServers": [
{
"name": "filesystem",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/kasm-user"]
}
]
}
}ClawHub skills
NanoBot integrates with ClawHub — a directory of installable agent skills. Ask the agent to install a skill:
Read https://clawhub.ai/skills/some-skill/skill.md and install it.Useful commands
nanobot --version # check version
nanobot status # show config and provider status
nanobot agent -m "Hello" # send a one-off message via CLI
cat ~/.nanobot/config.json # view current configWhen to use NanoBot
NanoBot is the right choice when:
- You want a Telegram, Discord, or Slack bot powered by Claude
- You need lightweight resource usage — NanoBot uses half the RAM of other sandboxes
- You're building scheduled automations via NanoBot's cron and heartbeat system
- You want MCP tool integrations with a simple Python-based sandbox
NanoBot does not include a browser or heavy dev toolchain. If you need Claude Code, Codex, or a full desktop environment, use OpenClaw instead.

