ThinkRun
Development story · source audited
00 / 07
The development of ThinkRun

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.

2025.08.20 → 2026.07.09 1,571 commits 553 merged PRs
https://the-browser-is-right-there

Agent status · running

I can click.
I cannot see.
Run the story
01 / THE FIRST LOOP

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

EXECUTION LOGrunning
01NAVIGATE00:01

Open the real page. Wait for the session to exist.

02THINK00:14

The page changed. Rebuild the plan from what is actually here.

03CLICK00:31

Act against a fresh snapshot, not a memory.

04VERIFY01:46

10 / 10 battle tests passed.

02 / REALITY PUSHES BACK

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

BATTLE TEST PROGRESSION
40% → 40% → 80% → 100%
4/10
first honest run
10/10
same test · fixes applied
03 / THE PIVOT

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

04 / THE COST OF A RED DOT

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

ROUND 04RACE
Auto-stop can collide with stop().

Use a synchronous finalizing ref before every recorder stop.

ROUND 11PRIVACY
Late audio can join the wrong run.

Adopt microphone streams only while the session epoch is current.

ROUND 18DATA LOSS
A callback cannot be the only copy.

Expose the finalized file in state so auto-stop cannot silently lose it.

18real review rounds
05 / THE NAME CATCHES UP

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

DECISION RECORD · 2026.06.12
ThinkBrowse
ThinkRun
KEEPextension ID
KEEPnative host ID
KEEPrelease continuity
06 / THE PRODUCT TESTS ITS STORY

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

CLEAN-ROOM INSTALLverified

$ 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

Snapshot · verified 2026.07.09–10

The development exhaust became evidence.

1,571

commits through July 9

Historical git snapshot, reconciled July 9.
553

merged PRs found

Generated memory wiki PR merge log.
161

memory pages indexed

Local operational memory index, July 10.
2,161

agent sessions traced

Provider-recorded dev-usage ledger; known coverage gaps disclosed.

The product now

Not another browser tool. A shared field of view.

01 · Human

Points at what feels wrong.

02 · Capture

Preserves the whole run.

03 · Agent

Watches, understands, proposes.

04 · Evidence

Returns a reviewable result.

the
loop
ThinkRun

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.

Verification note