banabot is a lightweight personal AI assistant forked from nanobot. We keep the best of nanobot β ultra-light (~4k lines), clean code, multi-channel support β and add our own flavor:
- π§ Semantic Memory v2 β Vector embeddings with fastembed + usearch. Remembers conversations semantically ("estuve en Oaxaca" β finds it later even if you don't say "Oaxaca")
- π― Skills v2 β XML-formatted prompts, auto-discovery, auto-install from ClawHub
- πͺΆ Still tiny β Under 5k lines. Fast startup, low memory, runs anywhere
- π§ Bug fixes β Cron loop prevention, lazy loading, workspace cleanup
Philosophy: Same DNA as nanobot/OpenClaw, but with faster iteration and personal touches.
# Recommended β fast and isolated
uv tool install banabot-ai
# Or with pip
pip install banabot-aiFrom source (development):
git clone https://github.com/Mrbanano/banabot.git cd banabot uv sync --dev
1. Initialize
banabot onboard2. Add your API key (~/.banabot/config.json)
{
"providers": {
"openrouter": { "apiKey": "sk-or-v1-xxx" }
},
"agents": {
"defaults": { "model": "anthropic/claude-opus-4-5" }
}
}Get a key: OpenRouter gives access to all major models. Web search works out-of-the-box with DuckDuckGo (free, no key needed).
3. Chat
banabot agent4. Enable channels (optional)
banabot gatewayMemory that actually works. Uses vector embeddings to find past conversations by meaning, not keywords.
{
"semanticMemory": {
"enabled": true,
"model": "BAAI/bge-small-en-v1.5",
"maxResults": 5,
"citation": true,
"mmr": true
}
}- Vector search β fastembed + usearch for semantic recall
- TTL support β memories can expire
- Citations β knows when it's recalling past context
- MMR β Max Marginal Relevance for diverse results
- Query expansion β smarter searches
Enabled via wizard (banabot onboard) or manually in config.
Skills teach banabot domain-specific behavior. New format with XML support:
<!-- skill: github -->
<instructions>
You are a GitHub expert. Help with repos, issues, PRs.
</instructions>
<examples>
User: "create a repo"
β Use tool: github_create_repo
User: "list my repos"
β Use tool: github_list_repos
</examples>Features:
- Auto-discovery β skills in
~/.banabot/workspace/skills/load automatically - Auto-install β agent can install skills from ClawHub registry
- Categories β
_core,_integrations,_tools,_community - Validation β truncated, emoji hints, installation guidance
- Session memory β JSONL files per conversation
- Long-term memory β
memory/MEMORY.md(facts) +memory/HISTORY.md(events) - Semantic recall β vector search over past conversations
- Compaction β automatic consolidation when sessions grow large
- Session hooks β
/newcommand triggers session save
Connect to Telegram, Discord, WhatsApp, Slack, and more. Run banabot gateway to start.
| Channel | What you need |
|---|---|
| Telegram | Bot token from @BotFather |
| Discord | Bot token + Message Content intent |
| Node.js β₯18 + QR scan | |
| Feishu | App ID + App Secret |
| Slack | Bot token + App-Level token |
| Mochat | Claw token |
Telegram (Recommended)
1. Create a bot β open Telegram β search @BotFather β /newbot β copy the token.
2. Configure
{
"channels": {
"telegram": {
"enabled": true,
"token": "YOUR_BOT_TOKEN",
"allowFrom": ["YOUR_USER_ID"]
}
}
}Your User ID is shown in Telegram settings as
@yourUserId. Paste it without the@.
3. Run
banabot gatewayDiscord
1. Create a bot at discord.com/developers β New Application β Bot β Copy token.
2. Enable intents β Bot settings β enable MESSAGE CONTENT INTENT.
3. Get your User ID β Settings β Advanced β Developer Mode β right-click avatar β Copy User ID.
4. Configure
{
"channels": {
"discord": {
"enabled": true,
"token": "YOUR_BOT_TOKEN",
"allowFrom": ["YOUR_USER_ID"]
}
}
}5. Invite β OAuth2 β URL Generator β Scopes: bot β Permissions: Send Messages, Read Message History.
6. Run
banabot gatewayRequires Node.js β₯18.
1. Link device
banabot channels login
# Scan QR with WhatsApp β Settings β Linked Devices2. Configure
{
"channels": {
"whatsapp": {
"enabled": true,
"allowFrom": ["+1234567890"]
}
}
}3. Run (two terminals)
# Terminal 1
banabot channels login
# Terminal 2
banabot gatewayConfig file: ~/.banabot/config.json
| Provider | Purpose | Get key |
|---|---|---|
openrouter |
All models via one key (recommended) | openrouter.ai |
anthropic |
Claude direct | console.anthropic.com |
openai |
GPT direct | platform.openai.com |
deepseek |
DeepSeek direct | platform.deepseek.com |
groq |
LLM + voice transcription (Whisper) | console.groq.com |
gemini |
Gemini direct | aistudio.google.com |
aihubmix |
API gateway, all models | aihubmix.com |
siliconflow |
η‘ εΊζ΅ε¨ gateway | siliconflow.cn |
dashscope |
Qwen (ιΏιδΊ) | dashscope.console.aliyun.com |
moonshot |
Kimi | platform.moonshot.cn |
zhipu |
GLM | open.bigmodel.cn |
vllm |
Local / any OpenAI-compatible server | β |
{
"semanticMemory": {
"enabled": true,
"model": "BAAI/bge-small-en-v1.5",
"maxResults": 5,
"citation": true,
"mmr": true,
"temporalDecay": 0.95,
"queryExpansion": true
}
}{
"tools": {
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
}
}
}
}| Command | Description |
|---|---|
banabot onboard |
Initialize config and workspace |
banabot agent |
Interactive chat |
banabot agent -m "..." |
Single message |
banabot gateway |
Start gateway (all channels) |
banabot status |
Show config status |
banabot channels status |
Channel status |
banabot cron list |
List scheduled jobs |
banabot cron add ... |
Add scheduled job |
# First-time setup
docker compose run --rm banabot-cli onboard
vim ~/.banabot/config.json # add API keys
# Start gateway
docker compose up -d banabot-gateway
# Chat
docker compose run --rm banabot-cli agent -m "Hello!"# Install
git clone https://github.com/Mrbanano/banabot.git
cd banabot
uv sync --dev
# Test
pytest
# Lint
ruff check --fix src/banabot/
ruff format src/banabot/
# Run
banabot onboard
banabot agent -m "Hello!"src/banabot/
βββ agent/
β βββ loop.py # Agent loop β LLM β tools
β βββ context.py # Prompt builder
β βββ memory.py # Persistent memory
β βββ semantic_memory.py # Vector memory (v2)
β βββ skills.py # Skills loader (v2)
β βββ hooks/ # Session hooks
β βββ tools/ # Built-in tools
βββ skills/ # Bundled skills
βββ channels/ # Chat integrations
βββ bus/ # Message routing
βββ cron/ # Scheduled tasks
βββ providers/ # LLM providers
βββ config/ # Config schema
βββ cli/ # Commands
- Semantic Memory v2
- Skills v2
- Wizard improvements
- Voice support
- Better onboarding
- More integrations
banabot is a fork of nanobot by the HKUDS team. We're grateful for their foundational work.
Special thanks to:
See CREDITS.md for full attribution.
