JoBot is a self-hosted Discord bot built on .NET that brings three capabilities to your server: Claude AI-powered conversations triggered by @mentions, music playback from YouTube and your personal Subsonic library, and ElevenLabs text-to-speech in voice channels. Because you host it yourself, you control the API keys, the system prompt, and per-guild settings like AI temperature and music volume.Documentation Index
Fetch the complete documentation index at: https://docs.jobot.jeppdev.com/llms.txt
Use this file to discover all available pages before exploring further.
Quickstart
Deploy JoBot with Docker Compose in five minutes.
AI chat
How Claude AI conversations work in your server.
Music
Stream from YouTube and your Subsonic library.
Text-to-speech
ElevenLabs voice playback in voice channels.
Key features
- Claude AI chat — @mention JoBot or reply to it to start a conversation. JoBot maintains per-guild message history and supports a customizable system prompt.
- YouTube music — Ask JoBot to search for and play songs from YouTube directly in a voice channel.
- Subsonic music — Connect your personal Subsonic server so JoBot can search, play random tracks, and manage share links from your private library.
- ElevenLabs TTS — JoBot can speak responses aloud in a voice channel using your ElevenLabs API key and chosen voice.
- Per-guild settings — Server admins can tune AI temperature, conversation history length, and music volume using
/settingsslash commands. - SQLite persistence — Guild settings and conversation state are stored in a local SQLite database, so nothing is sent to a third-party database.
What you need
Before deploying JoBot, make sure you have:- Docker and Docker Compose — JoBot ships as a container image; no .NET installation required.
- Discord bot token — Create an application and bot at the Discord Developer Portal. Enable the Message Content intent and grant voice channel permissions.
- Anthropic API key — Required for all AI chat functionality. Sign up at console.anthropic.com.
- Lavalink passphrase — A passphrase you choose yourself, shared between the JoBot container and its Lavalink sidecar for audio routing.
- Subsonic credentials (optional) — Base URL, username, and password for your Subsonic-compatible music server.
- ElevenLabs API key and voice ID (optional) — Required only if you want text-to-speech in voice channels.