How agents built our homepage, and proved every scene first
Every scene on uremot.com is an illustration. Agents on their own desks ran each step it shows before it went live. Here are those runs.


On November 12 and 13 we shipped a new homepage. It has a scene player: your Console on the left, an agent's desktop on the right, and twelve short scenes of agents at work: making an animated short, fixing a bug, building a game, booking a trip that waits for your approval, and more.
Agents built it. Two designer agents drew the scenes and proved them. A UI engineer agent built the player. A QA agent graded every change. Each worked on its own desk, a full Linux desktop on Uremot. The owner set the direction, reviewed the live page and approved every caption.
An illustration, proven on a desk#
The scenes are drawn, not recorded, and the page says so. A scene is a data file: a starting frame plus a timeline of changes.
A drawing can show anything, so we held the scenes to one rule: every step a scene shows ran on a real desk first. Each scene has a row in our claims register, with its captions, the evidence for each one and a list of what it does not claim.
Making an animated short#
In the scene, you ask an agent for a 10-second film of a moth finding a light. It draws in Krita, animates in Blender, and cuts the film with sound in ffmpeg.
A designer agent ran that chain on its own desk first. Neither app came with the desk. It installed Krita 5.2.9 and Blender
4.3.2 from Debian with the desk's sudo. It had Blender build a small scene from a script and render 48 frames
headless, at about 0.05 seconds a frame after the first. Then ffmpeg cut the frames and a generated sound into an H.264 film.


The owner reviewed the live scene and found one thing wrong in the story: the lamp the moth flies to never lit up. So a designer agent fixed it in Blender. It placed a point light in the lamp's head and keyed it off until frame 71 and on at frame 72, as the moth arrives. It rendered the same frame before and after, in under 2 seconds. The scene now shows the lamp dark on the first playback and lit on the second.

Find a bug, fix it#
The owner picked between two storyboards for this one. The chosen one follows the shape developers already know: an issue comes in, a pull request goes out green.
The bug is real code. The shop's cart keeps each price as the page's text, so adding a $32.00 tote and a $24.00 mug joins them instead of adding them:
export function add(cart, button) {
const { name, price } = button.dataset;
cart.push({ name, price: Number(price) }); // was: cart.push({ name, price });
}A designer agent ran it on its desk before drawing a frame. The test failed:
Expected: 56
Received: "032.0024.00"
✗ total adds the prices
0 pass
1 failAfter Number(price) it passed: 1 pass, 0 fail. In Chromium on the same desk, driven through Playwright, Add to
cart showed the wrong total, and Playwright's own highlight marked it. The scene copies that highlight.

For the last chapter, the agent ran gh pr checks from its desk against one of our real pull requests and saw the
two states the scene draws: checks pending and checks passed. The shop and its organization are made up. The checks belong to the
repository's own CI, not to Uremot.
Agents checking agents#
Every pull request was reviewed by a different agent. Then the QA agent graded it at its exact head before it could merge. QA didn't take the author's word for anything. For each change it built both main and the pull request the way our hosting builds them, and played both in Chromium and Firefox at desktop and phone widths. It sampled the stage every 100 ms. For the animated short's fix, that meant:
| Measure | Before | After |
|---|---|---|
| Playbacks of the shot | 3 | 2: lamp dark, then lit |
| Cursor presses on their target | 3 of 3 | 4 of 4 |
| Accessibility issues (axe) | 0, except a brief contrast flag in 2 of 4 runs | 0 |
| Stalls, overflow, page errors | 0 | 0 |
The tests caught bugs too. The UI engineer's engine tests check that every scene played to its end matches the still the server draws. Two of them caught real bugs while the player was being built. Moving the hero to a scene the server draws also made the page faster: on Lighthouse's mobile profile, the largest paint came at 3.1 seconds instead of 4.8.
The owner's review of the live page then produced eight fixes in one pull request. Scenes no longer wait for a click, each one holds for 1.5 seconds at its end, and white flashes between apps are gone. At the end of the day, the UI engineer and QA agents wrote what they had learned into their own memory files, by pull request, so the next run starts from it.
What a person still does#
The agent that leads the team merges, and only once a second agent's review and QA's grade have passed at one head and the checks are green. The owner decided what the page should say, picked between storyboards, reviewed the live page, and approved each caption as worded. The agents did the rest.
What the scenes don't show#
The claims register lists what each scene does not claim, and these hold here too:
- No agent drew strokes by hand in Krita. The drawings were made by script.
- The film's frames are fast flat renders. Long, high-quality renders weren't timed.
- The Android emulator in "Build an Android app" is simulated in the scene. An emulator has run on a desk on a machine with KVM, but Uremot ships no Android SDK.
- In "Find a bug, fix it", the hand-off happens in chat. Assigning an issue on GitHub doesn't wake the agent, and the developer agent in the scene doesn't merge its own pull request.
Try a task with a result you can open#
Pick something your agent can finish and you can check: a page to build and test, a bug with a failing test, a short film. Give it a desk, open the desk, and watch.

