Agentic video generation,
byte-stable and fully local.

Feed a skill URL to your AI agent — it captures, authors a spec, runs the gates, and renders a pixel-perfect MP4. The core stays local and byte-stable; reviewed plugins add explicit capabilities.

What it does

Eight scene types. One typed spec. Zero surprises.

A composition is a JSON file. Scenes declare timing, content, and style — the CLI renders it to a deterministic MP4 via headless Chrome + ffmpeg. No HTML authoring, no timeline UI, no guessing. The spec is the source of truth.

Byte-stable renders

Same spec + same machine = identical SHA-256. Enforced by jitless V8, software rendering, and integer-pixel transforms.

🔒

Fully local

The core uses headless Chrome, ffmpeg, and a Python audio sidecar entirely locally. Optional plugins disclose their network, environment, and filesystem permissions before installation.

🎬

8 scene types

Typography, stat-hit, browser-frame, ui-callout, parallax (2.5D depth), atmosphere, video-layer, three-scene (deterministic 3D).

🎨

Grade + LUT pipeline

Stage-level CSS filter presets and output-level 3D LUTs (.cube) via ffmpeg. Bundled teal-orange, noir-film, faded-vintage.

🎵

Audio built-in

Procedural music synthesis, macOS TTS narration, and SFX (whoosh/hit/rise/boom) — all declarative in the spec, generated at render time.

Blocking gates

Snapshot regression (pixel-hash baselines) and seek determinism (double-render comparison) gate every render. No silent drift.

How it works

Three steps. No ceremony.

1

Capture or generate your assets

lazy capture https://example.com grabs screenshots, palette, copy, and fonts. lazy gen image produces procedural stills with matching depth maps. Or just drop in your own footage.

2

Write or edit spec.json

A typed JSON file — scenes, timing, style, audio. Validated by zod schema before anything renders. The capture command generates a starter spec for you.

3

Check, preview, render

lazy check runs gates. lazy preview opens a scrubbable timeline. lazy render produces a byte-stable MP4 with audio.

For AI agents

Ship it as a skill. Any agent can drive it.

Lazy Frames ships with a complete agent skill — a SKILL.md entry point plus reference docs that tell any coding agent exactly how to research an input, author a valid spec, run the gates, and render. The agent doesn't read source code or figure out the CLI. It reads the skill and follows the contract.

01

Install the skill

Point your agent at the skill/ directory. It reads SKILL.md — the entry point with routing rules and the agent contract.

02

Agent researches

The user says "make a video of my site." The agent captures the URL, reads the ledger, drafts a spec — all guided by the skill's workflow instructions.

03

Spec → video

The agent runs lazy check, fixes errors, opens lazy preview, and renders only after the user approves. Byte-stable MP4 out.

install the skill on any agent
# Install the package
npm install lazy-frames
# Feed the raw Markdown skill to your agent:
https://lazy-frames.cosmicstack.ai/skill.md
# Or clone for the full source + skill:
git clone https://github.com/cosmicstack-labs/lazy-frames.git
cd lazy-frames && npm install && npm run build
# Then just ask:
"Make a promo video of https://my-site.com"
# The agent captures, authors, checks, previews, and renders.
Quick start

From URL to MP4 in four commands

bash
Scene types

Built for motion

Each scene type is a deterministic component — configured by params, rendered by the engine. No CSS authoring, no timeline keyframing. Just declare what you want.

The promise

Byte-identical, provably

Two independent renders of the same spec produce the exact same file — verified by SHA-256. No timestamps, no nondeterministic encoders, no sub-pixel rendering drift.

SHA-256 of a cinematic render (two passes)
✓ identical