Any AI provider
provider:model_id auto-configures the SDK and API key — cloud (Gemini, GPT-4o, Claude, Groq) or local (Ollama, LM Studio, vLLM) for fully offline runs.
Connect Gemini, GPT-4o, Claude, Llama, or Ollama to your Discord server in minutes — no code changes needed.
Dango is a free, open-source, self-hosted Discord AI bot and agent built on Agno. Connect any model provider — Google Gemini, GPT-4o, Claude, Llama, Groq, or local Ollama — and run your own Discord AI chatbot and agent on your server in minutes, with no code changes.
You need:
| Method | Also requires |
|---|---|
| Docker (recommended) | Docker Desktop (Mac/Windows), OrbStack (Mac), or Docker Engine (Linux) |
| uv (developers) | Python 3.12+, uv |
# 1. Download docker-compose.yml
cd ~/Downloads # or wherever you'd like
curl -O https://raw.githubusercontent.com/zhiro-labs/dango/main/docker-compose.yml
# 2. Start the containers (-d runs in the background; logs -f streams output)
docker compose up -d && docker compose logs -f
# 3. Open the setup wizard at http://localhost:17860
# The wizard asks for your Discord token, model API key, and bot personality.
# 4. Mention the bot in Discord: @YourBotName hello!# 1. Clone and install
git clone https://github.com/zhiro-labs/dango
cd dango
uv sync
# 2. Copy config files
cp .env.example .env
cp config/runtime.yml.example config/runtime.yml
cp config/chat_sys_prompt.txt.example config/chat_sys_prompt.txt
# 3. Fill in .env (at minimum):
# DISCORD_BOT_TOKEN=your_discord_token
# FAST_API_KEY=your_api_key
# FAST_MODEL=google:gemini-2.5-flash # format: provider:model_id
# CHAT_SYS_PROMPT_PATH=config/chat_sys_prompt.txt
# 4. Run (first run downloads Noto Sans CJK fonts ~100 MB for table rendering)
uv run main.pyFull walkthroughs: Docker guide · uv guide.
No special tools needed — paste a prompt into any AI assistant (Claude, ChatGPT, Grok) and it will guide you through installation step by step. Claude Code and Codex can run the commands for you directly.
I want to install the Dango Discord bot using Docker. Please go through these steps one at a time and explain what each command does before running it:
1. Check that Docker is installed and running (docker info). If not, stop and tell me to install it from https://docs.docker.com/get-docker/ before continuing.
2. Ask me where to create the project folder (suggest ~/dango as the default).
3. Create that folder and move into it.
4. Download the setup file: curl -O https://raw.githubusercontent.com/zhiro-labs/dango/main/docker-compose.yml
5. Show me the contents of docker-compose.yml before doing anything else.
6. Start the bot: docker compose up -d
7. Confirm both the "web" and "bot" containers are running: docker compose ps
8. Tell me to open http://localhost:17860 in my browser to finish setup.
Important: do NOT ask for, store, or touch any Discord tokens or API keys — the web setup wizard handles all credentials. Do not run any commands that delete files.I want to install the Dango Discord bot using uv (a Python package manager). Please go through these steps one at a time and explain what each command does before running it:
1. Check that git is installed (git --version). If not, stop and tell me to install it from https://git-scm.com/downloads
2. Check that uv is installed (uv --version). If not, install it automatically:
- Mac/Linux: curl -LsSf https://astral.sh/uv/install.sh | sh
- Windows: tell me to visit https://docs.astral.sh/uv/getting-started/installation/
3. Ask me where to clone the project (suggest ~/dango as the default).
4. Clone and enter the folder:
git clone https://github.com/zhiro-labs/dango <chosen-folder>
cd <chosen-folder>
5. Install dependencies: uv sync
6. Copy the example config files:
cp .env.example .env
cp config/runtime.yml.example config/runtime.yml
cp config/chat_sys_prompt.txt.example config/chat_sys_prompt.txt
7. Tell me exactly which values to fill in inside .env (DISCORD_BOT_TOKEN, FAST_API_KEY, FAST_MODEL, CHAT_SYS_PROMPT_PATH) and what each one means. Wait for me to confirm I've filled them in before continuing.
8. Start the bot: uv run main.py
Important: do NOT read, display, log, or store the contents of .env — it contains my API keys and tokens. Only tell me which variables to fill in and what they mean.dango/ # repo root
├── main.py # Entry point
├── dango/ # Python package
│ ├── app_config.py # Web UI config injection
│ ├── workflow.py # Agno Workflow definition
│ ├── steps/ # 4-step pipeline
│ │ ├── fetch_history.py
│ │ ├── call_agent.py # Multi-provider LLM call
│ │ ├── table_steps.py # Table → PNG rendering
│ │ └── send_response.py # Discord send (split, reply, table images)
│ ├── commands/
│ │ ├── chat_commands.py # ChatCog: on_message, /newchat, /deep
│ │ └── admin_commands.py # AdminCog: all admin slash commands
│ ├── extensions/ # Custom commands & tools SDK (loads custom/*.py)
│ └── utils/
├── web/ # FastAPI dashboard
├── config/ # System prompt & runtime config
└── tests/