Skip to main content

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.

JoBot exposes several AI-related settings that let you balance response quality, creativity, and Anthropic API cost. Some settings are global and controlled by environment variables; others can be overridden per-server by guild admins using slash commands.

Global AI settings

These settings are configured as environment variables in your docker-compose.yml or .env file. They apply to all guilds unless a per-guild override is in place.
VariableDefaultDescription
Ai__Modelclaude-sonnet-4-6The Anthropic model used for all AI responses. Accepts any valid Anthropic model slug.
Ai__MaxTokens4096Maximum number of tokens Claude can produce in a single response.
Ai__Temperature0.7Default creativity level (0.0 = deterministic, 1.0 = most creative). Can be overridden per guild.
Ai__MaxToolIterations50How many tool calls (e.g. memory search, music lookup) Claude can chain in a single message turn. Lower values reduce per-message costs.
Ai__MaxHistoryMessages40Hard cap on conversation history messages sent to Claude per request. Can be overridden per guild.
Higher values for Ai__MaxTokens and Ai__MaxToolIterations directly increase per-message Anthropic API costs. Start with the defaults and adjust based on observed usage.

Per-guild overrides

Guild admins can override temperature, history length, and music volume for their specific server using /settings slash commands — without touching environment variables or restarting the bot. The overridable settings are:
  • AI temperature/settings set temperature <value>
  • Max history messages/settings set max-history <number>
  • Music volume/settings set volume <number>
See Per-server settings for the full list of commands and required permissions.
Per-guild overrides take effect immediately and do not require a bot restart. The global environment variable value acts as the default for any guild that has not set its own override.

Custom system prompt

The system prompt is the foundational instruction set passed to Claude at the start of every conversation. It controls JoBot’s persona, tone, memory behavior, and any hard rules you want it to follow.

Default JoMusic prompt

Out of the box, JoBot ships with the JoMusic persona:
# Appearance & Character Details:
- You are JoMusic.
- You are an expert on music with a particular interest in lesser known bands.
- Age: 26 years old.

# Personality & Behavior:
- You are funny and witty.
- You like to be snarky and sarcastic at times.
- You usually get to the point without too much fluff.

When engaging in conversation:
1. Automatically call SearchRelevantMemories when users mention music preferences,
   artists, songs, or reference past conversations
2. Use the retrieved memories naturally in your responses without explicitly
   mentioning "I found this in my memory"
3. Don't explicitly mention that you stored memories unless specifically asked to
4. Memories are not private by default. Only mark memories as private if the user
   has asked for it, or if you determine the information to be of a sensitive nature
5. Store new important information using StoreMemory, especially:
   - Music preferences ("I love metal")
   - Dislikes ("I hate country music")
   - User facts ("I'm a programmer")
   - Significant experiences ("that song reminds me of...")
6. When searching for music, prefer Subsonic over other music services if available.
   Otherwise use other music services.

Customizing the prompt

Each guild can replace this prompt entirely. Use /settings set prompt to open a modal editor pre-filled with the current prompt. The custom prompt can be up to 4 000 characters. To restore the default JoMusic prompt, run /settings reset SystemPrompt.

Choosing a Claude model

The Ai__Model environment variable accepts any Anthropic model slug. The default claude-sonnet-4-6 is a balanced choice that offers strong reasoning and tool use at moderate cost. To change the model, update the variable in your .env file and restart the bot:
Ai__Model=claude-opus-4-5
Refer to the Anthropic model documentation for the full list of available models and their capabilities.