Skip to content

A storyboard for AI video

Make a film one shot at a time.

Lay the film out as a row of shots and work through them one at a time — write it, generate it, watch it, try again. Where two shots meet you supply the frame they both have to land on, so generating one of them again leaves the shots either side of it exactly as they were. You can spend forty takes on the one that is giving you trouble and never re-render the rest.

Harbour at Dawn — twenty-four seconds, five shots, made in Lunar Canoe. The opening wide and the rewrite of the shot that follows it were proposed by the director and accepted with one click. Sound is generated with the picture; unmute if you want it.

0.7%

mean pixel difference between the still we pinned to a seam and the last frame of the clip the model generated to land on it.

16.6%

the same measure on two genuinely different photographs. That is what “different” looks like on this scale.

28 clips

of real generation on a real subject, two runs per configuration, behind those numbers. Method and full table.

The shape of the problem

Generated video arrives eight seconds at a time, slowly, and bills you whether you keep it or not.

A three-minute film is roughly twenty-two generations. Each one takes 30 to 85 seconds to come back — we measured that — and costs real money on arrival, good or bad. So the loop that actually matters is not “render the movie.” It is render shot 7 again, and again, until it is the shot.

Every tool built around a single prompt makes that loop expensive in the wrong way: change one thing and everything downstream of it is suspect. Lunar Canoe is built around the re-roll instead.

The idea

Two shots, one still, no cascade.

The obvious way to keep two shots continuous is to take the last frame of the first one and feed it into the second. Don't. The final frame of a generated clip is usually its worst — motion blur, compression. Errors compound, and by shot six the jacket has changed colour. Worst of all, it makes regeneration catastrophic: re-roll shot three and every shot after it is invalid.

So we inverted it. The boundary still is an input to both shots and an output of neither.

You generate that still first — cheap, fast, and you get to look at it before spending anything on video — then pin it to the seam. The earlier shot is told to land on that exact frame. The later shot is told to start from it. Re-rolling the earlier shot changes the motion in between and leaves the endpoint precisely where it was, which is why the shot after it never needs to know.

That only works if the model really hits the endpoint. So we measured it, on a real subject, across both providers and every conditioning mode we could combine: 28 clips, two runs each, about $27 of generation.

The best configuration — Gemini Omni Flash, five seconds, first and last frame conditioning plus three identity references — lands the end frame 0.7% away from the authored still, difference-hash distance 0. The pose change it had to bridge measures 16.6% and distance 16. The error is an order of magnitude below the thing it was asked to do.

The measurement also told us where it breaks. Veo 3.1 at four seconds drifts to 5.5% on a pinned seam; at eight seconds it snaps back to 1.5%. So the app refuses the four-second pinned combination outright rather than selling you a render it knows will disappoint. Read the full report.

Two near-identical photographs side by side: a teddy bear perched on a pillow on a couch. On the left is the still authored and pinned to the seam; on the right is the last frame of the clip a model generated to land on it. No difference is visible.
Left: the still we authored and pinned. Right: the last frame of the clip the model generated to land on it. 0.7% mean pixel difference, dHash 0, reproduced across two independent runs. Gemini Omni Flash, 5 s, first + last frame conditioning with three reference images.

How it works

Storyboard, seams, takes, export.

  1. 01

    Lay the film out as shots

    An ordered strip of scenes, each with its own subject, action, camera, lighting and style. Order is the only structure — no ports, no wires. Contiguous spans can share a style bible so a sequence holds together without you retyping it into every prompt.

    The Lunar Canoe canvas showing four numbered shots in order, a purple group span labelled 'Pier, pre-dawn' bracketing shots 1 and 2, one filled seam marker reading PINNED and two hollow markers reading UNPINNED.
    Four shots, one style group, one pinned seam.
  2. 02

    Generate the still that sits on the cut

    Before any video exists, you author the frame where two shots meet. It arrives in about fifteen seconds and costs pennies, so you can generate three, throw two away, and still have spent almost nothing. This is the point in the process where decisions are cheap.

    A dialog titled 'Generate a still for the last frame of scene 2' with a prompt field, negative prompt, aspect, count and seed controls, and a Generate button showing a per-image price.
    The still dialog. Prices shown in this alpha build are provider cost, not retail.
  3. 03

    Pin it to the seam

    Pinned means immutable, and it means shared: the same asset is now the last frame of the shot before and the first frame of the shot after. Neither shot produces it; both are constrained by it. Editing a boundary invalidates exactly the two shots that touch it — never the rest of the film.

    The shot editor for scene 2, showing structured intent fields, provider settings, a reference image tray, and a SEAMS panel with a thumbnail labelled 'Before (from scene 1) — Pinned boundary still'.
    One shot's inputs, including the seam it is pinned to.
  4. 04

    Render each shot on its own — then export

    You press render, per shot, with the price on the button. Re-roll shot 7 as many times as it takes; shots 6 and 8 don't move, don't restale, don't need re-rendering. When you like all of them, export concatenates the takes in order into a single file.

    An Exports panel listing a ready export with its clip count, duration, audio mode, resolution, aspect ratio, frame rate and a Download button.
    Export produces one file.

The director

Tell it what you want changed.

Talk to it in the language you already use. “Add an establishing shot before scene 1.” “Make act two feel more claustrophobic.” “Write prompts for these six shots against the group style bible.” It reads the storyboard, then comes back with a set of named commands — insert this, rewrite that — staged as a proposal. You see the change highlighted on the canvas before it happens, and accept or discard it whole.

Chat and direct manipulation write the same commands. Dragging a shot and asking for it to be moved produce identical entries in the log, and everything in that log has an inverse, so undo is real rather than best-effort.

It is better at some things than others.

It earns its place on semantic and bulk work: writing six prompts against a style bible, tightening a sequence so it reads as one movement, noticing that shot 4 contradicts the light in shot 3. It has the whole board in context — ordinals, group spans, which seams are pinned, which shots have gone stale.

It is worse at precise positional work. Moving one shot two places left is a drag; describing which shot and where is three sentences. Both surfaces write the same commands, so use whichever is faster for the edit in front of you.

It proposes and you decide. Renders are yours to start, from the strip, with the price on the button.

The director panel labelled 'authors, never renders' beside the canvas. The agent has replied with reasoning and attached a proposal listing two changes — insert a scene at the start, rewrite the prompt for scene 1 — with Discard and Accept buttons. The affected shots are highlighted on the canvas as ADDED and MODIFIED.
A live director turn: two staged commands, shown as a diff on the canvas, accepted or discarded as one.
The canvas with a red banner across the top reading 'Render blocked: the project's monthly cap is $0.00; $0.00 spent this month, this render is approximately $0.64', with a 'Raise cap' button.
A per-project monthly cap refusing a render before it starts.
A history panel listing recent commands — create project, insert scene, set provider params, set intent, undo set intent, redo set intent — each attributed to YOU with a relative timestamp.
Every change, yours or the director's, is a named command with an inverse.

What it costs

You pay for what you render. Nothing else.

No subscription
A prepaid balance you top up when you want to. Unused balance stays yours. There is no monthly floor to pay for a month you didn't shoot in.
The unit is the second
Around $0.16 per second of finished video on the default model, and around $0.06 for a boundary still. Duration times rate — no credits, no exchange rate to work out.
So, in shots
A five-second shot is under a dollar. A thirty-shot short film is somewhere around $25 of renders — plus the re-rolls you will actually do, and you will re-roll.
Nothing spends by surprise
The price is on the render button before you press it. A per-project monthly cap refuses anything over it. The director cannot render at all.

Rates are still being finalised against measured provider cost — we mark provider cost up and publish the rate itself, not an invented credit unit. Treat the figures above as the shape and the order of magnitude. The exact rate card is published in the app, and you see an exact price on the button, before you can spend anything.

A generated still of a fishing harbour before dawn: silhouetted moored boats, a low horizon and an amber pre-dawn sky.
A boundary still generated inside the app — 1344 × 768, about fifteen seconds, a few cents. Stills are cheap on purpose: they are where the decisions happen, before video costs you anything.

What it isn't

Deliberately not built.

Saying this out loud costs us signups from people who want a different product. That is the point.

  • No one-prompt-to-film mode

    Type a sentence, get a movie is a different product for the opposite user. Everything here assumes you want to decide what is in shot seven.

  • No multi-track timeline

    Hard cuts between shots, in order. No transitions, no per-clip colour grading, no audio bed. Take the export into an editor for that.

  • No collaboration

    One person, one film, for now. A project is named and produces exactly one movie.

  • No node graph

    Order is the only structural relationship. A canvas with ports and wires selects for people who would rather build this than use it.

Questions

The things people ask first.

Which models does it use?

Google's Vertex AI, today: Gemini Omni Flash as the default and Veo 3.1 / Veo 3.1 Fast as alternatives. Omni is the default because it is the only configuration we measured that carries identity reference images through a pinned seam. The provider layer is an abstraction — models will change, and the seam mechanism does not depend on any one of them.

How long does a shot take?

Between 30 and 85 seconds, measured across 28 real renders. A still is about fifteen. It is slow enough that you will not sit and watch it, and that is exactly why the unit of work is one shot rather than one film.

Can I really re-roll one shot without disturbing its neighbours?

Yes, and precisely: re-rolling a shot changes only that shot. Editing a boundary still invalidates exactly the two shots adjoining it. Nothing else in the film is touched, because nothing else depends on it.

What can the director actually do?

It writes prompts, inserts, reorders and groups shots, and stages those as a proposal you accept or discard as one. It has the whole board in context, so it is good at work that spans many shots. Starting a render is something you do from the strip, with the price on the button.

What do I get out of it?

An MP4 of your shots concatenated in order at the resolution you rendered, with hard cuts between them. No project lock-in: the individual takes and the stills are yours to download too.

Who owns the output?

You do, subject to the model provider's terms, which we will link rather than paraphrase. We do not strip SynthID watermarking from generated frames. Full terms, privacy policy and acceptable-use policy publish before signups open.

Desktop app or browser?

Browser. Nothing to install; renders run on our infrastructure and your assets are stored against your project so a clip is never lost to a provider's two-day retention window.

Is this shipping?

It is a working alpha. Every screenshot on this page is the real build, and every number is a measurement from our own renders. What is not built yet is signup and billing — which is why the invite list exists.

Early access

Get an invite

Signups aren't open yet. We're letting people in a few at a time, and we're picking the first ones by what they're trying to make. Tell us and you go near the front.

One address, used to send you an invite and occasional build notes. Confirmation email first, unsubscribe in every message, no sharing, no tracking pixels. This page sets no cookies and runs no analytics.

The invite list isn't wired up yet, so the honest version is: send us an email.

Email support@enginyyr.com

Tell us what you're trying to make. Nothing about you is stored in this browser.