docker-compose.yml or .env file. Required variables must be provided before the bot starts — the bot will fail to connect to Discord, Anthropic, or your Subsonic server if any of them are missing.
Required variables
| Variable | Description |
|---|---|
Anthropic__Token | Your Anthropic API key. Used to authenticate all Claude AI requests. |
Discord__Token | Your Discord bot token from the Discord Developer Portal. |
Lavalink__Passphrase | The passphrase securing your Lavalink server. You set this value; it must match LAVALINK_SERVER_PASSWORD in the Lavalink container. |
ConnectionStrings__JoBot | SQLite connection string. Mount a persistent volume and point this at it, e.g. Data Source=/app/config/jobot.db. |
Optional — Lavalink
| Variable | Default | Description |
|---|---|---|
Lavalink__BaseAddress | http://lavalink:2333 | Internal address of the Lavalink container. Change this if you rename the service or run Lavalink on a different host/port. |
Optional — AI tuning
| Variable | Default | Description |
|---|---|---|
Ai__Model | claude-sonnet-4-6 | Anthropic model slug to use for all AI responses. Accepts any valid Anthropic model ID. |
Ai__MaxTokens | 4096 | Maximum number of tokens in a single Claude response. |
Ai__Temperature | 0.7 | Global default creativity level (0.0 = deterministic, 1.0 = most creative). |
Ai__MaxToolIterations | 50 | Maximum number of tool calls Claude can chain in a single message turn. Lower values reduce API costs. |
Ai__MaxHistoryMessages | 40 | Global cap on conversation history messages sent to Claude per request. |
Optional — Guild defaults
| Variable | Default | Description |
|---|---|---|
GuildDefaults__MaxHistoryMessages | 20 | Default history message count for guilds that have not customized their setting. |
GuildDefaults__AiTemperature | 0.7 | Default AI temperature for guilds that have not customized their setting. |
GuildDefaults__MusicVolume | 0.5 | Default music volume for guilds that have not customized their setting (0.0–1.0, where 0.5 = 50%). |
Optional — Subsonic
| Variable | Default | Description |
|---|---|---|
Subsonic__BaseUrl | (none) | Base URL of your Subsonic-compatible server, e.g. https://music.example.com. Required to enable Subsonic music search and playback. |
Subsonic__Username | (none) | Username for your Subsonic server. |
Subsonic__Password | (none) | Password for your Subsonic server. |
Optional — ElevenLabs / TTS
| Variable | Default | Description |
|---|---|---|
ElevenLabs__ApiKey | (none) | ElevenLabs API key. Required to enable text-to-speech features. |
ElevenLabs__VoiceId | (none) | ElevenLabs voice ID to use for TTS output. |
Example .env file
Create a .env file alongside your docker-compose.yml and populate it before running docker compose up.
docker-compose.yml:
Guild-level settings — AI temperature, music volume, and history length — can be changed at runtime using
/settings slash commands without restarting the bot. Environment variables serve as the global defaults that apply to any guild that has not overridden them.