The part after the first design.
In October, I pointed Desk Studio at its own launch card. Three roughs, one pick, three polish rounds, scored 8.4, then 8.5, then 8.9, signed off at 8.9 for $1.34 at list price. And I could see every one of those steps while it happened, which is the whole reason the tool exists.
Before it, a follow-up like "make the headline bigger" would come back from my coding agent as a whole new design. New layout, new colors, sometimes new copy. Was the headline fixed? Couldn't tell, cause everything else moved too.
So Desk Studio splits the job up like a small studio. Rough options first, then one gets picked with notes, a cheaper desk polishes it, a script checks the real pixels, and a senior desk signs it off or sends it back. I still use it on my own projects.
What it is.
There are 42 desks. The Design Manager runs in your own session and hands out work. The other 41 run as subagents, things like a Typographer, an Art Director, a UI Designer, or an Email Designer. Each one is just a markdown brief in the repo, so if you want to know how the Art Director decides, you open agents/art-director.md and read it.
They're grouped into three tiers, and each tier is on a model that suits what it does.
| Tier | Default model | What it does |
|---|---|---|
| Directors (3 desks) | Opus | the pick, the notes, the sign-off |
| Seniors (17 desks) | Sonnet | the roughs, research, type, tokens, copy |
| Builders (21 desks) | Haiku | every polish round, the making |
It all runs locally. The desks reach models through whatever CLI you're already logged into, claude, codex or agy, or an API key if you'd rather. Apart from those model calls and a few web lookups from the research desks, nothing leaves your machine.
In Claude Code it's a plugin. For Codex, Cursor, Gemini CLI, Copilot, Windsurf or OpenCode it's one line in the project:
# Claude Code /plugin install desk --marketplace adityareddy-dev/deskstudio # Codex, Cursor, Gemini CLI, Copilot, Windsurf, OpenCode npx deskstudio add Then you just ask like you normally would:
/desk:design a launch card for LinkedIn # or run the job yourself from a terminal npx --package deskstudio desk-run design "a launch card for LinkedIn" The files land in .desk/out/<job>/ with a short note on who did what, the scores and the cost.
How a job runs.

Every visual job takes the same path.
- Roughs. The UI Designer makes three different directions on the senior model, from the brief, your brand file and the standard for that kind of piece.
- Pick. The Art Director looks at the renders, picks one (or mixes two) and writes notes.
- Polish. A builder desk works from those notes plus a screenshot of the current render. Rounds are cheap, so this is where the back and forth happens.
- Proof. A script renders the file in Chrome at every size and checks the pixels. No model.
- Sign-off. The Creative Director scores eight axes: hierarchy, typography, spacing, colour, composition, originality, brand fit and copy.
To pass, every axis needs 8 or more and the average needs 8.5. Fail-proof, and it goes back to the builder with the screenshot. A builder that misses the same note twice hands the file up to a senior, and a senior that misses twice gets one round with the Art Director. After the round cap, the job comes back marked under the bar, with a note on which axis fell short, so it won't quietly ship something that didn't pass.
Here's a real terminal run of exactly that, on OpenAI models this time. Proof caught a type-scale problem in round 2, the builder fixed it, and round 3 still came back under the bar cause originality only got a 6. The last lines say what's missing.

Splitting out the pick was deliberate. Once a direction is picked, every round after that is a fix to that one design, so a note like "type sizes, not layout" means the next round touches type sizes and nothing else. When every round is a fresh design, there's nothing steady to measure against, which was the whole problem in the first place.
Proof has no model in it for a similar reason. Contrast against the real pixels, text spilling out of a box, a headline sitting in a platform's crop zone, a script checks all that the same way every time and it costs nothing. The models get to spend their judgment on the stuff a script can't see.
One real job, start to finish.
This is the launch card for Desk Studio itself, retold from its job record.
The UI Designer made three roughs: an editorial split, a type-only one, and a framed one. The Art Director went with rough 2, the type-only one, and wrote why: "headline reads first at both sizes, only amber is the small lamp, fixes are type sizes not layout."

You can overrule that. Every rough has a Pick this button, and if you use it, the pick goes on record as yours instead of the Art Director's.
After that, the builder polished, proof ran every round, and the Creative Director scored each one.
| Round | Proof | Average score | Result |
|---|---|---|---|
| 1 | passed | 8.4 | under the 8.5 bar, back to polish |
| 2 | passed | 8.5 | originality 7, under the bar, back to polish |
| 3 | passed | 8.9 | signed off |

Round 3 got a 9 on seven axes and an 8 on originality, so 8.9 on average. This is the file it signed off.

The whole job came to $1.34 at list price.
| Tier | What it did on this job | Cost |
|---|---|---|
| Directors, Opus | the pick and three sign-offs | $0.81 |
| Seniors, Sonnet | the three roughs | $0.43 |
| Builders, Haiku | three polish rounds | $0.10 |
| Total | 10 desk runs | $1.34 |
About 60% of that went to judgment and 40% to making, and the three polish rounds together were ten cents. That's what the tiers are for. If you're on a subscription, it's a list-price estimate of usage, not an extra bill.
The proof step, up close.

Before the Creative Director ever sees a file, proof renders it in Chrome at each target size and checks:
- text contrast against the actual pixels behind it
- overflow and clipping
- safe zones per platform
- colours inside the brand palette and type on the brand scale
- that every required line of copy is actually there
- carousel slides matching each other, and reading time and flashes in motion pieces
You can also run proof on its own against any HTML file:
desk-proof check hero.html --brand .desk/DESIGN.md --sizes phone,desktop Watching it on the dashboard.
1.1 rebuilt the dashboard into the floor you can leave open while a job runs. It only listens on 127.0.0.1 , and the URL carries a token.
# Claude Code /desk:dashboard setup /desk:dashboard start # any other agent or a plain terminal npx --package deskstudio desk-dashboard setup npx --package deskstudio desk-dashboard start The strip at the top is the job. In this capture of the launch card, it's sitting on round 2's sign-off; round 1 came in at 8.4, $0.77 is spent so far, and it's 17m 25s in.

Pause at next step holds the job before the next step, and Stop job ends it there. Neither one cuts a desk off halfway.
Below that is the floor, with a room per tier and a Proof booth. Each desk is a little bot that wakes up while that desk is working and goes back to sleep after. A ×3 on a desk means three of them are running at once, which is what you see during the roughs. Every room's sign shows its model, and Change swaps the whole tier.
Clicking a desk opens its panel. The UI Designer's panel here says it's on anthropic/haiku and has done 4 runs on this job, 887k tokens, $0.45. You can switch just that desk to another model, for this job or as the default, or leave it a note that goes into its next prompt.

On the right is who's working right now, and under it the studio log in plain words. One line from this job reads "Creative Director scored round 1: 8.4, under the bar", and the polish for round 2 starts on the very next line.

The roles and cost panel is where the tiers make sense. The builders went through 2.9 million tokens on this job, and that still came to ten cents. The slowest single run was the Creative Director's round 2 sign-off at 11 minutes 25 seconds, which tells you where the time actually goes.

Since 1.0.2, a job's event log also exports as an OpenTelemetry trace, with role timings, tokens and cost, so a design job can sit in the same tracing tool as the rest of your stuff.
What else it has made.
The repo keeps a gallery of 17 signed-off pieces with their renders, scores and costs. Most are for four made-up brands, one's for a real site whose brand the studio found in the project, and three are for Desk Studio itself.

| Piece | Score | Rounds | Cost |
|---|---|---|---|
| Brand kit for Harbor | 8.6 | 2 | $10.16 |
| Carousel for Quill | 8.9 | 2 | $2.11 |
| Welcome email for Ferro | 8.8 | 2 | $1.42 |
| Ops dashboard for Northlight | 8.5 | 3 | $6.21 |
| Pitch deck for Northlight | 8.5 | 4 | $7.93 |
| Motion sting for Quill | 9.0 | 2 | $3.33 |
What it doesn't do yet.
The scores come from the studio's own model reviewers. They're useful for comparing rounds of one job, not as a benchmark against anything else. The standalone runner only takes design for social cards right now, and the rest of the commands are Claude Code skills. The briefs install into other agents fine, though not every command works the same way there yet.
Try it.
Free, MIT licensed, and it runs on the CLI login or API key you already have.
npx deskstudio add npx --package deskstudio desk-dashboard setup npx --package deskstudio desk-dashboard start Then ask your agent for a launch card and keep the floor open. The code, docs, and full gallery are on GitHub, and there's a 50-second film on deskstudio.ai.
What I use most is the rounds view. I pull up round 1 next to round 3 and check if the thing I asked for is the thing that changed.
