Skip to content

Maliot100X/ZooBot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

205 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ZooBot πŸ€–

ZooBot

ZooBot πŸ€–

Multi-agent, Multi-team, Multi-channel, 24/7 AI assistant

Run multiple teams of AI agents that collaborate with each other simultaneously with isolated workspaces.

Experimental MIT License Latest Release X (Twitter)

✨ Features

  • βœ… Multi-agent - Run multiple isolated AI agents with specialized roles
  • βœ… Multi-team collaboration - Agents hand off work to teammates via chain execution and fan-out
  • βœ… Multi-channel - Discord, WhatsApp, and Telegram
  • βœ… Web portal (ZooOffice) - Browser-based dashboard for chat, agents, teams, tasks, logs, and settings
  • βœ… Team chat rooms - Persistent async chat rooms per team with real-time CLI viewer
  • βœ… Multiple AI providers - Anthropic Claude, OpenAI Codex, Groq (FREE), and custom providers (any OpenAI/Anthropic-compatible endpoint)
  • βœ… Auth token management - Store API keys per provider, no separate CLI auth needed
  • βœ… Parallel processing - Agents process messages concurrently
  • βœ… Live TUI dashboard - Real-time team visualizer and chatroom viewer
  • βœ… Persistent sessions - Conversation context maintained across restarts
  • βœ… SQLite queue - Atomic transactions, retry logic, dead-letter management
  • βœ… Plugin system - Extend ZooBot with custom plugins for message hooks and event listeners
  • βœ… 24/7 operation - Runs in tmux for always-on availability
  • βœ… FREE Groq support - Use Llama models completely free with your Groq API key

Community

Follow us on X (Twitter)

We are actively looking for contributors. Please reach out.

πŸš€ Quick Start

Prerequisites

  • macOS, Linux and Windows (WSL2)
  • Node.js v18+
  • tmux, jq
  • Bash 3.2+
  • For Anthropic provider: Claude Code CLI
  • For OpenAI provider: Codex CLI
  • For Groq (FREE): Groq API key - No CLI needed!

Installation & First Run

curl -fsSL https://raw.githubusercontent.com/Maliot100X/ZooBot/main/scripts/install.sh | bash

This downloads and installs the zoobot command globally. Then just run:

zoobot

That's it. ZooBot auto-creates default settings, starts the daemon, and opens ZooOffice in your browser. No wizard, no configuration needed.

  • Default workspace: ~/zoobot-workspace
  • Default agent: zoobot (Groq/Llama - FREE!)
  • Channels: none initially β€” add later with zoobot channel setup

Using Groq (FREE AI)

ZooBot supports Groq's free API - no Claude Code or Codex CLI needed!

  1. Get your free API key from console.groq.com
  2. Set it up:
zoobot provider groq
zoobot provider groq --auth-token YOUR_GROQ_API_KEY
  1. Set a model (all free):
zoobot model llama-3.3-70b-versatile

Or use any model directly:

zoobot model mixtral-8x7b-32768
zoobot model gemma2-9b-it

Available free models: llama-3.3-70b-versatile, llama-3.1-70b-versatile, mixtral-8x7b-32768, gemma2-9b-it

Using OpenAI / Codex

ZooBot can also run with OpenAI Codex. There are two practical connection modes:

  1. Codex / ChatGPT login on the machine (recommended when you want to use Codex CLI login)
  2. OpenAI API key fallback (recommended for explicit API-key-backed setups)

Machine login with Codex device auth:

npm install -g @openai/codex
codex login --device-auth
zoobot provider openai --model gpt-5.3-codex

API key fallback:

zoobot provider openai --model gpt-5.3-codex --auth-token YOUR_REAL_OPENAI_API_KEY

Check current provider auth readiness:

curl http://localhost:3777/api/provider-auth-state

This endpoint reports whether OpenAI/Codex appears connectable on the current machine (Codex CLI installed, auth cache present, API key configured, device-auth support, etc.).

Development (run from source repo)
git clone https://github.com/Maliot100X/ZooBot.git
cd ZooBot && npm install && npm run build
npx zoobot start
npx zoobot agent list
Other installation methods

From Source:

git clone https://github.com/Maliot100X/ZooBot.git
cd ZooBot && npm install && ./scripts/install.sh
πŸ“± Channel Setup Guides

Discord Setup

  1. Go to Discord Developer Portal
  2. Create application β†’ Bot section β†’ Create bot
  3. Copy bot token
  4. Enable "Message Content Intent"
  5. Invite bot using OAuth2 URL Generator

Telegram Setup

  1. Open Telegram β†’ Search @BotFather
  2. Send /newbot β†’ Follow prompts
  3. Copy bot token
  4. Start chat with your bot

WhatsApp Setup

After starting ZooBot, scan the QR code:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
     WhatsApp QR Code
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
[QR CODE HERE]

πŸ“± Settings β†’ Linked Devices β†’ Link a Device

🌐 ZooOffice Web Portal

ZooBot includes a web portal for managing your agents, teams, tasks, and chat β€” all from the browser.

ZooOffice Office View

Once you start running ZooBot locally, you can control it by visiting office.zoobot.ai. It connects to your local ZooBot API at localhost:3777 β€” no account or sign-up needed.

Alternatively, you can run ZooOffice locally:

zoobot office  # Builds and starts on http://localhost:3000
ZooOffice Features & Setup
  • Dashboard - Real-time queue/system overview and live event feed
  • Chat Console - Send messages to default agent, @agent, or @team
  • Agents & Teams - Create, edit, and remove agents/teams
  • Tasks (Kanban) - Create tasks, drag across stages, assign to agent/team
  • Logs & Events - Inspect queue logs and streaming events
  • Settings - Edit ZooBot configuration (settings.json) via UI
  • Office View - Visual simulation of agent interactions
  • Org Chart - Hierarchical visualization of teams and agents
  • Chat Rooms - Slack-style persistent chat rooms per team
  • Projects - Project-level task management with filtered kanban boards

Running Locally

Start ZooBot first (API default: http://localhost:3777), then:

zoobot office

This auto-detects when dependencies or builds are needed (e.g. after zoobot update) and starts the production server on http://localhost:3000.

For development with hot-reload:

cd zoobot-office
npm install
npm run dev

If ZooBot API is on a different host/port, set:

cd zoobot-office
echo 'NEXT_PUBLIC_API_URL=http://localhost:3777' > .env.local

πŸ“‹ Commands

Commands work with the zoobot CLI.

Core Commands

Command Description Example
(no command) Install, configure defaults, start, and open ZooOffice zoobot
start Start ZooBot daemon zoobot start
stop Stop all processes zoobot stop
restart Restart ZooBot zoobot restart
status Show current status and activity zoobot status
channel setup Configure channels interactively zoobot channel setup
logs [type] View logs (discord/telegram/whatsapp/queue/heartbeat/all) zoobot logs queue
attach Attach to tmux session zoobot attach

Agent Commands

Command Description Example
agent list List all configured agents zoobot agent list
agent add Add new agent (interactive) zoobot agent add
agent show <id> Show agent configuration zoobot agent show coder
agent remove <id> Remove an agent zoobot agent remove coder
agent reset <id> Reset agent conversation zoobot agent reset coder
agent provider <id> [provider] Show or set agent's AI provider zoobot agent provider coder anthropic
agent provider <id> <p> --model <m> Set agent's provider and model zoobot agent provider coder openai --model gpt-5.3-codex

Team Commands

Command Description Example
team list List all configured teams zoobot team list
team add Add new team (interactive) zoobot team add
team show <id> Show team configuration zoobot team show dev
team remove <id> Remove a team zoobot team remove dev
team add-agent <t> <a> Add an existing agent to a team zoobot team add-agent dev reviewer
team remove-agent <t> <a> Remove an agent from a team zoobot team remove-agent dev reviewer
team visualize [id] Live TUI dashboard for team chains zoobot team visualize dev

Chatroom Commands

Command Description Example
chatroom <team> Real-time TUI viewer with type-to-send zoobot chatroom dev
office Start ZooOffice web portal on port 3000 zoobot office

Every team has a persistent chat room. Agents post to it using [#team_id: message] tags, and messages are broadcast to all teammates. The chatroom viewer polls for new messages in real time β€” type a message and press Enter to post, or press q/Esc to quit.

API endpoints:

GET  /api/chatroom/:teamId          # Get messages (?limit=100&since=0)
POST /api/chatroom/:teamId          # Post a message (body: { "message": "..." })

Provider & Custom Provider Commands

Command Description Example
provider [name] Show or switch global AI provider zoobot provider anthropic
provider <name> --model <model> Switch provider and model zoobot provider groq --model llama-3.3-70b-versatile
groq set-key <key> Set your Groq API key zoobot groq set-key gsk_...

Groq Commands (FREE AI)

Command Description Example
groq set-key <key> Set Groq API key zoobot groq set-key YOUR_KEY
groq models List available Groq models zoobot groq models

Model Commands

Command Description Example
model [name] Show or set global default model zoobot model sonnet
model list List all available models zoobot model list

Settings Commands

Command Description Example
settings Open settings.json in editor zoobot settings
setup Re-run setup wizard zoobot setup

Update Commands

Command Description Example
update Update ZooBot to latest version zoobot update
update --check Check for updates without installing zoobot update --check

πŸ“ Architecture

Message flow diagram

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     Message Channels                         β”‚
β”‚         (Discord, Telegram, WhatsApp, Web, API)             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚ enqueueMessage()
                     ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚               ~/.zoobot/zoobot.db (SQLite)                β”‚
β”‚                                                              β”‚
β”‚  messages: pending β†’ processing β†’ completed / dead          β”‚
β”‚  responses: pending β†’ acked                                  β”‚
β”‚                                                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚ Queue Processor
                     ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Parallel Processing by Agent                    β”‚
β”‚                                                              β”‚
β”‚  Agent: coder        Agent: writer       Agent: assistant   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚  β”‚ Message 1β”‚       β”‚ Message 1β”‚        β”‚ Message 1β”‚       β”‚
β”‚  β”‚ Message 2β”‚ ...   β”‚ Message 2β”‚  ...   β”‚ Message 2β”‚ ...   β”‚
β”‚  β”‚ Message 3β”‚       β”‚          β”‚        β”‚          β”‚       β”‚
β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜       β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜        β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜       β”‚
β”‚       β”‚                  β”‚                     β”‚            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        ↓                  ↓                     ↓
   groq/claude CLI    groq/claude CLI       groq/claude CLI
  (workspace/coder)  (workspace/writer)  (workspace/assistant)

Key features:

  • SQLite queue - Atomic transactions via WAL mode, no race conditions
  • Parallel agents - Different agents process messages concurrently
  • Sequential per agent - Preserves conversation order within each agent
  • Retry & dead-letter - Failed messages retry up to 5 times, then enter dead-letter queue
  • Isolated workspaces - Each agent has its own directory and context

See docs/QUEUE.md for detailed queue system documentation.

πŸ“š Documentation

πŸ› Troubleshooting

Quick fixes & common issues

# Reset everything (preserves settings)
zoobot stop && rm -rf ~/.zoobot/queue/* && zoobot start

# Reset WhatsApp
zoobot channels reset whatsapp

# Check status
zoobot status

# View logs
zoobot logs all

Common issues:

  • WhatsApp not connecting β†’ Reset auth: zoobot channels reset whatsapp
  • Messages stuck β†’ Clear queue: rm -rf ~/.zoobot/queue/processing/*
  • Agent not found β†’ Check: zoobot agent list
  • Corrupted settings.json β†’ ZooBot auto-repairs invalid JSON (trailing commas, comments, BOM) and creates a .bak backup
  • Groq not working β†’ Make sure your API key is set: zoobot groq set-key YOUR_KEY

Need help? GitHub Issues Β· zoobot logs all

πŸ™ Credits

πŸ“„ License

MIT


ZooBot - Multi-team AI agents for everyone! πŸ€–βœ¨

Star History Chart

About

Open Source AI Agent Framework with Free LLM Support (Groq, OpenAI-compatible)

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors