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 | Standard YouTube |
| youtube_4k | 3840x2160 | 16 | 4K YouTube |
| youtube_shorts | 1080x1920 | 9 | Max 60s |
| instagram_reels | 1080x1920 | 9 | Max 90s |
| instagram_feed | 1080x1080 | 1 | Square |
| tiktok | 1080x1920 | 9 | Vertical |
| 1920x1080 | 16 | Landscape | |
| cinematic | 2560x1080 | 21 | Ultrawide |
Profiles are referenced from edit_decisions and passed to composition tools. See Media Profiles for the complete field list per profile.