/ask, /write, /search, a conversation channel, or autonomy mode, the experience is identical regardless of which provider is active. Set your preferred provider at startup with environment variables, or switch to a different provider at any time without restarting the bot.
Supported Providers
Setting the Provider at Startup
SetAI_PROVIDER in your .env file to the provider value from the table above. Then add the matching credentials. Set MODEL_NAME (or AI_PROVIDER_MODEL) to specify the default model for that provider.
- Gemini
- OpenAI
- Ollama
- NVIDIA NIM
- Azure
- Groq
- OpenRouter
Switching Providers at Runtime
Change the active provider from Discord without editing.env or restarting. All provider commands are restricted to the Bot Owner.
The
<name> argument accepts the same values as AI_PROVIDER — gemini, openai, ollama, nim, azure, groq, or openrouter.
Switching Models at Runtime
Override the active model independently of the provider, also without a restart.Multimodal Input
Attach files to any AI command or conversation channel message. The bot reads them alongside your text prompt. Supported file types include:- Images: PNG, JPEG, WEBP, GIF, HEIC, HEIF
- Documents: PDF, plain text, Markdown, CSV, HTML, RTF, XML
- Code: JavaScript, Python
- Audio: MP3, WAV, AAC, OGG, FLAC, AIFF
- Video: MP4, MOV, AVI, WEBM, WMV, 3GPP, MPEG
Multimodal input is fully supported on Gemini. Non-Gemini providers receive text-only input. Attached files are silently ignored on providers that do not support multimodal processing.
Notes on Specific Providers
Google Gemini
Google Gemini
Gemini is the default provider. It is the only one that supports server-side conversation continuity. Each user’s conversation thread is tracked via Gemini’s Interactions API using
previous_interaction_id, scoped to (guild_id, channel_id, user_id) so one user’s thread never bleeds into another’s in the same channel. All other providers remain stateless. They rely on the persona and long-term memory injection for context.Ollama
Ollama
Ollama runs entirely on your own machine. No API key is required. Set
OLLAMA_BASE_URL to the address where your Ollama server is listening (default: http://localhost:11434/api/chat). Set AI_PROVIDER_MODEL to the name of a model you have already pulled locally.OpenRouter
OpenRouter
Set
OPENROUTER_SITE_URL and OPENROUTER_SITE_NAME in your .env to send attribution headers with each request. OpenRouter uses these to identify your application in usage dashboards and to comply with certain model provider policies.Embedding Model (ChromaDB)
Embedding Model (ChromaDB)
Set
EMBEDDING_MODEL in your .env to change the sentence transformer model used for ChromaDB vector embeddings. The default is all-MiniLM-L6-v2 (384 dimensions, fast, good quality). Other options include all-mpnet-base-v2 (768 dimensions, higher quality, slower) or any other model from the Sentence Transformers library.