Use a synchronous finalizing ref before every recorder stop.
323 days to teach software how to see.
It began as a browser an agent could control. It became something more useful: a way for humans and agents to see the same thing.
Agent status · running
I can click.I cannot see.
A browser became an API.
First, ThinkRun learned the mechanics: navigate, snapshot, act, verify. Fourteen browser commands. Structured logs. Actionable errors. A browser loop an agent could operate without pretending the web was simple.
The first breakthrough was not autonomy. It was legibility.
· durable work: PRs #139, #145, #146
Open the real page. Wait for the session to exist.
The page changed. Rebuild the plan from what is actually here.
Act against a fresh snapshot, not a memory.
10 / 10 battle tests passed.
Forty percent was honest.
The first Browse API battle test passed four of ten tasks. Cost budgets broke. Plans failed to adapt. One field was named expression on one side and script on the other.
The system was not made impressive by hiding the misses. It was made reliable by turning each miss into a test—and running the same ten tasks again.
· Browse API battle-test record
40% → 40% → 80% → 100%
Then the browser learned to remember.
A screenshot proves a moment. A recording preserves the path: the hesitation, the wrong turn, the console error that appeared between clicks.
On June 17, in-page recording shipped live. A browser tab could capture a tab, window, or screen, mix microphone and display audio, then enter the same analysis pipeline as every other artifact.
Don't describe what happened. Hand the run to the agent.
· durable work: PRs #707–#710
Now it can watch.
VIDEO · AUDIO · TIMELINE · ACTIONS
Record is a promise.
Browser media APIs are a nest of races: a stream ends during startup, a late microphone overwrites a new session, a stop promise survives into the next recording, a valid codec still throws on construction.
The capture hook took eighteen independent review rounds to harden. Every round found a real failure mode. That number is not a trophy. It is the weight behind the red dot.
· durable work: PR #709
Adopt microphone streams only while the session epoch is current.
Expose the finalized file in state so auto-stop cannot silently lose it.
Browse was a command. Run was the idea.
On June 12, ThinkBrowse became ThinkRun. The rename looked cosmetic until the audit found the boundaries: npm scopes, environment variables, local state, share contracts, a fixed extension ID, a native messaging host, sender domains, DNS, release assets.
So the team did the least dramatic thing—and the safest: rename the inside first, freeze the runtime-coupled edges, then cut over the outside.
· cutover ledger · PR #691
The demo found the outage.
The homepage promised a one-line install. On a clean machine, that command failed every time. A workspace dependency had escaped into the published package. Two dry-run checks had passed because neither one actually ran the binary.
The fix was a new rule: pack → clean install → run. Later, preparing a homepage recording exposed a multi-day signup outage. The act of telling the product story became a production test.
The headline command is now a smoke test.
· durable work: PRs #808–#810, #832–#835
$ npx @thinkrun/mcp
ERR_MODULE_NOT_FOUND: @thinkrun/shared
pack → clean-install → RUN
MCP handshake: initialize
MCP handshake: tools/list
✓ real binary started · regression class closed
The development exhaust became evidence.
commits through July 9
Historical git snapshot, reconciled July 9.merged PRs found
Generated memory wiki PR merge log.memory pages indexed
Local operational memory index, July 10.agent sessions traced
Provider-recorded dev-usage ledger; known coverage gaps disclosed.Not another browser tool. A shared field of view.
Points at what feels wrong.
Preserves the whole run.
Watches, understands, proposes.
Returns a reviewable result.
loop
Run it.
Share what happened.
The browser is no longer a black box between a person and an agent. It is the place where both can finally point to the same truth.