Configuration#
OpenMontage reads global settings from config.yaml and provider credentials from .env. These files control LLM behavior, spending limits, state persistence, output defaults, and platform-specific render profiles. All config.yaml values are validated by Pydantic models in lib/config_model.py.
config.yaml#
Place config.yaml in the project root. The file defines five top-level sections.
llm:
provider: anthropic
temperature: 0.7
max_tokens: 4096
budget:
mode: warn
total_usd: 10.00
reserve_pct: 0.10
single_action_approval_usd: 0.50
checkpoint:
policy: guided
storage_dir: pipeline
output:
default_format: mp4
default_codec: libx264
default_audio_codec: aac
default_resolution: 1920x1080
default_fps: 30
default_crf: 23
paths:
pipeline_dir: pipeline
library_dir: library
styles_dir: styles
skills_dir: skills
output_dir: output
llmsets the coding assistant provider and generation parameters.budgetcontrols spending mode (observe,warn, orcap), total limit, reserve holdback, and approval threshold.checkpointselects the default policy (guided,manual_all, orauto_noncreative) and storage location.outputsupplies default render parameters used when no platform profile is selected.pathsoverrides directory locations for pipeline state, libraries, styles, skills, and final output.
.env File#
Copy the example and add only the keys you need:
cp .env.example .env
| Variable | Used By | Purpose |
|---|---|---|
ELEVENLABS_API_KEY |
elevenlabs_tts, music_gen | TTS, music, sound effects |
OPENAI_API_KEY |
openai_tts, openai_image | TTS fallback, DALL-E 3 |
XAI_API_KEY |
grok_image, grok_video | Grok image editing/generation and video |
FAL_KEY |
flux_image, kling_video, veo_video, minimax_video, recraft_image | fal.ai hosted models |
HEYGEN_API_KEY |
heygen_video | Multi-provider video gateway |
PEXELS_API_KEY |
pexels_image, pexels_video | Free stock media |
PIXABAY_API_KEY |
pixabay_image, pixabay_video | Free stock media |
GOOGLE_API_KEY |
google_imagen, google_tts | Imagen images and Cloud TTS |
RUNWAY_API_KEY |
runway_video | Runway Gen-4 video |
HIGGSFIELD_API_KEY + HIGGSFIELD_API_SECRET |
higgsfield_video | Higgsfield multi-model video |
SUNO_API_KEY |
suno_music | Full song generation |
MODAL_LTX2_ENDPOINT_URL |
ltx_video_modal | Self-hosted LTX-2 |
VIDEO_GEN_LOCAL_ENABLED |
local video tools | Enable local GPU generation |
VIDEO_GEN_LOCAL_MODEL |
wan, hunyuan, ltx, cogvideo | Select local model |
DOUBAO_SPEECH_API_KEY / DOUBAO_SPEECH_VOICE_TYPE |
doubao_tts | Mandarin TTS |
HF_TOKEN |
analysis tools | Optional speaker diarization |
UNSPLASH_ACCESS_KEY |
stock tools | Free stock images |
See Provider Guide for setup steps and pricing per key. See Configuring Providers for first-time setup.
Media Profiles#
lib/media_profiles.py supplies platform-specific render configurations. Each profile defines resolution, aspect ratio, codec, audio codec, CRF, pixel format, max file size, max duration, and caption format. The ffmpeg_output_args(profile) helper produces the matching FFmpeg flags.
| Profile | Resolution | Aspect | Notes |
|---|---|---|---|
| youtube_landscape | 1920x1080 | 16:9 | Standard YouTube |
| youtube_4k | 3840x2160 | 16:9 | 4K YouTube |
| youtube_shorts | 1080x1920 | 9:16 | Max 60s |
| instagram_reels | 1080x1920 | 9:16 | Max 90s |
| instagram_feed | 1080x1080 | 1:1 | Square |
| tiktok | 1080x1920 | 9:16 | Vertical |
| 1920x1080 | 16:9 | Landscape | |
| cinematic | 2560x1080 | 21:9 | Ultrawide |
Profiles are referenced from edit_decisions and passed to composition tools. See Media Profiles for the complete field list per profile.