๐Ÿ”‘ Environment Variables

This page answers which environment variables StoryMatrix consumes, where each value lands, and which names carry secrets.

๐Ÿงญ Application

Values are never published here; secret-bearing rows identify the variable name only. Pydantic settings use the prefixes declared in src/storymatrix/config/models.py.

VariableConsumerDefaultSecret?
APP__APP_NAMEsrc/storymatrix/config/models.py:AppSettingsStoryMatrixNo
APP__APP_VERSIONsrc/storymatrix/config/models.py:AppSettings0.1.0No
APP__LOG_LEVELsrc/storymatrix/config/models.py:AppSettingssafe-log-level factoryNo
APP__LOG_DIRsrc/storymatrix/config/models.py:AppSettings<repo-root>/logsNo
APP__OUTPUT_DIRsrc/storymatrix/config/models.py:AppSettings<repo-root>/outNo
APP__TEMP_DIRsrc/storymatrix/config/models.py:AppSettings<repo-root>/tempNo
APP__CACHE_DIRsrc/storymatrix/config/models.py:AppSettings<repo-root>/cacheNo
APP__MEDIA_DIRsrc/storymatrix/config/models.py:AppSettings<repo-root>/mediaNo
APP__SILENCE_DIRsrc/storymatrix/config/models.py:AppSettings<repo-root>/assets/silenceNo
APP__DATA_DIRsrc/storymatrix/config/models.py:AppSettings<repo-root>/dataNo
APP__DEV_LOCAL_ONLYsrc/storymatrix/config/models.py:AppSettings; src/storymatrix/cli/main.pyfalseNo
APP__KEEP_TEMP_FILESsrc/storymatrix/config/models.py:AppSettingsfalseNo
APP__LOW_RESOURCE_MODEsrc/storymatrix/config/models.py:AppSettings; src/storymatrix/cli/main.pyfalseNo
APP__MAX_TTS_CONCURRENCYsrc/storymatrix/config/models.py:AppSettings; src/storymatrix/cli/main.py2No

๐ŸŒ SERVICES__API__

VariableConsumerDefaultSecret?
SERVICES__API__HOSTsrc/storymatrix/config/models.py:APISettings0.0.0.0No
SERVICES__API__PORTsrc/storymatrix/config/models.py:APISettings8000No
SERVICES__API__PUBLIC_BASE_URLsrc/storymatrix/config/models.py:APISettingsunsetNo
SERVICES__API__AUTH_ENABLEDsrc/storymatrix/config/models.py:APISettingsfalseNo
SERVICES__API__API_KEYsrc/storymatrix/config/models.py:APISettingsunsetYes
SERVICES__API__RATE_LIMIT_ENABLEDsrc/storymatrix/config/models.py:APISettingsfalseNo
SERVICES__API__RATE_LIMIT_REQUESTSsrc/storymatrix/config/models.py:APISettings100No
SERVICES__API__CORS_ENABLEDsrc/storymatrix/config/models.py:APISettingstrueNo

๐Ÿ–ฅ๏ธ SERVICES__WEB__

VariableConsumerDefaultSecret?
SERVICES__WEB__HOSTsrc/storymatrix/config/models.py:WebSettings0.0.0.0No
SERVICES__WEB__PORTsrc/storymatrix/config/models.py:WebSettings8080No

๐Ÿ“จ SERVICES__CELERY__

VariableConsumerDefaultSecret?
SERVICES__CELERY__BROKER_HOSTsrc/storymatrix/config/models.py:CelerySettingslocalhostNo
SERVICES__CELERY__BROKER_PORTsrc/storymatrix/config/models.py:CelerySettings6379No
SERVICES__CELERY__RESULT_BACKEND_HOSTsrc/storymatrix/config/models.py:CelerySettingslocalhostNo
SERVICES__CELERY__RESULT_BACKEND_PORTsrc/storymatrix/config/models.py:CelerySettings6379No
SERVICES__CELERY__BROKER_URLsrc/storymatrix/config/models.py:CelerySettingsredis://localhost:6379/0No
SERVICES__CELERY__RESULT_BACKENDsrc/storymatrix/config/models.py:CelerySettingsredis://localhost:6379/0No
SERVICES__CELERY__EAGER_MODEsrc/storymatrix/config/models.py:CelerySettingsfalseNo

๐Ÿ”Ž SERVICES__CHROMA__

VariableConsumerDefaultSecret?
SERVICES__CHROMA__HOSTsrc/storymatrix/config/models.py:ChromaConfiglocalhostNo
SERVICES__CHROMA__PORTsrc/storymatrix/config/models.py:ChromaConfig8000No
SERVICES__CHROMA__COLLECTION_NAMEsrc/storymatrix/config/models.py:ChromaConfigstory_contentNo

๐Ÿ—„๏ธ SERVICES__DATABASE__

VariableConsumerDefaultSecret?
SERVICES__DATABASE__URLsrc/storymatrix/config/models.py:DatabaseSettingssqlite:///data/storymatrix.dbNo
SERVICES__DATABASE__USERsrc/storymatrix/config/models.py:DatabaseSettingsstorymatrixNo
SERVICES__DATABASE__PASSWORDsrc/storymatrix/config/models.py:DatabaseSettingsconfigured secretYes
SERVICES__DATABASE__HOSTsrc/storymatrix/config/models.py:DatabaseSettingslocalhostNo
SERVICES__DATABASE__PORTsrc/storymatrix/config/models.py:DatabaseSettings57757No
SERVICES__DATABASE__DBNAMEsrc/storymatrix/config/models.py:DatabaseSettingsstorymatrixNo
SERVICES__DATABASE__DATA_DIRsrc/storymatrix/config/models.py:DatabaseSettingsdataNo

๐ŸŽš๏ธ SERVICES__MONTAGE__

VariableConsumerDefaultSecret?
SERVICES__MONTAGE__TARGET_LOUDNESS_DBFSsrc/storymatrix/config/models.py:MontageConfig-20.0No
SERVICES__MONTAGE__IMPLEMENTATIONsrc/storymatrix/config/models.py:MontageConfigffmpegNo
SERVICES__MONTAGE__CROSSFADE_DURATION_MSsrc/storymatrix/config/models.py:MontageConfig500No
SERVICES__MONTAGE__MUSIC_CROSSFADE_ENABLEDsrc/storymatrix/config/models.py:MontageConfigfalseNo
SERVICES__MONTAGE__MUSIC_CROSSFADE_MSsrc/storymatrix/config/models.py:MontageConfig1000No

๐Ÿ—ฃ๏ธ SERVICES__PIPER__

VariableConsumerDefaultSecret?
SERVICES__PIPER__PIPER_BINARYsrc/storymatrix/config/models.py:PiperConfigpiperNo
SERVICES__PIPER__VOICES_DIRsrc/storymatrix/config/models.py:PiperConfig./models/voices/piperNo
SERVICES__PIPER__MODELS_DIRsrc/storymatrix/config/models.py:PiperConfig./models/voices/piperNo
SERVICES__PIPER__DEFAULT_VOICEsrc/storymatrix/config/models.py:PiperConfigen_US-ljspeech-highNo
SERVICES__PIPER__QUALITYsrc/storymatrix/config/models.py:PiperConfighighNo
SERVICES__PIPER__SPEEDsrc/storymatrix/config/models.py:PiperConfig1.0No
SERVICES__PIPER__NOISE_SCALEsrc/storymatrix/config/models.py:PiperConfig0.667No
SERVICES__PIPER__NOISE_Wsrc/storymatrix/config/models.py:PiperConfig0.8No
SERVICES__PIPER__TIMEOUT_SECONDSsrc/storymatrix/config/models.py:PiperConfig120No
SERVICES__PIPER__ENABLE_GPUsrc/storymatrix/config/models.py:PiperConfigfalseNo
SERVICES__PIPER__AUTO_DOWNLOADsrc/storymatrix/config/models.py:PiperConfigfalseNo

๐Ÿ“ SERVICES__LOCAL_ASSETS__

VariableConsumerDefaultSecret?
SERVICES__LOCAL_ASSETS__MIN_SIMILARITY_SCOREsrc/storymatrix/config/models.py:LocalAssetsConfig; src/storymatrix/cli/main.py0.35No
SERVICES__LOCAL_ASSETS__SFX_LIBRARY_PATHsrc/storymatrix/config/models.py:LocalAssetsConfig<repo-root>/assets/sfxNo
SERVICES__LOCAL_ASSETS__MUSIC_LIBRARY_PATHsrc/storymatrix/config/models.py:LocalAssetsConfig<repo-root>/assets/musicNo
SERVICES__LOCAL_ASSETS__VOICE_DATA_PATHsrc/storymatrix/config/models.py:LocalAssetsConfig<repo-root>/models/voicesNo

๐Ÿง  SERVICES__SENTENCE_TRANSFORMER__

VariableConsumerDefaultSecret?
SERVICES__SENTENCE_TRANSFORMER__MODEL_NAMEsrc/storymatrix/config/models.py:SentenceTransformerConfigall-MiniLM-L6-v2No
SERVICES__SENTENCE_TRANSFORMER__CACHE_FOLDERsrc/storymatrix/config/models.py:SentenceTransformerConfigunsetNo

๐Ÿงช SERVICES__LLM__

VariableConsumerDefaultSecret?
SERVICES__LLM__OPEN_ROUTER__TIMEOUTsrc/storymatrix/config/models.py:OpenRouterServiceConfig; src/storymatrix/config/config.py30No

This is a test-facing compatibility namespace; canonical OpenRouter provider variables use PROVIDERS__OPENROUTER__.

๐Ÿ” Provider credentials and settings

ElevenLabs

VariableConsumerDefaultSecret?
PROVIDERS__ELEVENLABS__API_KEYsrc/storymatrix/config/models.py:ElevenLabsConfigunsetYes
PROVIDERS__ELEVENLABS__DEFAULT_VOICEsrc/storymatrix/config/models.py:ElevenLabsConfig21m00Tcm4TlvDq8ikWAMNo
PROVIDERS__ELEVENLABS__MODEL_STRATEGYsrc/storymatrix/config/models.py:ElevenLabsConfigeleven_multilingual_v2No
PROVIDERS__ELEVENLABS__MODEL_IDsrc/storymatrix/config/models.py:ElevenLabsConfigunsetNo
PROVIDERS__ELEVENLABS__STABILITYsrc/storymatrix/config/models.py:ElevenLabsConfig0.5No
PROVIDERS__ELEVENLABS__SIMILARITY_BOOSTsrc/storymatrix/config/models.py:ElevenLabsConfig0.8No
PROVIDERS__ELEVENLABS__STYLEsrc/storymatrix/config/models.py:ElevenLabsConfig0.0No
PROVIDERS__ELEVENLABS__USE_SPEAKER_BOOSTsrc/storymatrix/config/models.py:ElevenLabsConfigtrueNo
PROVIDERS__ELEVENLABS__SPEEDsrc/storymatrix/config/models.py:ElevenLabsConfig1.0No
PROVIDERS__ELEVENLABS__V3_AUDIO_TAGS_ENABLEDsrc/storymatrix/config/models.py:ElevenLabsConfigtrueNo
PROVIDERS__ELEVENLABS__V3_AUTO_ENHANCE_PROMPTSsrc/storymatrix/config/models.py:ElevenLabsConfigtrueNo
PROVIDERS__ELEVENLABS__OUTPUT_FORMATsrc/storymatrix/config/models.py:ElevenLabsConfigmp3_44100_128No
PROVIDERS__ELEVENLABS__SFX_ENABLEDsrc/storymatrix/config/models.py:ElevenLabsConfigtrueNo
PROVIDERS__ELEVENLABS__SFX_DURATION_SECONDSsrc/storymatrix/config/models.py:ElevenLabsConfig10No
PROVIDERS__ELEVENLABS__SFX_PROMPT_INFLUENCEsrc/storymatrix/config/models.py:ElevenLabsConfig0.3No
PROVIDERS__ELEVENLABS__PRONUNCIATION_DICTIONARY_IDSsrc/storymatrix/config/models.py:ElevenLabsConfig[]No
PROVIDERS__ELEVENLABS__OPTIMIZE_STREAMING_LATENCYsrc/storymatrix/config/models.py:ElevenLabsConfig0No
PROVIDERS__ELEVENLABS__APPLY_TEXT_NORMALIZATIONsrc/storymatrix/config/models.py:ElevenLabsConfigautoNo
PROVIDERS__ELEVENLABS__MAX_RETRIESsrc/storymatrix/config/models.py:ElevenLabsConfig3No
PROVIDERS__ELEVENLABS__TIMEOUT_SECONDSsrc/storymatrix/config/models.py:ElevenLabsConfig60No

Freesound

VariableConsumerDefaultSecret?
PROVIDERS__FREESOUND__API_KEYsrc/storymatrix/config/models.py:FreesoundConfigunsetYes

OpenRouter

VariableConsumerDefaultSecret?
PROVIDERS__OPENROUTER__API_KEYsrc/storymatrix/config/models.py:OpenRouterConfigunsetYes
PROVIDERS__OPENROUTER__BASE_URLsrc/storymatrix/config/models.py:OpenRouterConfighttps://openrouter.ai/api/v1No
PROVIDERS__OPENROUTER__DEFAULT_MODELsrc/storymatrix/config/models.py:OpenRouterConfiggoogle/gemini-2.5-flash-liteNo
PROVIDERS__OPENROUTER__HTTP_REFERERsrc/storymatrix/config/models.py:OpenRouterConfighttps://noflippinway.lolNo
PROVIDERS__OPENROUTER__X_TITLEsrc/storymatrix/config/models.py:OpenRouterConfigNoLoLNo
PROVIDERS__OPENROUTER__TEMPERATUREsrc/storymatrix/config/models.py:OpenRouterConfig0.7No
PROVIDERS__OPENROUTER__MAX_TOKENSsrc/storymatrix/config/models.py:OpenRouterConfig4096No
PROVIDERS__OPENROUTER__MAX_RETRIESsrc/storymatrix/config/models.py:OpenRouterConfig3No
PROVIDERS__OPENROUTER__TIMEOUT_SECONDSsrc/storymatrix/config/models.py:OpenRouterConfig120No

Midjourney

VariableConsumerDefaultSecret?
PROVIDERS__MIDJOURNEY__API_URLsrc/storymatrix/config/models.py:MidjourneyConfighost-specific; override itNo
PROVIDERS__MIDJOURNEY__API_KEYsrc/storymatrix/config/models.py:MidjourneyConfigunsetYes
PROVIDERS__MIDJOURNEY__TIMEOUT_SECONDSsrc/storymatrix/config/models.py:MidjourneyConfig240No
PROVIDERS__MIDJOURNEY__MAX_RETRIESsrc/storymatrix/config/models.py:MidjourneyConfig4No
PROVIDERS__MIDJOURNEY__BOT_TYPEsrc/storymatrix/config/models.py:MidjourneyConfigMID_JOURNEYNo
PROVIDERS__MIDJOURNEY__MODESsrc/storymatrix/config/models.py:MidjourneyConfig[FAST]No
PROVIDERS__MIDJOURNEY__POLL_INTERVAL_SECONDSsrc/storymatrix/config/models.py:MidjourneyConfig15No
PROVIDERS__MIDJOURNEY__QUEUE_BACKOFF_BASE_SECONDSsrc/storymatrix/config/models.py:MidjourneyConfig15No
PROVIDERS__MIDJOURNEY__QUEUE_BACKOFF_MAX_SECONDSsrc/storymatrix/config/models.py:MidjourneyConfig25No
PROVIDERS__MIDJOURNEY__SUBMIT_CONCURRENCYsrc/storymatrix/config/models.py:MidjourneyConfig1No
PROVIDERS__MIDJOURNEY__UPSAMPLE_ENABLEDsrc/storymatrix/config/models.py:MidjourneyConfigfalseNo
PROVIDERS__MIDJOURNEY__UPSAMPLE_COUNTsrc/storymatrix/config/models.py:MidjourneyConfig0No
PROVIDERS__MIDJOURNEY__UPSAMPLE_INDICESsrc/storymatrix/config/models.py:MidjourneyConfig[]No

PlayAI

VariableConsumerDefaultSecret?
PROVIDERS__PLAYAI__API_KEYsrc/storymatrix/config/models.py:PlayAIConfigunsetYes
PROVIDERS__PLAYAI__USER_IDsrc/storymatrix/config/models.py:PlayAIConfigunsetNo
PROVIDERS__PLAYAI__BASE_URLsrc/storymatrix/config/models.py:PlayAIConfighttps://api.play.ht/api/v2No
PROVIDERS__PLAYAI__DEFAULT_VOICEsrc/storymatrix/config/models.py:PlayAIConfigs3://voice-cloning-zero-shot/d9ff78ba-d016-47f6-b046-526a0004622e/alice/manifest.jsonNo
PROVIDERS__PLAYAI__QUALITYsrc/storymatrix/config/models.py:PlayAIConfighighNo
PROVIDERS__PLAYAI__STREAM_ENABLEDsrc/storymatrix/config/models.py:PlayAIConfigtrueNo
PROVIDERS__PLAYAI__TIMEOUT_SECONDSsrc/storymatrix/config/models.py:PlayAIConfig60No
PROVIDERS__PLAYAI__MAX_RETRIESsrc/storymatrix/config/models.py:PlayAIConfig3No
PROVIDERS__PLAYAI__OUTPUT_FORMATsrc/storymatrix/config/models.py:PlayAIConfigmp3No

Strategy selectors

VariableConsumerDefaultSecret?
PROVIDERS__STRATEGY__LLM_PROVIDERsrc/storymatrix/config/models.py:ProviderStrategyopenrouterNo
PROVIDERS__STRATEGY__AGENTIC_TIMELINE_PROVIDERsrc/storymatrix/config/models.py:ProviderStrategyopenrouterNo
PROVIDERS__STRATEGY__TTS_PROVIDERsrc/storymatrix/config/models.py:ProviderStrategypiperNo
PROVIDERS__STRATEGY__SFX_PROVIDERsrc/storymatrix/config/models.py:ProviderStrategylocalNo
PROVIDERS__STRATEGY__MUSIC_PROVIDERsrc/storymatrix/config/models.py:ProviderStrategylocalNo
PROVIDERS__STRATEGY__IMAGE_PROVIDERsrc/storymatrix/config/models.py:ProviderStrategymockNo

๐Ÿ–ผ๏ธ DALLE_

VariableConsumerDefaultSecret?
DALLE_API_KEYsrc/storymatrix/config/models.py:DalleConfigunsetYes
DALLE_BASE_URLsrc/storymatrix/config/models.py:DalleConfighttps://api.openai.com/v1No
DALLE_MODELsrc/storymatrix/config/models.py:DalleConfigdall-e-3No
DALLE_ORGANIZATION_IDsrc/storymatrix/config/models.py:DalleConfigunsetNo
DALLE_MAX_RETRIESsrc/storymatrix/config/models.py:DalleConfig3No
DALLE_TIMEOUT_SECONDSsrc/storymatrix/config/models.py:DalleConfig120No

๐ŸŽผ MUSICGEN_

VariableConsumerDefaultSecret?
MUSICGEN_API_KEYsrc/storymatrix/config/models.py:MusicGenConfigunsetYes
MUSICGEN_MODEL_IDsrc/storymatrix/config/models.py:MusicGenConfigfacebook/musicgen-smallNo
MUSICGEN_TIMEOUT_SECONDSsrc/storymatrix/config/models.py:MusicGenConfig120No

๐Ÿ“ˆ Telemetry

VariableConsumerDefaultSecret?
OTEL_EXPORTER_OTLP_ENDPOINTsrc/storymatrix/infrastructure/observability/tracing.pyunset; enabling OTLP requires itNo
OTEL_SERVICE_NAMEOpenTelemetry SDK (not read by application code)SDK-definedNo
OTEL_RESOURCE_ATTRIBUTESOpenTelemetry SDK (not read by application code)unsetNo
OTEL_CONSOLE_EXPORTERsrc/storymatrix/cli/main.py; src/storymatrix/interfaces/api/main.py; src/storymatrix/interfaces/web/main.pyfalseNo
DEPLOYMENT_ENVIRONMENTsrc/storymatrix/cli/main.py; src/storymatrix/interfaces/api/main.py; src/storymatrix/interfaces/web/main.pydevelopmentNo

See โš™๏ธ Configuration for the nested settings tree and ๐Ÿ“ˆ Observability for metrics and tracing behavior.