Make it a bit softer.
Three rounds later, it still isn’t.
A sentence has no resolution. The agent picks a number, you rebuild, you say less, it picks another one. ParamRig puts that decision on a control instead, and hands the agent the value you stopped at.
Start here
npm install --save-dev @paramrig/webA development dependency. It installs nothing into a page no workbench is framing, and leaves the production bundle with the branch that guards it.Sent as a sentence
- You
- The accent is too warm on the hero.
- Agent
- Cooled it down.--accent
#bc593d→ #b8654a - You
- Cooler.
- Agent
- Adjusted.--accent
#b8654a→ #9c6b58 - You
- Not browner. Cooler.
Sent as a value
Writes
--accent · global · css-variable#bc593d → #336b72
Prose is a controller with one bit of precision.
You can see it. You cannot name it.
Your eye settles on the right hue in under a second. Writing it down as #336b72 is a different job. “Warmer” has no units, no bounds and no midpoint.
Every round trip costs a build.
Nothing in between survives it. The value that was nearly right is gone by the next round, and so is the reason you turned down the one before it.
The agent has never seen the screen.
It writes code against a description of a picture, and your description is all it has to go on. Two people would read it two ways.
Ask for the instrument, not the result.
The agent wrote the code, so it already knows which values decide how the thing looks. Let it expose those as controls, around the thing while it is running.
Turning them is the part you are better at. The number you land on is what it needs back.
And it has the editors to make the thing in.
A vector editor with layers, a pen, boolean geometry and node editing. A 3D editor with an outliner, edit mode, a modifier stack, UVs and materials. Both keep the keyboard you already use.
Everything they hold

Three ways to put controls on something.

A project you already run
Point the workbench at your development server. Your design tokens become controls. Your components become things you can click on, comment on and draw over.

Something your code draws
An SVG, a composed page, a bounded Three.js scene. The rig travels with the document, so the controls are the ones this drawing needs.

The controls themselves
Sixty-six controls in eleven families, an animation timeline, seven ways for a number to get its value, snapshots and a reference to compare against.
What the agent reads.
One immutable file in your repository. It lists every value that differs from your source, the bindings each one writes, and every comment you attached to an element, with the page, the viewport and the capture it was made on.
Then the agent answers in a file of its own, naming the revision it produced, so a batch is never applied twice or applied to code that has moved.
{
"sourceRevision": "study-1",
"changes": [
{ "paramId": "accent",
"before": "#bc593d", "after": "#336b72",
"bindings": [
{ "kind": "css-variable", "property": "--accent", "scope": "global" }
] }
],
"tickets": [
{ "number": 1, "target": "story-card", "instance": "coast",
"message": "Too much air under the title.",
"captures": ["c-9a1e.png"] }
]
}{
"batchId": "b-4f21",
"sourceRevision": "study-1",
"resultRevision": "study-2",
"summary": "Applied the accent and tightened the card.",
"tickets": [
{ "id": "t-1", "status": "implemented",
"message": "Card padding is now 20px. Check it at 390px." }
]
}What it does not do.
It runs on your machine.
The workbench is a Docker Compose project on localhost. There is no account, no telemetry, and no project leaves the computer it is on.
Silent unless a workbench is framing the page.
Opened normally, connectWeb installs nothing: no listener, no observer, no overlay, nothing in the console. It never throws either, so a bad manifest cannot take your app off the screen.
It writes inside .paramrig/, and nowhere else.
ParamRig does not start your application, install anything into it, or edit your source. Your agent does that, from a file you approved, and you read the diff.
MIT, and installed from npm.
The workbench and the SDK are open source. @paramrig/web is published from the repository by a tagged release, with provenance.
Put the knobs on your own project.
One dev dependency, one manifest, and the page you are already running.