Skip to main content
JoBot runs entirely inside Docker, so you don’t need to install .NET or any other runtime. You will need a machine that can run Docker, three API credentials, and about five minutes to get your first AI response in Discord.
1

Register a Discord application and bot

  1. Go to the Discord Developer Portal and click New Application.
  2. Give it a name (e.g. “JoBot”), then navigate to the Bot tab.
  3. Click Reset Token and copy the token — this is your DISCORD_TOKEN.
  4. Under Privileged Gateway Intents, enable Message Content Intent.
  5. Navigate to OAuth2 → URL Generator. Select the bot scope, then grant these bot permissions:
    • Read Messages / View Channels
    • Send Messages
    • Connect (voice)
    • Speak (voice)
  6. Copy the generated URL, open it in your browser, and invite the bot to your server.
2

Pull the Docker image

Pull the latest JoBot image from the GitHub Container Registry:
3

Create docker-compose.yml

Create a docker-compose.yml file in a new directory. JoBot requires a Lavalink sidecar for audio routing — the snippet below sets both up:
docker-compose.yml
4

Create .env with required variables

In the same directory as your docker-compose.yml, create a .env file. Docker Compose reads this file automatically and substitutes the values into the service environment.
.env
DISCORD_TOKEN and ANTHROPIC_API_KEY are always required. LAVALINK_PASSPHRASE can be any string you choose — it only needs to match between the two containers. The Subsonic variables are optional; remove or leave them blank if you don’t have a Subsonic server.
5

Start the bot

From the directory containing your docker-compose.yml, run:
Both the JoBot and Lavalink containers will start in the background. Check the logs if something doesn’t come up:

First interaction

Once the bot is online in your server, @mention it in any text channel to start a conversation:
@JoBot what can you help me with?
JoBot replies to direct @mentions and to replies on its own messages. It does not respond to messages that don’t mention it. If you’d like it to join a voice channel and play music, ask it directly:
@JoBot join my voice channel and play something from YouTube
The environment variables above cover the essentials. For a full reference of every configuration option — including ElevenLabs TTS, AI model tuning, and per-guild defaults — see Environment variables.