Generated once, rendered the same

Lolly uses AI in a few specific places: it can speak a script aloud, enlarge a small image, and lift a subject off its background. This page is about how those features are built, because the shape is the same for all of them and it is the interesting part. A model does one probabilistic thing, once, under guard-rails. Everything after that is a deterministic render that never guesses again.

That split is what makes a generated element safe to build on. The moment a voice clip or an enlarged photo exists, it stops being a model's shifting output and becomes a fixed artifact - a specific set of bytes. From then on every tool that uses it works from those same bytes, so the same input produces the same asset in the browser, in the terminal and on the desktop, today and next year. The unpredictable step is contained. It does not leak into the render.

A generated storm image opened in Verify, its GEN AI badge beside the green Made with Lolly verdict and the credential-intact and bytes-unchanged checkssigné par Lollyvectoriel SVGAI generatedVérifie par toi-mêmeRécupérer le fichier signé165 paths~17k nodes88 groups2 images488 KBA generated storm image opened in Verify, its GEN AI badge beside the green Made with Lolly verdict and the credential-intact and bytes-unchanged checkssigné par Lollyvectoriel SVGAI generatedVérifie par toi-mêmeRécupérer le fichier signé165 paths~17k nodes88 groups2 images488 KB

Two steps, and only one of them guesses

Generation is the probabilistic step. Asking a model to invent a voice or infer detail that was never in the pixels is, by nature, a guess. Lolly boxes that guess in: it runs on your own device with no upload, it happens as one explicit, cancellable action rather than inside a render loop, and its output is disclosed for what it is. Then it is over. The result is saved as an ordinary asset - a clip, an image - and the model is not consulted again.

The render is deterministic. Every tool's entire state lives in its inputs, and those inputs live in the URL, so a link is a reproducible render (see URL Mode). The CLI is that same render path under a different transport: --voice=… on the command line is the same value the web shell reads from ?voice=…. One path, so a browser and a build server cannot drift. Hand the same inputs to the engine and you get the same asset back.

This is why a generated ingredient is not a moving target. Re-open a project next year, render it in CI, paste the link to a colleague on another platform - the speech, the upscaled photo, the cutout all compose exactly the same way, because none of them is re-generated. It is also what provenance rests on. A Content Credential that attests to these bytes is only meaningful when those bytes are stable, and here they are stable by construction.

A spoken clip turned into an audiogram, its waveform the actual shape of the audio - the kind of card a synthesised voice lands in before it chains into a video's credentialssigné par Lollyvectoriel SVGVérifie par toi-mêmeRécupérer le fichier signé3 paths746 nodes11 groups1 image195 KBA spoken clip turned into an audiogram, its waveform the actual shape of the audio - the kind of card a synthesised voice lands in before it chains into a video's credentialssigné par Lollyvectoriel SVGVérifie par toi-mêmeRécupérer le fichier signé3 paths746 nodes11 groups1 image195 KB

The features, and how each is marked

The Catalogue, where an image generated in Gemini, Claude or OpenAI and brought in sits beside the brand's own assets, each tile a permanent id every tool can callsigné par Lollyvectoriel SVGVérifie par toi-mêmeRécupérer le fichier signé77 paths~5.4k nodes140 groups126 KBThe Catalogue, where an image generated in Gemini, Claude or OpenAI and brought in sits beside the brand's own assets, each tile a permanent id every tool can callsigné par Lollyvectoriel SVGVérifie par toi-mêmeRécupérer le fichier signé77 paths~5.4k nodes140 groups126 KB

Add, or remove?

The line between "marked AI" and "an honest edit" is not a judgement call, it is a mechanical test: did the model invent pixels that were not there?

Keeping the test this strict is what keeps the badge worth reading. It means "a model made up part of what you are looking at," not "a model was involved somewhere nearby." A badge that fired on every AI-adjacent operation - including ones that add nothing - would tell a viewer nothing, and over-claiming provenance is as dishonest as hiding it.

The export panel's Content Credentials card, pre-ticked, so an AI-origin ingredient rides into whatever file the render becomes rather than being left behindsigné par Lollyvectoriel SVGVérifie par toi-mêmeRécupérer le fichier signé8 paths678 nodes14 groups2 images17 KBThe export panel's Content Credentials card, pre-ticked, so an AI-origin ingredient rides into whatever file the render becomes rather than being left behindsigné par Lollyvectoriel SVGVérifie par toi-mêmeRécupérer le fichier signé8 paths678 nodes14 groups2 images17 KB

How to hold us to it

Each claim here has a mechanism behind it, and each mechanism ships with tests: the on-device boundary, the source-type a given operation stamps, and the flag that does or does not appear. Run any output through Verify It Yourself and read the change history back for yourself. The engineering-level detail of these bridges lives in Host API, and the wider position they follow from is Our AI Stance. If the code and this page ever disagree, the code is the bug.