Skip to content

uv Setup

The uv path is for developers or anyone who prefers running the bot directly without Docker.

Prerequisites

  • Python 3.12+
  • uv — install with curl -LsSf https://astral.sh/uv/install.sh | sh (Mac/Linux)
  • A Discord bot token — see Discord Setup
  • An API key for your chosen model provider

Steps

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

runtime.yml stores live settings — allowed channels, DM users, timezone, history limit. The bot writes this file automatically when you use slash commands; you rarely need to touch it by hand. See Runtime Config for details.

3. Fill in .env

Open .env and set at minimum these four values:

DISCORD_BOT_TOKEN=your_discord_token
FAST_API_KEY=your_api_key
FAST_MODEL=google:gemma-4-26b-a4b-it   # format: provider:model_id
CHAT_SYS_PROMPT_PATH=config/chat_sys_prompt.txt

See Model Providers for the full list of supported provider: prefixes and where to get API keys.

4. Edit the system prompt

Open config/chat_sys_prompt.txt and give the bot its personality. This is the instruction the model receives before every conversation.

5. Run

uv run main.py

On first run, Noto Sans CJK fonts (~100 MB) download automatically for table rendering.

6. Test the bot

In Discord, mention the bot in any channel it can see:

@YourBotName hello!

It should reply within a few seconds. If it doesn't, check the terminal for error messages.

Updating

git pull
uv sync

Then restart the bot. .env and config/ are not touched by updates.

Managing the bot

Stop: Press Ctrl+C in the terminal running uv run main.py.

Start again:

uv run main.py

Your .env and everything in config/ persists between restarts.