Agent and CI workflows
Agents and continuous integration can use the same files and commands as Studio. Keep discovery, authoring, validation, and export as separate steps so failures are attributable.
Discover before editing
Start by listing the project's videos and reading available documentation:
pnpm odori list --json
pnpm odori graph --json
pnpm odori docs search "scene"
pnpm odori catalog components --jsonlist describes local compositions. catalog describes installable resources. An agent should read the relevant component contract and implementation before writing props against it.
Review before export
A repeatable loop for one video is:
- Edit the entry and the smallest relevant components.
- Inspect the timeline and verify input values.
- Render representative frames and examine them.
- Run checks, fix failures, and review changed scenes again.
- Export the approved composition.
Use JSON output where the command supports it:
pnpm odori inspect launch --json
pnpm odori frame launch --at 2s --output out/review.png
pnpm odori test launch --json
pnpm odori export launch --output out/launch.mp4A PNG file is evidence to inspect, not an automatic quality score. Ask the agent to compare layout, content, and timing against the brief.
Run in continuous integration
Install dependencies with the repository's lockfile, then prepare the rendering environment and run validation. For a pnpm project:
pnpm install --frozen-lockfile
pnpm odori install
pnpm odori doctor
pnpm odori test --json
pnpm odori export launch --output out/launch.mp4The runner needs Node.js 20 or newer, React 19 or newer in the project, and the operating-system dependencies required by Chrome. Managed binary installation downloads Chrome and FFmpeg; it does not install missing Linux system libraries.
Keep API keys in the CI provider's secret store. Only supply generation-provider credentials when the workflow actually generates assets.
Retain useful artifacts
Upload rendered files from out/, review PNGs, and the relevant records under .odori/builds/. A failed job record helps distinguish preparation, capture, and encoding failures.
Commit source, the package lockfile, odori.lock.json, and assets needed by the composition. Treat .odori/ as generated state rather than source code. If you preserve it to retry a job, retain its referenced inputs and assets as well.
Keep automation reproducible
Pin project dependencies through the package lockfile. Avoid fetching changing content during React render. Use preparation for external data and validated inputs for variants.
For tool-based agent access, see MCP. For local instructions and reusable workflows, see skills.