Temporary preview — not the final site
Draft / Preview — not published

OpenMontage + HyperFrames: when agents should write HTML, not fight Remotion

Most “AI video” discourse still means generative pixels: a model invents frames. The quieter shift that matters for production agentic ops is the opposite — deterministic composition. The agent writes a document the machine already knows how to render. HeyGen’s open-source HyperFrames is that bet: HTML + CSS + GSAP in, video out. OpenMontage now treats it as a first-class render runtime alongside Remotion and FFmpeg.

I’m drafting this because agentic video pipelines (FRAME-style ops, explainers, product reels) keep failing in the same place coding agents failed before tools matured: we force the model into the wrong medium, then blame the model.

What HyperFrames actually is

HyperFrames is an agentic composition runtime: write the scene the way a frontend engineer would (markup, styles, timelines), scrub it in a DAW-style preview, then render. Registry blocks drop in battle-tested pieces (grain, shimmer, data charts, shader transitions). Website-to-video capture turns a live URL into composition inputs. No HyperFrames API key for the core path — narration, music, and AI b-roll still use your existing provider keys.

That design matches how coding agents already win: they are strong at HTML/CSS/JS and weak at inventing opaque binary timelines from scratch. Remotion’s React compositions are excellent when you already think in React scenes. Kinetic type, launch reels, and “fake browser / fake dashboard” demos are where designers reach for HTML + GSAP first. Forcing those through Remotion interpolate() calls is slow and brittle for an agent loop.

OpenMontage’s contract: choose the runtime on purpose

Per OpenMontage discussion #40, the useful split is:

  • renderer_family — creative grammar (explainer-data, cinematic-trailer, product-reveal, …)
  • render_runtime — technical engine (remotion | hyperframes | ffmpeg)

Both are chosen at proposal, locked in the proposal packet, and carried through edit decisions. Silent runtime swaps are treated as a contract violation. If HyperFrames isn’t installed, the agent must say so before downgrading — never quietly. That is the same discipline I want in phone-agent stacks: don’t silently change the path that determines latency, cost, or blast radius.

Day-1 Remotion-only pieces stay on Remotion (word-by-word caption burn, TalkingHead / lip-sync, some documentary overlays). Mixing Remotion and HyperFrames scenes in one film is not the default agent path yet; humans can instruct a mix, but the automation contract is still either/or unless you override it.

Where this lands next to OpenRouter

Two OpenRouter signals from mid-September make the stack coherent:

  1. Volume still lives in flash loops. Public rankings through Sep 18 keep GPT-5.6 Luna #1 by tokens and DeepSeek V4.1 Flash surging hard at #2, with coding/agent apps (Hermes, Claude Code, Kilo, Cline, …) dominating tracked app traffic. Agent loops chew tokens; video pipelines will too once capture and captioning are in the loop.
  2. HyperFrames can caption via OpenRouter vision. A recent CLI path lets hyperframes capture use OPENROUTER_API_KEY (default model along the flash-lite tier, overridable) instead of requiring a Google key. Same routing lesson as production LLM work: one key, swap models on purpose, don’t hard-bind the pipeline to a single vendor’s vision endpoint.

OpenRouter’s server shell / Files API beta is the same family of idea as HyperFrames: give any model a hosted place to do work, not just emit text. For video ops, the composition file is the durable artifact; the model is replaceable.

What I’d copy into a production agentic video desk

  1. Pick the medium that matches the brief. React-shaped cards and talking-head → Remotion. Kinetic type, promos, website-to-video → HyperFrames. Heavy b-roll under typography → FFmpeg composite, as in the Willow documentary pattern.
  2. Lock runtime in the proposal. No silent downgrades. Preflight prints which engines are available.
  3. Probe footage before you scale. Many stock clips are 640×360 even when labeled “large.” Scale-to-cover, don’t pad-to-fit — otherwise your “fullscreen” b-roll is a postage stamp.
  4. Route vision/captioning like LLM traffic. OpenRouter (or equivalent) as a flash default for capture enrichment; escalate model only when caption quality fails evals.
  5. Keep generative video optional. Deterministic composition is the ops backbone; gen-video is a texture supplier, not the whole pipeline.

How this sits next to voice-agent work

Phone agents and video agents fail differently but rhyme. Voice fails on latency, transfers, and naturalness under stress. Video agents fail on wrong medium, silent fallbacks, and footage that doesn’t match the composition assumptions. In both cases the fix is architectural: explicit contracts, visible preflight, replaceable models behind a gate — not “pick a prettier model.”

Pimenov’s practical angle still applies as format inspiration only: ship what you actually run. If your desk can’t print hyperframes: true in preflight, don’t pretend the agent can ship kinetic type today.

Closing

HyperFrames + OpenMontage is not “another AI video model.” It’s an admission that agents already speak HTML, and video ops should meet them there. Remotion stays for React-native scenes; HyperFrames takes the designer-native half; FFmpeg still composites reality underneath. Treat runtime choice like credential policy: name it, lock it, never swap it quietly.

Related drafts: Muse Secure VM credentials, OpenRouter rankings in production, Cursor Projects stub. Comparing notes beats comparing logos. Say hello.

Sources: OpenMontage — HyperFrames runtime; heygen-com/hyperframes; HyperFrames — OpenRouter vision captioning; OpenRouter rankings (usage through Sep 18, 2026); OpenRouter — Shell server tool & Files API.