Sage configuration, without the archaeology

Find the variable.
Build the env.

Browse the variables available to your Sage tier. Add a complete feature group or pick only what you need, then copy a clean environment block.

Production243 documented variables
243 variables shown

Category

Advanced & other

BASE_URLOptional

Configures base url.

BOT_LOOP_COOLDOWN_MSStandard

Configures bot loop cooldown ms.

Default 5000
BOT_PINGPONG_MAXStandard

Breaks ping-pong loops between two bots talking to each other.

Default 3
CJK_AUTO_TRANSLATEOptional

Useful when the user switches languages mid-conversation.

Default false
EXPRESSION_STYLEStandard

Configures expression style.

HF_TOKENOptionalSensitive

Configures hf token.

MAX_BOT_RESPONSES_PER_HUMANStandard

Prevents bot loops — after this many bot replies the bot goes quiet until a human sends a message.

Default 3
MAX_CONSECUTIVE_SELF_MESSAGESStandard

Guards against runaway autonomous messaging.

Default 2
MAX_FAVORITESStandard

Favorited memories are always loaded regardless of relevance score.

Default 200
MAX_RESPONSE_TOKENSOptionalSensitive

Configures max response tokens.

MAX_RP_CROSSREFStandard

Configures max rp crossref.

Default 20
PGDATABASEOptional

Configures pgdatabase.

Default railway
PGHOSTOptional

Individual PG connection params (Railway auto-provides these via linked variables — usually not needed)

PGHOST_PRIVATEOptional

Configures pghost private.

PGPASSWORDOptionalSensitive

Configures pgpassword.

PGPORTOptional

Configures pgport.

Default 5432
PGUSEROptional

Configures pguser.

Default postgres
PGUSERNAMEOptional

Configures pgusername.

Default postgres
PRIMARY_DB_URLOptional

Configures primary db url.

PRIMARY_USER_NAMEOptional

Configures primary user name.

RESPOND_TO_BOTSStandard

Configures respond to bots.

Default false
RESPOND_TO_DMSStandard

Configures respond to dms.

Default true
RESPOND_TO_GENERICStandard

Warning: very chatty. Combine with channel whitelisting.

Default true
RESPOND_TO_MENTIONSStandard

Controls when and how often the bot responds — rate limiting and anti-spam.

Default true
SECONDARY_DATABASE_URLOptionalSensitive

Configures secondary database url.

SECONDARY_DATABASE_URL_PRIVATEOptionalSensitive

Configures secondary database url private.

SECONDARY_DB_URLOptional

Configures secondary db url.

TIMEZONEStandard

Configures timezone.

Default America/Denver
VERBOSE_MEMORY_LOGSStandard

Configures verbose memory logs.

Default true
VIDEO_ENABLEDStandard

Configures video enabled.

Default true
VIDEO_MAX_DURATIONOptional

Configures video max duration.

Default 300

Category

Autonomy & schedules

ACTIVE_CONVERSATION_MINUTESStandard

Configures active conversation minutes.

Default 30
AUTOMATIC_RESPONSESStandard

When false (default): the bot only responds when addressed or mentioned.

Default false
AUTONOMOUS_CYCLE_INTERVAL_MSStandard

Minimum recommended: 60000 (1 min). Lower = more active but more API calls.

Default 300000
AUTONOMOUS_CYCLE_TIMEOUT_MSStandard

Configures autonomous cycle timeout ms.

Default 60000
AUTONOMOUS_DM_COOLDOWN_MINUTESStandard

Configures autonomous dm cooldown minutes.

Default 60
AUTONOMOUS_ENABLEDStandard

All three flags are independent — mix and match as needed. When true: the AI can choose to stay silent rather than always respond. Enables "skip response" logic — the AI reads every message but decides whether a reply is warranted. Without this, the bot always responds.

Default true
AUTONOMOUS_LIFE_ENABLEDStandard

The AI periodically wakes up on its own (every AUTONOMOUS_CYCLE_INTERVAL_MS) and can: write memory notes, reflect on the day, update its internal state, or take background actions — even when no one is talking to it.

Default true
AUTONOMOUS_PROACTIVE_ENABLEDStandard

The AI can send messages on its own into configured channels (e.g. check in, share a thought, react to something in memory). Requires AUTONOMOUS_LIFE_ENABLED=true to have effect.

Default true
DAILY_MESSAGE_LIMITStandard

Configures daily message limit.

Default 10000
DAILY_NOTE_LIMITStandard

Configures daily note limit.

Default 100
DAILY_STATS_CHANNEL_IDStandard

Configures daily stats channel id.

DAILY_STATS_ENABLEDStandard

Includes message counts, memory operations, tool calls, and API usage.

Default true
DECISION_TICK_EVERYStandard

Configures decision tick every.

Default 30000
DREAM_STATE_ENABLEDStandard

Configures dream state enabled.

Default true
HEARTBEAT_CHANNEL_IDStandard

Configures heartbeat channel id.

HEARTBEAT_ENABLEDStandard

Posts a periodic ping to HEARTBEAT_LOG_CHANNEL_ID to confirm the bot is alive. Useful for uptime monitoring — if the channel goes quiet, the bot is down.

Default true
HEARTBEAT_LOG_CHANNEL_IDStandard

Configures heartbeat log channel id.

HEARTBEAT_SCHEDULER_ENABLEDStandard

Runs time-based tasks: daily summaries, memory consolidation, reminders, etc. Requires TIMEZONE to be set correctly for scheduled times to be accurate.

Default true
MIN_DM_INTERVAL_HOURSStandard

Configures min dm interval hours.

Default 2
OUTBOUND_CAP_PER_HOURStandard

Configures outbound cap per hour.

Default 10
POST_MEMORY_REFLECTIONSStandard

Reflections are brief AI thoughts on what was just remembered.

Default true
REFLECTION_CHANNEL_IDStandard

Configures reflection channel id.

REFLECTION_ENABLEDStandard

The AI writes a short introspective entry — thoughts on recent conversations, things it noticed or felt, or memory updates — and posts to REFLECTION_CHANNEL_ID. Frequency is controlled by the scheduler (HEARTBEAT_SCHEDULER_ENABLED=true required).

Default true
WAKE_UP_MESSAGEStandard

Configures wake up message.

Default Good morning.

Category

Channels & shared spaces

DM_LOG_CHANNEL_IDStandard

Configures dm log channel id.

DND_CATCHUP_CHANNEL_IDSStandard

Comma-separated channel IDs where the bot auto-summarizes missed turns.

GUEST_CHANNEL_IDStandard

Acts as a public lobby — whitelisted features are still restricted.

RP_CATEGORY_IDStandard

The bot applies RP-specific context and memory rules inside this category.

RP_CLASSIFIER_LLM_FALLBACKStandard

Configures rp classifier llm fallback.

RP_CLASSIFIER_LLM_THRESHOLDStandard

Configures rp classifier llm threshold.

Default 0.7
RP_INACTIVITY_FADE_DAYSStandard

RP (Roleplay) Settings

Default 30
RP_REFERENCE_WHITELISTStandard

These channels are read and injected as lore/context into RP sessions.

RP_SUMMARIES_IN_PROMPTStandard

Configures rp summaries in prompt.

Default true
RP_SUMMARY_INTERVALStandard

Configures rp summary interval.

Default 50
SHARED_AI_ADULT_NOTES_CHANNEL_IDOptional

Configures shared ai adult notes channel id.

SHARED_AI_NOTES_CHANNEL_IDOptional

Configures shared ai notes channel id.

SHARED_SPACE_CATEGORY_IDStandard

Configures shared space category id.

SHARED_SPACE_RESPONSE_DELAY_MSStandard

Gives human users a chance to finish typing before the bot jumps in.

Default 2000
SHARED_SPACE_SETTLE_MSStandard

Configures shared space settle ms.

Default 1000
TOOLS_CHANNEL_IDStandard

Configures tools channel id.

Category

Discord & access

ADMIN_USER_IDSOptional

DISCORD — Channels & Access Control

ALLOWED_DM_USER_IDStandard

Leave blank to allow anyone to DM. Set to a single user ID to lock it down.

BOT_IDStandard

Used so the bot can detect when it's been @mentioned by its own ID. Find it in Discord: Settings → Advanced → Developer Mode, then right-click the bot.

DISCORD_BOT_IDOptional

Configures discord bot id.

DISCORD_BOT_TOKENRequiredSensitive

.env.example — Complete Environment Variable Reference Copy this to .env and fill in your values. Lines marked [REQUIRED] will crash the bot if missing. Lines marked [OPTIONAL] have sensible defaults shown. CORE — Discord & Bot Identity

DISCORD_CLIENT_IDOptional

Configures discord client id.

DISCORD_CLIENT_SECRETOptionalSensitive

Configures discord client secret.

GHOST_TOUCH_USER_IDStandard

Any message from this user activates GHOST_IDENTITY mode.

REQUIRE_HUMAN_WHITELISTStandard

When true: users not in the whitelist get no response or a rejection message.

Default true

Category

Google Drive & appearance

APPEARANCE_AVATAR_FOLDER_IDStandard

The bot can auto-update its Discord avatar from images in this folder.

APPEARANCE_BANNER_FOLDER_IDStandard

Configures appearance banner folder id.

GDRIVE_FOLDER_IDStandard

Syncs conversation logs or memory exports to a Google Drive folder. Uses a service account — different from GOOGLE_API_KEY above. Setup: create a service account in Google Cloud Console, share your Drive folder with the service account email. Find it in the folder's URL: drive.google.com/drive/folders/<ID>

GDRIVE_RP_FOLDER_IDStandard

Configures gdrive rp folder id.

GDRIVE_SERVICE_KEYStandardSensitive

Configures gdrive service key.

GOOGLE_APPLICATION_CREDENTIALSStandardSensitive

Configures google application credentials.

GOOGLE_CREDENTIALSOptionalSensitive

Configures google credentials.

Category

Identity & persona

AI_ARCHIVAL_ENABLEDStandard

When false: AI can read memories but cannot create new ones.

Default true
AI_BACKSTORYStandard

Configures ai backstory.

AI_DISTILLATION_ENABLEDStandard

Distillation compresses verbose memories into tighter summaries.

Default true
AI_IDENTITYStandard

Activated when a message comes from GHOST_TOUCH_USER_ID. Define the persona here as a short description.

AI_NAMEStandard

Configures ai name.

AI_PERSONALITYStandard

Configures ai personality.

AI_PRONOUN_OBJECTStandard

Configures ai pronoun object.

Default him
AI_PRONOUN_POSSESSIVEStandard

Configures ai pronoun possessive.

Default his
AI_PRONOUN_REFLEXIVEStandard

Configures ai pronoun reflexive.

Default himself
AI_PRONOUN_SUBJECTStandard

Configures ai pronoun subject.

Default he
AI_TRAITSStandard

Configures ai traits.

AI_VOWSStandard

Configures ai vows.

EMOTIONAL_KEYWORDSStandardSensitive

When matched, the bot treats the message as emotionally significant and gives it higher weight in context scoring.

INTIMACY_KEYWORDSStandardSensitive

Shifts the AI's response style toward a more personal register.

SIGNIFICANCE_KEYWORDSOptionalSensitive

Used by the memory system to decide what's worth saving.

USER_NAMEStandard

Configures user name.

USER_PRONOUN_OBJECTStandard

Configures user pronoun object.

Default her
USER_PRONOUN_POSSESSIVEStandard

Configures user pronoun possessive.

Default her
USER_PRONOUN_REFLEXIVEStandard

Configures user pronoun reflexive.

Default herself
USER_PRONOUN_SUBJECTStandard

Configures user pronoun subject.

Default she

Category

Image generation

IMAGE_GEN_AI_DESCStandard

Configures image gen ai desc.

IMAGE_GEN_API_KEYRequiredSensitive

OpenAI → platform.openai.com/api-keys NanoGPT → nano-gpt.com/account (different from MODEL_API_KEY)

IMAGE_GEN_ART_STYLEStandard

Configures image gen art style.

IMAGE_GEN_CHOICEStandard

OpenAI → dall-e-3, dall-e-2, gpt-image-1 NanoGPT → hidream, flux-dev, flux-schnell OpenRouter → recraft-v3, stable-diffusion-xl, etc. (see openrouter.ai/docs#image-generation)

Default dall-e-3
IMAGE_GEN_PROVIDERStandard

Generates images from text prompts via the generate_image tool. IMAGE_GEN_API_KEY is separate from MODEL_API_KEY — chat and image gen use different keys.

Default openai
IMAGE_GEN_USE_TEMPLATEStandard

Adds consistent framing (lighting, composition cues) around the raw prompt.

Default false
IMAGE_GEN_USER_DESCStandard

Configures image gen user desc.

Category

Integrations

GIF_AUTO_SENDStandard

When true: bot can use the send_gif tool and auto-send GIFs based on message content. When false (default): GIF feature is fully disabled even if the API key is set.

Default false
KLIPY_API_KEYStandardSensitive

Configures klipy api key.

LIBRARY_URLStandard

Configures library url.

NOTION_API_KEYStandardSensitive

Configures notion api key.

NOTION_NOTES_PAGE_IDStandard

Configures notion notes page id.

Category

Memory & database

CONSOLIDATION_INTERVAL_HOURSStandard

Configures consolidation interval hours.

Default 6
CONSOLIDATION_MEMORY_ENABLEDStandard

Runs as a background job — helps prevent memory bloat over time.

Default true
CONSOLIDATION_SCAN_WINDOW_HOURSStandard

Configures consolidation scan window hours.

Default 48
DATABASE_SSLOptional

# [OPTIONAL] Force SSL on the DB connection

Default true
DATABASE_URLRequiredSensitive

DATABASE — PostgreSQL (Railway) Format: postgresql://user:pass@host:port/db

DATABASE_URL_PRIVATEOptionalSensitive

Configures database url private.

EMBEDDING_SERVICE_URLStandard

Used to convert text into vectors for semantic memory search. Must be running separately — see embedding service docs.

MAX_ARCHIVAL_MEMORIESStandard

Archival is the long-term store — retrieved by embedding similarity.

Default 50
MAX_HUMAN_BLOCKSStandard

Human blocks store facts about the user — preferences, history, traits.

Default 20
MAX_PERSONA_BLOCKSStandard

Persona blocks define who the AI is, its backstory, and core traits.

Default 20
MAX_REFERENCE_TEXTSStandard

Used for RP worldbuilding, character sheets, or custom knowledge.

Default 5
MEMORY_API_ENABLEDOptional

Memory REST API (HTTP interface for inspecting and managing memories externally) # [OPTIONAL] Expose a REST API for memory management

Default false
MEMORY_API_PORTOptional

# [OPTIONAL] Port the memory API listens on

Default 3001
MEMORY_API_TOKENOptionalSensitive

Configures memory api token.

MEMORY_CURATION_ENABLEDStandard

Removes duplicates, fixes formatting, and scores memory importance.

Default true
MEMORY_HOMECOMING_ENABLEDStandard

Summarizes missed messages and injects a catch-up block into context.

Default true
MEMORY_MAINTENANCE_BATCHStandard

Configures memory maintenance batch.

Default 50
MIN_MEMORY_WEIGHTStandard

Higher = only highly relevant memories; lower = broader but noisier context.

Default 0.8
PG_POOL_MAXOptional

# [OPTIONAL] Max simultaneous DB connections in the pool

Default 10
PG_SCHEMAOptional

When set: all tables are created inside this schema, isolating this AI's data from other AIs sharing the same database server. Each AI gets its own namespace. Leave blank to use the default 'public' schema (single-AI deployment).

Default ai_2
SLEEP_STM_RETAINStandard

Configures sleep stm retain.

Default 10
TEMPORAL_DECAY_ENABLEDStandard

Memories that haven't been accessed in a long time slowly fade.

Default true

Category

Models & context

ALLOW_TEMPERATURE_OVERRIDEStandard

Configures allow temperature override.

Default true
CONTEXT_BUDGET_FACTOROptional

mismatch between the GPT-4 tiktoken estimator and your model's actual tokenizer. tiktoken tends to undercount tokens for non-OpenAI models. - Claude, GPT-4, most OpenRouter models: 0.85 (default — 15% safety margin) - Kimi K2.5, DeepSeek, or other models with large tokenizer ratios: 0.57 If you see "prompt too long" errors from Ollama, lower this value.

Default 0.85
CONTEXT_LENGTHStandard

Controls how many memories are loaded per request and how the memory lifecycle works. Higher limits = richer context but more tokens consumed per call. Should match (or be slightly under) the model's actual context limit.

Default 240000
CREWAI_LOG_FULL_ANALYSISStandard

Configures crewai log full analysis.

Default false
CREWAI_MODEL_SELECTStandard

When true: the AI evaluates task complexity and picks accordingly. When false: always uses MODEL_CHOICE.

Default false
CREWAI_MODELS_LISTStandard

Configures crewai models list.

Default kimi-k2:1t-cloud,kimi-k2.5:cloud
CREWAI_PROVIDERStandard

--- CrewAI (multi-agent mode, uses MODEL_PROVIDER as its backend) ---

Default ollama
CREWAI_THINKING_MODELStandard

Falls back to MODEL_CHOICE if not set.

CREWAI_VERBOSEStandard

Configures crewai verbose.

Default false
MODEL_ALLOW_TEMP_OVERRIDEStandard

When true: creative tasks use higher temp, factual tasks use lower. When false: temperature is always the provider default.

Default true
MODEL_API_KEYRequiredSensitive

OpenRouter → openrouter.ai/keys OpenAI → platform.openai.com/api-keys Claude → console.anthropic.com NanoGPT → nano-gpt.com/account Venice → venice.ai/dashboard Ollama Cloud → only needed for remote/cloud Ollama

MODEL_BASE_URLOptional

--- Ollama-specific ---

Default http://localhost:11434
MODEL_CHOICEStandard

OpenRouter → anthropic/claude-sonnet-4-5, google/gemini-2.5-pro OpenAI → gpt-4o, gpt-4o-mini, o1 Ollama → llama3.3:70b, kimi-k2.5:cloud, qwen3:235b Claude → claude-opus-4-5, claude-sonnet-4-5 NanoGPT → gpt-4o, claude-3-5-sonnet, deepseek-r1

Default gemma4:31b-cloud
MODEL_CONTEXT_LENGTHStandard

Most local models: 8192–32768. Cloud models: up to 1M+

Default 240000
MODEL_PROVIDERStandard

MODEL — Chat / Reasoning LLM This key is ONLY used for conversation and reasoning. Image generation, voice, and other features use their own keys below.

Default ollama
MODEL_TIMEOUT_MSStandard

If a call takes longer than this, it's cancelled and an error is returned.

Default 120000
RUNPOD_API_KEYOptionalSensitive

Configures runpod api key.

RUNPOD_BASE_URLOptional

--- RunPod (Ollama hosted on RunPod) ---

Category

Music

MUSIC_ENABLEDStandard

Injects 'now listening' context into the prompt

Default true
MUSIC_GENIUS_API_KEYOptionalSensitive

Surfaces trivia like "written after the death of a friend" or artist backstory. Get a free key: genius.com/api-clients (Client Access Token)

MUSIC_LYRICS_ENABLEDOptional

Pulls lyrics from lrclib.net (free, no key needed), then sends them to the LLM to extract themes and emotional arc. Runs in the background.

Default true

Category

Runtime & files

ANALYTICS_ENABLEDStandard

Logs detailed per-request metrics (tokens, latency, tool calls, etc.) to the database for review. Does not send data externally.

Default true
CHUNK_SIZE_MBStandard

Larger chunks = faster but more memory usage.

Default 50
COMPACT_TOOL_DEFINITIONSStandard

Strips whitespace and descriptions to reduce token usage. Useful when hitting context limits, but reduces LLM tool understanding.

Default false
DEBUGStandard

Configures debug.

Default false
DEPLOYMENT_DATEStandard

Injected into the system prompt so the AI has temporal self-awareness (e.g. knows how long it's been deployed, can reference time passed).

Default 2026-07-20
LOG_LEVELStandard

error → only errors | warn → errors + warnings info → normal operation logs | debug → everything including internal calls

Default info
MAX_FILE_SIZE_MBStandard

Files larger than this are rejected with an error message.

Default 1000
MESSAGE_BATCH_DELAY_MSStandard

If more messages arrive in this window, they're batched together. Prevents responding to each word of a multi-message thought separately.

Default 500
NODE_ENVStandard

development → verbose errors, stack traces shown production → clean error messages, no stack traces exposed

Default production
PORTOptional

# [OPTIONAL] HTTP server port (Railway sets this automatically via $PORT)

Default 3000

Category

Search & web tools

PDF_PARSING_ENABLEDStandard

Extracts text from PDFs attached directly in Discord messages.

Default true
SEARCH_ENABLEDStandard

SEARCH — Web Search & URL Tools Enables the web_search, fetch_url, youtube_transcript, and pdf_parse tools. When false: web_search, fetch_url, youtube, and PDF tools are all disabled.

Default true
SEARCH_EXA_KEYStandardSensitive

Exa finds conceptually similar pages, not just keyword matches. Better than keyword search for nuanced queries.

SEARCH_SERPAPI_KEYOptionalSensitive

Configures search serpapi key.

TIKTOK_ENABLEDStandard

Configures tiktok enabled.

Default false
TIKTOK_MAX_DURATIONOptional

Configures tiktok max duration.

Default 60
URL_FETCH_ENABLEDStandard

Fallback when Exa is unavailable or for standard keyword searches. Used by the fetch_url tool to pull articles, docs, or any public URL.

Default true
YOUTUBE_TRANSCRIPT_ENABLEDStandard

Pulls auto-generated or manual captions from any public YouTube video.

Default true

Category

Vision & watch

GOOGLE_API_KEYStandardSensitive

GOOGLE — Cloud API Key A single Google Cloud REST API key used by multiple features: • OCR / screenshot text extraction → Cloud Vision API (when VISION_PROVIDER=google or OCR tool) Enable APIs needed: Cloud Vision API

VISION_CHOICEStandard

Must support image inputs. Non-vision models will error.

VISION_ENABLEDStandard

VISION — Image / Screenshot Understanding Analyzes images attached to Discord messages or screenshots of the screen. openai → uses MODEL_API_KEY (models: gpt-4o, gpt-4o-mini) ollama → uses MODEL_BASE_URL (models: qwen3-vl, llava, etc. — no extra key needed locally) google → uses GOOGLE_API_KEY (models: gemini-1.5-flash, gemini-2.0-flash)

Default true
VISION_PROVIDERStandard

Configures vision provider.

Default ollama

Category

Voice & transcription

TTS_IMPORTANT_THRESHOLDOptional

Configures tts important threshold.

Default 80
TTS_PROVIDER_ORDEROptional

--- TTS Routing & Smart Selection ---

Default elevenlabs,cartesia,groq,google,openrouter,polly,edge
TTS_SMART_ROUTINGOptional

Configures tts smart routing.

Default true
VOICE_API_KEYOptionalSensitive

Configures voice api key.

VOICE_AUDIO_MODELOptional

Configures voice audio model.

Default mp3
VOICE_AUTO_JOINOptional

Configures voice auto join.

Default false
VOICE_CALL_ORDEROptional

Configures voice call order.

Default default
VOICE_CARTESIA_IDOptional

Configures voice cartesia id.

VOICE_CARTESIA_KEYOptionalSensitive

--- Cartesia ---

VOICE_CARTESIA_LANGUAGEOptional

Configures voice cartesia language.

VOICE_CARTESIA_MODELOptional

Configures voice cartesia model.

VOICE_DEFAULT_CHANNEL_IDOptional

Configures voice default channel id.

VOICE_EDGE_NAMEOptional

--- Edge TTS (free, no key needed) --- List: https://speech.platform.bing.com/consumer/speech/synthesize/readaloud/voices/list?trustedclient&header

VOICE_ELEVENLABS_IDStandard

Configures voice elevenlabs id.

VOICE_ELEVENLABS_KEYRequiredSensitive

--- ElevenLabs ---

VOICE_ELEVENLABS_MODELStandard

eleven_v3 → highest quality, multilingual, expressive eleven_turbo_v2_5 → faster with lower latency, good quality eleven_monolingual_v1 → English only, legacy, lowest cost

Default eleven_v3
VOICE_ENABLEDOptional

VOICE — Text-to-Speech (Multi-Provider) Converts AI text responses to audio, sent as voice messages or audio files in Discord. Supports ElevenLabs, Cartesia, Google, Groq, OpenRouter, Hume, Polly, and Edge TTS.

Default true
VOICE_GOOGLE_KEYOptionalSensitive

--- Google Cloud TTS ---

VOICE_GOOGLE_LANGUAGEOptional

Configures voice google language.

Default en-US
VOICE_GOOGLE_NAMEOptional

Configures voice google name.

VOICE_GOOGLE_PITCHOptional

Configures voice google pitch.

Default 0.0
VOICE_GOOGLE_RATEOptional

Configures voice google rate.

Default 1.0
VOICE_GROQ_KEYOptionalSensitive

--- Groq (ultra-fast TTS) ---

VOICE_GROQ_MODELOptional

Configures voice groq model.

VOICE_GROQ_NAMEOptional

Configures voice groq name.

VOICE_HUME_DESCRIPTIONOptional

Configures voice hume description.

VOICE_HUME_IDOptional

Configures voice hume id.

VOICE_HUME_KEYOptionalSensitive

--- Hume (emotional TTS) ---

VOICE_HUME_NAMEOptional

Configures voice hume name.

VOICE_HUME_VERSIONOptional

Configures voice hume version.

VOICE_IDOptional

Configures voice id.

VOICE_IDLE_TIMEOUTOptional

Configures voice idle timeout.

Default 300000
VOICE_MODELOptional

Configures voice model.

Default eleven_v3
VOICE_MODEL_CHOICEOptional

Configures voice model choice.

Default fastest
VOICE_MODEL_RACEOptional

Configures voice model race.

Default false
VOICE_MP3_ORDEROptional

Configures voice mp3 order.

Default smart
VOICE_OPENROUTER_KEYOptionalSensitive

--- OpenRouter TTS ---

VOICE_OPENROUTER_MODELOptional

Configures voice openrouter model.

VOICE_OPENROUTER_VOICEOptional

Configures voice openrouter voice.

VOICE_POLLY_ENGINEOptional

Configures voice polly engine.

Default neural
VOICE_POLLY_KEY_IDOptionalSensitive

--- Amazon Polly ---

VOICE_POLLY_NAMEOptional

Configures voice polly name.

VOICE_POLLY_REGIONOptional

Configures voice polly region.

Default us-east-1
VOICE_POLLY_SECRETOptionalSensitive

Configures voice polly secret.

VOICE_PREMIUM_PROVIDERSOptional

Configures voice premium providers.

Default elevenlabs,cartesia,hume
VOICE_STT_MODEOptional

--- Speech-to-Text Mode ---

Default whisper
VOICE_TEXT_CHANNEL_IDOptional

Configures voice text channel id.

VOICE_THINKING_FILEOptional

Configures voice thinking file.

VOICE_THINKING_SOUNDOptional

--- Voice Thinking / Processing Sounds ---

Default false
VOICE_THINKING_VOLUMEOptional

Configures voice thinking volume.

Default 0.3
WHISPER_API_KEYStandardSensitive

Groq → console.groq.com (key starts with gsk_) Deepgram → console.deepgram.com (key starts with dg_) OpenAI → platform.openai.com (key starts with sk-) If not set, falls back to MODEL_API_KEY for OpenAI Whisper.

WHISPER_ENABLEDStandard

VOICE — Speech-to-Text (Whisper) Transcribes Discord voice messages into text before passing to the LLM. Uses Groq for fast transcription if WHISPER_API_KEY is set; falls back to MODEL_API_KEY (OpenAI Whisper).

Default true
WHISPER_LANGUAGEStandard

Configures whisper language.

Default en
WHISPER_MODELStandard

whisper-large-v3-turbo → fastest, good accuracy (Groq preferred) whisper-large-v3 → most accurate, slower (Groq / OpenAI) whisper-1 → OpenAI legacy model nova-3 → Deepgram default (auto-detected if provider is deepgram)

Default whisper-large-v3-turbo
WHISPER_PROVIDERStandard

openai → whisper-1 (uses MODEL_API_KEY or WHISPER_API_KEY) groq → whisper-large-v3-turbo (fastest, uses WHISPER_API_KEY) deepgram → nova-3 (largest file support, up to 2GB, uses WHISPER_API_KEY)

Default groq
WHISPER_SEND_TRANSCRIPTIONStandard

Useful for confirming what was heard before the AI responds.

Default false

Category

Weather

WEATHER_API_KEYStandardSensitive

Powers the get_weather tool. Calls OpenWeatherMap Current Weather API. Free tier supports 1,000 calls/day — more than enough for a bot.

WEATHER_DEFAULT_LOCATIONStandard

Accepts: city name (London), zip code (80203), or lat/lon (40.71,-74.00)

Default New York
WEATHER_UNITSStandard

imperial → °F, mph | metric → °C, km/h

Default imperial