The Creator Floor · the five doors where characters get made

The bench and the wardrobe show you what already exists. These five doors are where new things are authored — a face, a set of corrections, an expression, a rig, a line. Every card says who the door is for, what it writes, where that output lands, and what it costs. Every number below was measured on today’s bytes.

5 authoring doors 5/5 boot 200, zero page errors 2 also customer entrances 5/5 carry an opt-in billed control 0 off-host requests, nine loads

Measured 2026-08-06 against build af6c01d: headless chromium at 1440×980, nine surfaces loaded from a read-only copy of the site on a local test server, one DOM fact asserted per page so a 200 that built nothing cannot pass. Nothing here is carried over from an earlier survey. Several numbers an earlier survey published had drifted or were miscounted; they are corrected on the cards rather than repeated. Two harness artefacts are named at the foot instead of hidden.

The Character Factory

Operator — internal; no customer surface links here
boots clean page $0 billed render stage noindex

Turns one portrait into a talking character — the module’s own description of itself. The page is the roster and the instructions; the making itself is a command-line run. Its region helper is fully in-browser — pick your image with the file chooser, drag the MOUTH and EYES boxes onto the face, and the page prints the command line with your dragged numbers already filled in. Nothing uploads: the image becomes a local blob URL and the page’s only two network reads are the character roster and its manifests.

authors
5 visemes + a blink + 3 idle-life poses — 9 renders in all, alignment-baked against the base
output
public/avatar-lab/characters/<id>/ + a row in characters/index.json
racked now
3 characters — two photo-real, one vector rig
the renders
both photo-real characters carry all 9 frames on disk, and every frame carries a content credential naming gpt-image 2.0 — so the billed stage’s output is checkable even though independent verification has not yet re-run it
cost
page and region helper $0; the render step is $0.40–0.70 one-time per character (the module’s own figure); runtime stays $0/min
the command
a template — it carries your measured --mouth and --eyes, and you supply the image path and the name
then
each finished character carries an Open in Lab link into the Avatar Lab, where it speaks against a local clip

Reachable today from four pages — the studio index’s “five 2D engines” section, and the tab row shared by the Avatar Lab, the Expression Lab and the Hybrid Overlay Lab.

Open the Factory → /avatar-lab/factory/

The Avatar QC Bench

Operator — internal quality bench; the darkest door here
boots clean one inbound door $0 voice copilot billed

Spot the line, fix it, check it at every size a customer sees. Pick a face, drive it through idle / listening / thinking / speaking, then shrink the stage to half, to a 130px console, to a 104px widget — artifacts hide at scale. Three tools sit beside it: the zone tuner, a voice copilot that takes plain speech (“mouth down a touch”) and files anything deeper for the coding agent, and a freestyle tester that fires the model’s own express_self payloads — including a deliberate bad value, to watch the reject path work.

roster
21 faces in three groups, the bench’s own labels — 7 hybrid portraits (3 shipped + 4 branded), 12 Alive cast, 2 photo-real
tuner
5 zone dials: centre X, eye line, eye spread, mouth Y, feature scale
output
a draft in this browser, then EXPORT downloads face-tuning.json — which a human must place at public/alive-site/face-tuning.json
who reads it
four readers: every hybrid face mounted through the shared widget module, the marketplace cards, the live cast, and the Face Overlay Lab
known gap
the estate already has a live, permission-gated, audited save route for exactly this file, and this bench does not use it — the export is a hand-carry. Registered as OWED-CF1. The gap is verified; the fix is not built
billed lane
the copilot’s own button reads 🎙 TALK (live voice — billed usage). Nothing spends until it is pressed

Reachable today from one page — the Avatar Lab’s own QC-bench section, whose door button arrived with the 2026-08-06 serve. The day before it was reachable from nothing at all. This card is the second door.

Open the QC bench → /alive-site/avatar-admin.html

The Expression Lab

Operator + customer — one of two floor doors a visitor already walks
boots clean page $0 live agent billed noindex

The expression workbench for the drawn faces — where a look is tried on, not just previewed. A visitor reaches it on their own: the front page and the gallery link straight into it with a sample face already loaded (?face=sample-owl-advisor and three others), which makes it a customer-facing surface as well as an operator one. Anything written on this card has to read well to both.

surface
6 canvases, 129 form controls in the DOM
authors
avatar and creature profiles over the sample faces
output
browser storage, plus two downloads — its maker modules save a profile as <name>.avatar.json or <name>.creature.json. No authoring on this page writes to the server
cost
$0 for every face it draws; its Connect live agent button is the exception — that mints a real OpenAI Realtime session through the voice sidecar and spends usage

Reachable today from seven pages, two of them customer surfaces — the front page and the gallery, plus the studio index, the test bench, and the Avatar, Hybrid and Factory tab row.

Open the Expression Lab → /avatar-lab/expression/

The Sketch Expression Studio

Operator — casting and rig work
boots clean page $0 LIVE button billed 7 modules on load

The hand-drawn lane’s workshop, linked from the test bench: fit a new base under the rig with the onion-skin view, name the cast, download the prepared PNG, and copy the exact go-word that runs the casting pipeline. It drives the Sketch-Line engine — the one whose line never sits still, because every stroke is drawn twice and the jitter seed re-rolls every 90 ms.

surface
2 canvases, 73 controls, 4 quality levels + 3 backgrounds
rigs on disk
5dean-hardhat, and four miles-* variants
authors
a prepared cast base and the casting instruction for the pipeline
output
a downloaded base-<name>-<mode>.png plus a named cast in browser storage; the rig files themselves are written by the pipeline, not here
cost
$0 for all the drawing work; the red LIVE button is the exception — its own tooltip reads paid per use, and the eighth module on disk loads only when it is pressed

Reachable today from six pages — the studio index, the test bench, the sketch engine card, the docs spine, the suite and the Avatar Lab.

Open the Sketch Studio → /avatar-lab/sketch-studio/

The 32 Face-Line Dials

Built for crew — but the front page sends visitors here, and the gate is a curtain, not a lock
boots clean client-side curtain dials $0 8 billed controls 8/8 verified moving

Eight families of drawn expression lines, four dials each — smile lines, forehead, frown, crow’s feet, tear troughs, marionette, mental crease, neck — with an amount, an X, a Y and a size on every one, under a single on/off master. They are authored per face: set them where the drawing wants them, and they live with the expression rather than sitting on top of it.

where
the Face Overlay Lab’s control column — the one page that shows them. Two other files carry the same 32 dials and hide the column by CSS; those two are byte-identical twins of each other
measured
32 of 32 dials present, master present, and all 8 families change the drawn face when driven from minimum to maximum — over 1 300 canvas pixels each, in every run of this probe, sampled off #faceCv, not off slider values
output
for a live-cast base, saved through the permission-gated, audited PUT /api/admin/face-tuning — which whitelists all 32 dials — using an admin token; for any other base, a downloaded face-tuning-export-<base>.json
reach
authored on the drawn 2D lane. The 3D live-VRM plate is painted by the same face engine and its binding accepts these knobs, but no shipped 3D surface sets them today
gate
a crew username and password covers the view — but it is deterrence, not access control. The check runs in the browser, the page’s bytes hand all 32 dials to anyone who asks, and appending ?shot removes the prompt with no credential at all (verified). Only the save route carries a real server-side permission check
cost
the dials themselves are $0 — but this is the most expensive door on the floor: 8 controls on it carry a billed label, and it is the only door that calls a paid API host directly (OpenAI, ElevenLabs and Gemini speech). All eight are opt-in, and each says so on its face

Reachable today from eight pages — more than any other door here, and one of them is the front page. But not one of those links names these dials: the studio index’s card calls the page a face overlay lab and stops there. The problem was never reach. It was naming. This card names them.

Open the dials → /alive-site/face-overlay-lab.html

How these numbers were taken

Nine surfaces were loaded headless from a read-only copy of the docroot on a private port — the five doors, plus the Avatar Lab, the studio index, the dial column’s hidden twin, and this page. Each was watched for console errors, page errors and failed requests, and checked for one thing that only exists if the page’s own code ran: a built roster, a mounted canvas, a full set of dials. The dial result is a pixel comparison of the drawn face before and after each family was driven from its minimum to its maximum, so a dial that was wired but inert would have scored nothing. No request left the machine and no billed call was made.

Two artefacts belong to the measuring harness, not to the pages, and are named here rather than quietly dropped: the docroot has no favicon.ico at its root, so a page that declares no icon leaves the browser’s automatic request to 404 (the standing fix is <link rel="icon" href="data:,">); and the harness serves files only, so /api/* routes that are real on the fastify server answer 404 there. Those two 404s are the only console errors anywhere in our test runs, and neither is a fault in the page that logs it. This page declares its own icon, so it logs neither.

Every door on this floor carries a billed control, and every one of them is opt-in behind a button that labels itself. The Factory’s render stage runs off the page on the command line at its published one-time price; the QC bench, the Expression Lab and the Sketch Studio each carry one live-voice button that says billed or paid per use on its face; the Face Overlay Lab carries eight, and is the only door here that calls a paid API host directly. The authoring itself — every dial, every tuner, every preview, this page — runs in the browser at no cost. Nothing here spends until you press something that told you it would. A passive page load spends nothing on any of the five, which is why the nine loads above sent zero off-host requests.

One name to keep straight: this page lives at /alive-site/creator-floor.html. The similarly-named /alive-site/creators.html is a different, older, public-facing marketing page, and nothing here touches it.