Skip to main content
Harmonia contains bounded adapters for generated images, four-second Veo b-roll, and thirty-second Lyria audio. These are optional downstream media effects, not automatic agent tools.

How Harmonia uses it

Deterministic code constructs a versioned production plan from persisted strategy, source evidence, and production context. Each scene binds to authorized excerpts or approved conditioning artifacts. The operator seals the exact revision and approves its cost-bearing mandate. Budget is reserved before provider dispatch. Veo uses a resumable long-running operation whose provider operation name is persisted before polling; Lyria uses the Vertex interactions endpoint; image generation uses the configured Google GenAI model path and is also approval-gated. Generated bytes are validated, stored as internal artifacts, receipted, and independently checked by digest before use.

Security and authority

Agents may propose media intent and semantic scene treatments but cannot invoke providers, invent source or artifact identifiers, enable paid media, change budgets, seal or approve plans, or publish outputs. Application code owns plan IDs, digests, provider operation identities, dependency checks, receipts, and verification. Person generation is disabled for Veo. Global Lyria use requires an explicit regional-policy exception.

Failure behavior

Policy filtering, malformed payloads, pending operations, missing bytes, provider errors, and uncertain dispatch remain explicit. Resumable operation IDs prevent unsafe restarts.

Evidence status

Provider adapters, schemas, budgets, and resumability have automated coverage. Authenticated Veo, Lyria, or image-generation claims require captured provider operations and usage records.

Relevant files

  • agent/harmonia_agent/generative_media.py
  • agent/harmonia_agent/production_executor.py
  • agent/harmonia_agent/production_media.py
  • src/lib/productionPlanStore.ts
  • src/lib/mediaProduction.ts
  • agent/tests/test_generative_media.py
Last modified on August 30, 2026