Hit record, click around your app, and say what you want. Gloss captures your words, clicks, network, console, and screen on one timeline. Your agent takes it from there.
fig. 01: a gloss in transit
A gloss takes as long as saying it out loud.
Open your app, production or localhost, and press record in the Chrome extension. Gloss starts writing down everything the tab does and everything you say.
Click through what you want changed and say it plainly: "this dropdown is broken," "move this filter up here." Gloss pins each phrase to the element you touched, down to the React component.
Stop, and the gloss uploads. Your agent starts from a written brief of what you asked for, then pulls the exact clicks, requests, errors, and frames behind each claim.
Every stream shares one clock, so what you said joins what you did and what your app did.
| 00:29.8 | transcript | "okay, watch what happens on the growth plan" |
| 00:31.2 | interaction | click button.plan-select "Growth" <PlanSelect> |
| 00:31.9 | network | POST /api/v1/plans 500 412ms body saved |
| 00:32.1 | console | TypeError: plan.price is undefined +2 repeats |
| 00:32.4 | screenshot | 1440×900, keyframe |
| 00:38.0 | transcript | "this dropdown is broken. make it save the way the pricing page does" |
| 00:52.6 | brief | "Fix plan selection: choosing a plan 500s on POST /api/v1/plans…" |
Your words carry the intent. Word-level timestamps join "this dropdown" to the element you were touching when you said it, so the agent never guesses which one you meant.
CSS selector, visible text, ARIA role, and the React component behind every click. The agent patches the exact component instead of grepping on a hunch. Which field you typed in, never what you typed.
Page loads, SPA route changes, and tab switches anchor every event to a page, so evidence never points at the wrong screen.
The failing request with status, timing, and body up to 256KB, ready to replay against the API instead of reproducing by hand.
The stack trace that fired the moment you said "it broke," deduplicated so a render loop is one line, not a thousand.
Keyframes show the agent the state you were pointing at, pixel for pixel, instead of a reconstruction from the DOM.
A written narrative of what you asked for, with timestamp citations and pointers into everything above. Agents read it first, follow the pointers only where they need evidence, and skip the rest. Faster than a ticket, richer than a screenshot.
Eight tools over streamable HTTP, hosted. The brief cites timestamp ranges, so agents drill into thirty seconds of evidence instead of dumping whole streams into context.
Input values are never captured. Auth headers and cookies are stripped inside the browser, before anything uploads. Glosses are visible to your organization only, or just to you when you record privately.
A brief, literal annotation set beside a source text: an interlinear note that explains a difficult word, a grammatical structure, or a cultural nuance the reader would otherwise miss.
That is the job here. Your clicks and words are the source text. The gloss is the annotation layer, aligned to the same timeline, that translates them for the machine: which element, which request, which error, what you meant.
Recording follows your active tab and stops itself at fifteen minutes. Glosses are short repros, not surveillance.