The AI assistant
An assistant that builds and edits the actual scene. Not a chatbot that writes instructions for you to follow — it produces ordinary layers, keyframes and effects that you then edit by hand.
It is optional and requires the companion server. The app is fully usable without it, including every export format.
Where it lives
The AI panel in the left sidebar, laid out like a chat client: header with new-chat and history, a scrolling thread, a composer pinned to the bottom.
It is hoisted above the dock tree, so switching to another tab mid-generation does not cancel the run.
There is also a floating prompt bar at the bottom centre of the canvas, for quick one-liners without opening the panel.
Two paths, one router
A prompt is classified by a pure function — no model call, no round trip — into one of two paths:
| Class | Goes to | For |
|---|---|---|
trivial_edit | The direct tool loop | “make it blue”, “delete that layer” — short, and pointing at something that already exists |
generative | The caster | “a 6-second product intro” — a brief for a whole piece |
The router is deliberately biased toward generative. Sending a piece-sized brief to the direct loop produces hand-assembled output; sending a small edit through the caster costs two extra model calls and still does the right thing. The costs of being wrong are asymmetric, and that sets the default.
The caster
This is the part that matters, and it is not what most AI features do.
The model does not author keyframes. It never sees a keyframe, a technique definition or a layout template. What it sees is a pre-filtered, capped list of one-line briefs — filtered by look pack, by energy, by slot duration, and by which roles your content can actually fill.
Every candidate it is offered is therefore already valid, and its job is taste rather than feasibility.
Your prompt
| classify -> generative
v
Creative brief the model, writing a short brief
|
v
Casting the model picks technique + layout ids and seeds
| (capped at 25 motion / 12 layout candidates)
v
Validation unknown, forbidden, clashing or too-short casts are
| REPLACED with the top-ranked valid candidate
v
Emit deterministic libraries produce the actual tool calls
| - technique-library, design-system, product-motion
v
Fit critic judges the result against rendered evidence
|
v
One undo entryWhy the cap
Handing a model 250 options and asking it to choose does not produce a considered choice; it produces a pick from the top of the list. The cap is 25 for motion and 12 for layout, enforced by the registries.
Why validation is not optional
A cast naming an unknown technique, a forbidden one, a clashing pair, or one whose slot is too short is rejected and replaced with the highest-ranked valid candidate. The model is not asked to try again — the constraint was already in the prompt, and a model that violated it once will violate it again. Falling back deterministically costs nothing and always produces something castable.
The practical consequence: the quality floor is deterministic. A bad model response degrades to a reasonable piece, not to a broken one.
Look packs
Casting is filtered by look pack — a coherent type and layout system, so a generated piece reads as designed rather than assembled. Six ship:
grotesque · swiss · editorial · geometric · technical · humanist
Entrance archetypes
So generated scenes do not all enter the same way, entrances are a parameter, not a template. Six archetypes, each a distinct keyframe and easing plan:
rise · scale_pop · blur_resolve · slide_settle · mask_wipe ·
char_cascade
They are varied automatically per role — a title, a card and an emblem will not
get the same archetype by default — and coerced away from targets they cannot
work on (char_cascade needs text, for instance).
Manual and Auto
The composer has an execution mode picker:
| Mode | Behaviour |
|---|---|
| Manual | You get a reviewable preview. Apply or Decline |
| Auto | Changes are applied directly |
Manual is the right default while you are learning what it does with your prompts.
Three invariants
- One prompt is one undo entry. Calls execute against the same tool context the direct loop uses, inside one transaction. Decline rolls back cleanly; Apply is a single Ctrl/⌘ + Z.
- The editor never holds a provider key. Every call goes through the gateway, which names a provider and attaches the key server-side. See Connecting a provider.
- Failures are recorded, never swallowed. A malformed model response is a logged path failure and a deterministic fallback, not a silent empty run.
What it cannot do
- It cannot work without the server.
- It does not replace direction. It is much better at “build the structure” than at “make this feel right”.
- Everything it makes is editable, which is the point — expect to refine.
Related
- Prompting it well
- Tool reference — all 62 tools