Standard Compute
Unlimited compute, fixed monthly price
← Blog/Engineering

I kept hearing “just use Playwright” until I saw how OpenClaw users actually keep browser agents alive

Sarah Mitchell
Sarah MitchellMay 12, 2026 · 9 min read

A few weeks ago I fell into one of those Reddit rabbit holes that starts with a simple question and ends with you quietly rethinking your whole setup.

The question seemed simple enough: how are people actually getting browser agents to survive real websites? Not toy demos, not “fill out this form on example.com,” but real sites like X, GitHub, and drag-and-drop builders like GoHighLevel.

I expected the answer to be boring. I figured I’d see the usual pile of “use Playwright,” maybe some auth persistence tips, maybe a stealth plugin recommendation, and that would be that.

Instead, the more I read, the more obvious it became that “just use Playwright” is one of those answers that sounds confident right up until you try to keep an agent alive for more than a few days.

One user in a thread on r/openclaw said it more honestly than most docs ever do: Playwright is the least painful option right now, but session management and dynamic content are where things start breaking. If you want to do anything beyond basic click-and-fill flows, you end up writing a lot of wait-for-selector logic and praying the site doesn’t change.

That line stuck with me because it captures the real problem. Least painful is not the same thing as robust. And that gap is exactly where most browser agents fall apart.

The first thing that surprised me was how quickly browser automation stops being about automation and starts being about identity. People weren’t mostly complaining about selectors or syntax. They were complaining about lost auth state, weird CDP issues, remote profiles, cookies disappearing, and sessions that worked yesterday but suddenly looked suspicious today.

In that same r/openclaw discussion, one person described the setup that finally stopped the bleeding for them. They kept the OpenClaw gateway on a Hostinger VPS, but installed OpenClaw as a second node on their personal computer so the actual browser work could happen locally.

Their reasoning was so practical it almost sounded too obvious. Instead of fighting CDP, RDP, port forwarding, and all the usual remote-browser nonsense, they just let a dedicated agent run on the local machine with their real browser and real IP.

That’s the part I think a lot of people resist. We want the elegant architecture. We want one clean remote box, one tidy Docker container, one script we can point at anything.

But real websites keep forcing the same lesson: trust matters more than neatness. Your login cookie matters, sure, but so does your browser fingerprint, your timing, your IP reputation, and the fact that this browser already behaves like a real person because it is attached to one.

Once you accept that, the architecture changes. And honestly, it starts making a lot more sense.

What I kept seeing from OpenClaw users was a split setup. The browser execution happens where the session is real, while orchestration stays wherever it’s convenient.

That means the hard browser part runs on a local desktop, laptop, or always-on machine that already has the right logins and trust signals. Then OpenClaw handles the higher-level work afterward: summarizing what it found, routing the result, kicking off follow-up actions, and deciding what happens next.

That pattern showed up again in another r/openclaw thread about crawling social platforms. One commenter said they stopped fighting Playwright for an X daily-digest workflow and split the system in two: a real logged-in browser for reading, and OpenClaw for summarizing and routing after the page was already open.

That feels like the first actually honest answer I’ve seen to the browser-agent problem. Not because Playwright is bad. Playwright is great at repeatable flows.

But trust-heavy sites like X and GoHighLevel are not just browser-control problems. They are trust problems, and people keep trying to solve them with more browser-control tricks.

That’s also why OpenClaw’s own browser docs are more revealing than they first appear. If you read them closely, OpenClaw clearly distinguishes between an isolated managed browser profile called "openclaw" and a setup that attaches to your system browser through an extension relay.

That distinction matters a lot. OpenClaw is basically telling you, without making a big speech about it, that not all browser contexts are interchangeable.

There is a difference between a clean automation profile and your actual daily browser identity. If you’ve ever watched an agent work perfectly in a managed environment and then get blocked on the real site, you already know how big that difference is.

The docs also make it clear that OpenClaw was built by people who know this stuff gets messy fast. It exposes multi-profile options, remote CDP support, and specific timeout defaults for remote attachment and browser control.

Those are not the details of a fantasy “just click run” workflow. Those are the details of a tool built by people who have seen sessions break in real life.

And OpenClaw’s browser actions are not toy actions either. It supports click, type, drag, select, screenshots, snapshots, and PDFs, which is exactly why people are trying to use it on things like GoHighLevel builders in the first place.

Still, the key distinction remains: an OpenClaw-managed profile is useful when you want a dedicated automation environment, but that is not the same thing as driving the exact browser session you already use every day. If a site cares about trust signals, that gap matters.

Now, to be fair, Playwright auth persistence is not fake. Sometimes it really is enough.

Playwright’s official auth model is practical and well-documented. You log in once, save the authenticated state to a file, and reuse it across runs. For internal tools, dashboards, and stable test-style workflows, that can work beautifully.

I think people get weirdly ideological here. You don’t need to pick a religion. A saved auth file is useful, but it’s still just a serialized session.

Playwright itself warns that the file can contain sensitive cookies and headers that could impersonate the user. More importantly, it’s not the same thing as using the real browser session that already has your history, extensions, trust signals, and normal behavior patterns attached to it.

That difference is small on internal dashboards and huge on touchy consumer sites. For GitHub or a boring back-office tool, storageState can be enough. For X or anything that starts throwing 403s the moment it smells automation, it often isn’t.

This is also where a lot of stealth advice starts to feel like cope. Stealth plugins can patch obvious JavaScript tells like navigator.webdriver, but modern anti-bot systems are not only looking for one flag.

BrowserStack’s guidance keeps repeating the same point: detection is about fingerprints, timing, execution patterns, network behavior, and user interaction. ScrapFly makes the same argument in a more blunt way: stealth plugins do not solve IP reputation, TLS fingerprinting, behavioral analysis, or advanced JavaScript challenges.

That’s the part people miss when they obsess over headless mode. The site is often making a much bigger judgment than “did this script hide webdriver properly?” It’s asking whether the whole browsing situation looks like a real person.

If the answer is no, your stealth patch is just makeup on a corpse.

So what actually wins? After reading the threads, the docs, and the anti-bot guidance, I think the answer is much less dramatic than people want it to be.

Real local logged-in browser session

  • Best when you need your real cookies, IP, browser fingerprint, and existing trust signals
  • Strongest option for auth-heavy or anti-bot-heavy sites like X
  • Harder to scale because it depends on a real machine staying on

Playwright with saved auth state

  • Best for repeatable, test-like workflows where the site is relatively stable
  • Useful for GitHub, internal dashboards, admin tools, and lower-friction SaaS flows
  • Still vulnerable to fingerprinting, IP reputation, and behavioral detection

OpenClaw-managed isolated browser

  • Best when you want a separate automation profile with clean boundaries and multi-profile support
  • Great for controlled browser automation using click, type, drag, select, screenshots, and PDFs
  • Not the same as driving your everyday signed-in Chrome or Arc session

If I had to be blunt, this is how I’d call it. For GitHub and boring SaaS back offices, Playwright with storageState is often enough. For X, consumer sites, and anything twitchy about automation, a real local logged-in browser session is usually the only thing that stays stable. For safer, more controlled automation where you want separation, OpenClaw’s managed browser is the right default.

The mistake is treating those like competing religions. They’re just different layers in the same stack.

The architecture I now believe in is weirdly practical. Keep orchestration remote, and put browser execution where the trust already exists.

So run the main OpenClaw gateway on a VPS if you want uptime and central coordination. Then install a second OpenClaw node on your personal machine or another always-on desktop so the browser work can happen inside a real session.

Use the visible browser when the site is touchy. Let OpenClaw take over after the page is open and readable.

That’s where OpenClaw is strongest anyway. It can summarize, classify, route, and hand work off to models like GPT-5.4, Claude Opus 4.6, or Grok 4.20 depending on what the task needs next.

And this is where the cost angle becomes impossible to ignore. Flaky browser sessions create retries, replanning, and recovery loops, which means your agent burns tokens thinking around a broken session instead of just finishing the job.

If you’re paying per token, that gets annoying fast. If you’re running always-on OpenClaw agents, it gets expensive even faster.

That’s why I think the browser reliability conversation and the compute pricing conversation are actually the same conversation. Once you stop pretending your browser is a stateless worker and start treating it like a living session with identity and trust attached to it, you also stop wanting to micromanage every token your agent spends recovering from preventable failures.

You want the agent to run. You want it to stay alive. You want it to finish the workflow.

That’s the part Standard Compute gets right for OpenClaw users. If your agents are running 24/7, flat-rate compute is just a better fit than per-token billing. You stop optimizing prompts to save pennies and start optimizing the system for reliability.

And honestly, after reading all those Reddit threads, that feels like the adult way to build browser agents. First make them survive contact with reality. Then worry about elegance. Then worry about scale.

If your agent can’t stay logged in, can’t pass basic trust checks, and keeps losing state between runs, you do not have a scaling problem. You have a fiction problem.

That was the real lesson buried inside all the “just use Playwright” advice. The winning pattern isn’t anti-Playwright. It’s anti-denial.

Browser agents that work on real websites usually stop pretending the browser is just another disposable worker. They treat it like what it actually is: a living session with memory, history, and trust attached to it.

Once you build around that, a lot of the chaos suddenly makes sense.

Ready to stop paying per token?Every plan includes a free trial. No credit card required.
Get started free

Keep reading