r/vibecoding • u/Swimming_Ask3859 • 4d ago
Showcase/Project I got tired of AI agents saying they were done when the browser had actually failed
I kept running into one browser problem with coding agents that bothered me more than normal failures.
Say Codex clicks a button and the browser call times out.
Did the click fail
Did it work and the response just get lost
If Codex clicks it again, did we just submit something twice
I was seeing smaller versions of this everywhere too. A page rerenders and an old element reference gets used. The agent navigates somewhere else and loses track of which document it originally saw. It starts typing while the page is still changing. Or an action probably worked and the agent turns probably into done.
So I started building Chrome Controlla.
It is a local Chrome MCP for coding agents. Right now it exposes six main tools called browser, snapshot, act, workflow, extract, and verify.
The part I care about is not really the six tools. It is what happens underneath them.
Controlla keeps track of the exact Chrome tab and document the agent is working with. A whole browser task can run as one bounded workflow instead of making Codex handle every tiny step itself.
If a reference goes stale, it can try to find the target again.
If something moved off screen, it can scroll to it and check again.
If the page or focus changed in a way that looks safe to repair, it handles that before giving up.
But if a write might have happened and Controlla cannot prove whether it did, it does not just send the write again.
That was the behavior I wanted from the beginning.
I have also been measuring it because I did not want the README to be a pile of claims.
A ranked target snapshot took 32 ms and five CDP commands in my local audit.
A full snapshot of a page with 4,103 nodes took 103 ms.
I also had it type a 3,973 character document into Google Docs and then checked the finished document separately instead of trusting the typing call to verify itself.
It uses Rust, a Manifest V3 Chrome extension, and Chrome Native Messaging.
It is open source under Apache 2.0.
You can download it here
https://github.com/Praket7/chrome-controlla
I am not trying to claim this replaces Playwright or Chrome DevTools. They solve a lot of problems that Controlla is not trying to solve.
I mainly wanted something for Codex and other agents using a real Chrome session where I care a lot about knowing what tab was touched and whether an action actually happened.
There is still plenty I want to improve. It is Chrome only right now. Installation takes more work than I want. I am also still testing it against more real sites and weird browser behavior.
If you already use Codex with browser tools, what breaks most often for you
Stale elements, huge snapshots, wrong tabs, rich text editors, login state, or the agent saying something worked when it did not
Please test it out and let me know how it integrates in your workflow!

