I've been running OpenClaw for about a week and kept hitting the same walls.
The cloud browser problem. My VPS is a small instance. Launching a real browser there — even headless — eats RAM I don't have. Headless servers have no display either. Getting Playwright working on a VPS without a desktop is a yak-shave
I've done too many times.
The login problem. I've tried a bunch of browser MCPs. The hardest part is always authentication — setting up logins on a headless cloud machine, fighting OAuth flows through a terminal, no saved sessions. It's miserable.
So I built Ariadne: a bridge that lets your cloud AI agent use your local Chrome — already logged into everything.
How it works
Three pieces:
1. Chrome Extension (MV3). Connects to the gateway over WebSocket. Agent operations run inside a dedicated " Ariadne Agent" tab group — visible on your screen, stoppable anytime. Icon color reflects state: gray (unconfigured), amber
(connecting), green (ready), red (down).
2. Gateway server (FastAPI). Runs on your VPS. Agent calls POST /v1/cmd/{browser_id}. Server holds the request as an asyncio.Future, forwards it to the extension, resolves when the extension returns. Clean synchronous interface for the
agent; async underneath. Token auth is a WebSocket handshake before any command is accepted.
3. The agent. Just HTTP calls, no SDK. Works with OpenClaw or anything else.
Why this solves the login problem
Your laptop browser is already logged in. Every cookie, every session — already there. The agent navigates to your SSO-protected internal tool and it just works, because from the browser's perspective a real user did it. No credential
management, no OAuth flows to automate.
Security model
Operations are confined to the " Ariadne Agent" tab group. Nothing outside it is reachable. Every command logs to ~/.ariadne/server.log with timing. I call this Human-in-the-Control — not "in-the-loop." The browser is on your screen.
Close the tab group if you don't like what you see.
What MV3 did to us
Service workers go to sleep whenever Chrome feels like it. We needed three keep-alive layers: chrome.alarms every 30s, WebSocket PING/PONG every 15s, and exponential backoff reconnect (1s → 60s cap). Any one alone isn't enough.
Where it is now
One week of real use. MVP shipped. Works for my daily needs: read (page as Markdown), navigate, screenshot (JPEG base64), highlight (CSS selector outline). Click/type and multi-tab not yet built — PRs welcome.
Built mostly with AI assistance — vibe coding contributions are completely welcome. Describe what you want, ship working code, we're good.
Repo: https://github.com/Rand01ph/Ariadne