Nova Studio

Build notes · Boyu · 14 August 2026

Why we built a graph instead of a prompt box.

Every generative tool starts as a text field and a button. That shape is honest for one image and quietly wrong for anything with a second shot in it — because the thing you are actually making is the relationships, and a prompt box has nowhere to put them.

What breaks at the second shot

A prompt box is a very good interface for one image. You describe a thing, you get the thing, you adjust the description. The loop is tight and the feedback is immediate, and for a single frame there is genuinely nothing better.

Then you need a second shot with the same character in it. Now the interesting information is not inside either prompt — it is the fact that they are supposed to match. And that fact has nowhere to live. It lives in your head, or in a naming convention, or in a folder of reference images you keep re-uploading, or in a paragraph you paste into every prompt and edit slightly each time until you are no longer sure which version is canonical.

This is the failure everybody hits and almost nobody names, because it does not look like a failure. Nothing errors. You just find yourself spending most of your time on clerical work: finding the right reference, remembering which seed produced the good version, pasting the character description again, checking whether shot four still matches shot one. The tool is fine. The tool is just not holding any of the structure you are working in.

The shape that fits

A graph puts the relationship on the screen as an object you can edit. A reference node connects to three shot nodes; changing the reference changes what all three inherit. A character description is one node that four shots point at, so there is exactly one copy and it cannot drift. A shot that depends on another shot says so with an edge.

This is not a novel idea. Node graphs are how compositing, procedural modelling and audio production have worked for thirty years, and for the same reason: once the output of one operation is the input to another, the connections carry more information than the operations do. What is new is only that generation is now one of the operations.

The prompt is not the unit
A node is. It carries its prompt, its settings, its inputs and its result together, so "what produced this frame" is answerable by looking at it rather than by remembering.
Shared things are shared, not copied
One character node feeding six shots is one description. Editing it edits six shots. Copy-paste into six prompt boxes is six descriptions that agree today and disagree in a fortnight.
The structure outlives the model
A graph that solves continuity is still solving it after the model underneath it is replaced. A folder of frames from a retired checkpoint is a historical artefact.
Revision is local
Changing the lighting on one shot does not require re-deriving what the other five were supposed to look like, because what they were supposed to look like is written down as edges.

What it costs

Stated because the trade is real, not because it is close.

A graph is a heavier first five minutes than a text field. There is no version of this that is not true. You have to place a node before you can type in it, and someone who wants one image right now is worse off than they would be with a prompt box — measurably, and we have watched it happen.

We decided that is the right trade, and the reason is that the two audiences are not equally served by the compromise. A one-image user given a graph loses thirty seconds. A twelve-shot user given a prompt box loses their afternoon, every afternoon, and never gets the structure back. The heavier interface is recoverable; the missing model is not.

What we owe the first user is that the extra thirty seconds is the whole cost — that the canvas opens with something on it, that a single node behaves like a prompt box, and that nothing forces a graph on someone who wants a picture. That part is ongoing work rather than a solved problem.

Questions we get

Is this just ComfyUI?

It shares the node-graph idea and is aimed somewhere else. ComfyUI graphs describe the inside of a generation — samplers, schedulers, the wiring of a pipeline — and reward knowing how diffusion works. Nova Studio graphs describe the relationships between shots in a piece of work: this reference feeds these three shots, this character appears in those four. Both are graphs; one is a machine and one is a storyboard.

Do I have to build a graph to make one image?

No. A single node with a prompt in it is a prompt box, and that is a supported way to use the canvas. The graph is what is there when you need a second shot, not a prerequisite for the first.

What happens to my graph when the underlying models change?

The structure survives, because it was never model-specific: an edge saying "this reference governs this shot" means the same thing against any generator. The outputs are regenerated against whatever is current. This is the main practical argument for the graph — it is the part of your work that does not expire.

Can I share a graph with someone else?

You can publish one. What leaves is the structure — nodes, connections, settings. Your source references and final frames stay yours unless you add them as examples. Somebody who opens it gets a working graph to run and change, and attribution stays attached when they build on it.