Devtool Clean
Code, terminals, and an SDK workflow in one continuous camera move. Sample: Acme SDK.
Create videos with React and the filesystem.
Components, audio, and templates built in.
Set up Odori in this folder and make a launch video from it. The guide is at odori.dev/start.md.This is Studio, the workspace odori dev opens.
Install a template and customize its text, scenes, and audio.
Code, terminals, and an SDK workflow in one continuous camera move. Sample: Acme SDK.
A prompt becomes visible work, with conversation and result sharing the stage. Sample: Acme agent.
Photography, layered cards, and large type flow into a saved collection. Sample: Weekender.
Build, revise, and publish one workshop booking app. Sample: Forma.
Define scenes in video.tsx. Share brand settings and formats through layout.tsx.
import {Audio, Scene, Video, defineVideoMetadata} from "odori";
import {CodeProof} from "../components/code-proof/code-proof";
import {EndCard} from "../components/end-card/end-card";
import {Stage} from "../components/stage/stage";
import {TitleReveal} from "../components/title-reveal/title-reveal";
import {productLayout} from "../layout";
import {launchInput} from "./schema";
export const metadata = defineVideoMetadata({
id: "launch",
title: "Odori launch",
description: "A concise introduction to the odori authoring model.",
duration: "12s",
layout: productLayout,
schema: launchInput,
tags: ["launch", "framework"],
thumbnailFrame: 45,
});
export default function LaunchVideo({
headline,
callToAction,
}: {
headline: string;
callToAction: string;
}) {
return (
<Video>
{/* One bed under the whole cut, ducked so scene sounds stay audible. */}
<Audio src="bed.main" gain={0.6} fadeIn="1s" fadeOut="1.5s" duckUnder="foreground" />
<Scene id="opening" duration="4s" name="Opening">
<Stage>
<TitleReveal title={headline} detail="An independent React video framework." />
</Stage>
</Scene>
<Scene id="proof" duration="5s" name="Proof">
<Stage grid={false}>
<CodeProof
code={SOURCE}
language="tsx"
title="videos/launch/video.tsx"
caption="Static metadata for discovery. Ordinary JSX for the timeline."
/>
</Stage>
</Scene>
<Scene id="resolution" duration="3s" name="Resolution">
<Audio group="foreground" src="ui.confirm" from="0.2s" duration="1s" gain={0.7} />
<Stage>
<EndCard
title={"One definition.\nEvery render path."}
detail="Preview needs no encode. Export freezes the approved cut."
callToAction={callToAction}
/>
</Stage>
</Scene>
</Video>
);
}
/** The example entry the proof scene displays on screen. */
const SOURCE = `export const metadata = defineVideoMetadata({
id: "launch",
title: "Product launch",
duration: "12s",
});
export default function LaunchVideo() {
return (
<Video>
<Scene id="opening" duration="4s">
<TitleReveal title="Author the story." />
</Scene>
</Video>
);
}`;
Give your agent the docs, source files, and commands to create and test videos.
Store videos as files your agent can read and edit.
Search the documentation from the CLI, without a network connection.
odori docs search audioParse scene and test results as JSON.
odori inspect launch --jsonCheck timing, blank frames, overflow, and text size before export.
odori testInstall skills for video creation, review, and reproduction.
npx plugins add allenzhou101/odoriGive compatible agents access to components, templates, and timing requirements.
odori.dev/api/mcpAdd charts, interfaces, and motion effects with odori add. Edit their source in your project.
A staggered, word-masked headline.
A typed command session with deterministic output reveals.
Browser chrome for deterministic product interface frames.
Ranked bars with labels, values, and staged growth.
Direct visual comparison with a controlled divider.
The closing frame: title, supporting line, and a call to action.
Use your project's colors, fonts, and UI to set the video brand.
npx skills add allenzhou101/odori --skill initialize-design-systemInstall components and customize their source.
odori add component title-reveal bar-chartWrite scenes in video.tsx, or ask your agent to create them.
odori new launchAdd music and sound effects, or generate narration with ElevenLabs.
odori audio generate "warm minimal ambient" --type musicRender your scenes and audio to an MP4.
odori export launchChoose from the audio library, import a track, or generate music with ElevenLabs.
Two rising notes for a confirmation.
A soft bell for notifications.
A swell and chord for an opening title.
Building music for a product reveal.
Steady, spacious background music.
A sustained chord with shimmering high notes.