Use the Chrome you already trust.
A fresh cloud browser is logged out of your life. So ThinkRun learned local mode: the agent can work inside your signed-in Chrome, scoped to tabs you attach, with policy checks and a kill switch.
Free forever.
This is the story of how a brittle script learned to see, remember, listen—and finally share control.
Agents could reason. Browsers could render. The missing piece was a language between them: look, act, verify, repeat. The first version was not magic. It was fourteen plain commands—and a battle test that refused to flatter us.
A fresh cloud browser is logged out of your life. So ThinkRun learned local mode: the agent can work inside your signed-in Chrome, scoped to tabs you attach, with policy checks and a kill switch.
A screen capture is evidence, but an agent needs structure. ThinkRun time-synced video, voice, actions, DOM, console, and network so a human could point—and an agent could understand exactly where.
The same share link became three things: a replayable page for people, compact Markdown for an LLM, and JSON for machines. No re-explaining. No 200k-token page dump.
It was no longer about browsing. It was about running a loop between intent and reality. The rename crossed packages, runtime paths, UI, and docs—while deliberately preserving old native-host boundaries so existing users kept working.
The hardest part was never making the browser move. It was knowing when it shouldn’t.
Every command policy-checked · every scope explicit · the human stays the editorThe development wiki does not read like a victory lap. It reads like a machine learning humility: race conditions, stale artifacts, false positives, broken packages, and the fixes that survived contact with production.
The evaluator sent { expression }. The endpoint expected { script }. Fixing that mismatch took the battle test from 80% to 100%.
The old native-host breaker could produce structurally false alarms. The replacement trips only after three consecutive timeouts; any delivered response proves the transport is alive.
3 timeoutsThe homepage install path once failed with a missing shared package. The repair did more than publish a fix—it added a guard that runs the actual public binary.
smoke the promiseThinkRun began as a way for an agent to move through a page. It became a way for people and agents to share the same evidence, the same browser, and the same loop.
memory/completed-work.md14 original browse commands; battle-test progression 40% → 80% → 100%; final 10/10, averaging 106s versus 150s with playwright-cli; PRs #139, #145, #146.memory/media_recorder_hardening.md18 roborev rounds on the MediaRecorder / screen-recording hook, recorded as a hardening case study.frontend/public/llms.txtEvery share URL has three representations; the Markdown form is documented as approximately 500 tokens.CHANGELOG.md · PRs #665–#668Outcome-aware native-host circuit breaker: three consecutive request timeouts trip it; delivered responses do not.memory/narratives/2026-06-12.mdThinkBrowse→ThinkRun rebrand narrative: @thinkrun/cli and @thinkrun/mcp published while legacy native-host and configuration continuity were preserved.memory/npm_install_outage_fix.mdThe public install outage and the resulting “run the binary” smoke-test discipline.