articles

Notes from running AI agents in production

Blocks and rate limits, IP reputation, sessions, retries, sandboxing, traces, cost per task, and agents that drive real Android phones. Written for the people who get paged when an agent stops working.

Why a LangGraph agent's memory grows under default async durability mode

How async durability can pile up pending checkpoint writes in a LangGraph agent, what that costs in memory, and what exit and sync modes trade away.

Why a browser agent's CDP connection keeps dying mid-task

Why a browser agent's CDP websocket drops mid-task: idle proxies, crashes, sleeping hosts, stale target ids, and what a self-healing reconnect looks like.

Why a browser agent re-discovers the same UI elements on every single run

Why browser agents start from zero on every run, re-finding the same buttons and fields, and what recording stable selectors would change for repeat tasks.

What silently doubled a browser agent's token bill after an upgrade

How a routine browser agent upgrade can double token spend through changes in context construction, plus a diff and replay audit you can run yourself.

What a TLS fingerprint is and why your agent already has one

A TLS fingerprint is the pattern your client shows in its first handshake message. Here is what it contains, how JA3 and JA4 work, and why agents have one.

Sticky sessions vs rotating IPs for AI agent workloads

Sticky sessions or rotating IPs for AI agents? Compared on session stability, logged-in workflows, rate limits and cost, with a verdict for each use case.

Session lifecycles for long-running agents: cookies, tokens, expiry

How long-running agents keep cookies, access tokens and refresh tokens alive: expiry rules, rotation, storage, and the failure modes I hit operating them.

Running a fleet of phone-use agents: device health at scale

How to keep a fleet of phone-use agents healthy: thermals, battery, adb state, watchdog loops and quarantine rules, from an operator who runs real Android devices.

Idempotency for AI agents: why the second click is the risky one

Idempotency means doing something twice has the same effect as doing it once. Here is why that matters when an AI agent retries, resumes or double-clicks.

Fix relation checkpoints does not exist in LangGraph Postgres setup

Your first LangGraph Postgres checkpointer run fails with relation checkpoints does not exist. Here is the missing setup() call and the one-time fix.

Cost engineering for computer-use agents: screenshots and steps

How to cut screenshot tokens and step counts in computer-use agents, with caching math, loop budgets, and failure modes from running them in production.

Carrier-grade NAT explained: why many phones share one IP

Carrier-grade NAT lets many phones share one public IP. Here is how CGNAT works, why mobile IPs behave differently, and what it means for browser agents.

The best tools for tracing and debugging AI agents in 2026

A shortlist of seven agent observability tools for tracing production agents step by step and tracking cost, with pricing, trade-offs and who each fits.

Attaching to an existing Chrome session vs a fresh browser for your agent

Attaching to a running Chrome with connectOverCDP vs launching a clean browser: session reuse, isolation and blast radius when your agent fails

Why a Playwright upgrade can silently break your agent's CORS requests

How a Playwright upgrade can change the Origin header and CORS behaviour your browser agent depends on, and how to catch the regression before it ships.

Why a LangGraph run can vanish silently before its first checkpoint

A LangGraph run killed before its first checkpoint leaves no thread, state or error. here is why the gap exists and how to catch it with a run ledger.

Why a local browser agent times out 30 seconds into startup on a host

a browser agent that launches fine on your laptop can hit playwright's 30 second launch timeout on a PaaS. here is the cold start and idle budget behind it.

Which LLMs actually hold up running a browser-use agent in production

An operator's shortlist of six LLMs for browser-use agents, ranked by open integration bugs and production fit, not capability claims. Checked October 2026.

What is Web Bot Auth, and should your AI agent sign requests?

Web Bot Auth lets an AI agent sign its HTTP requests so sites can verify who sent them. Here is how it works and whether your agent should use it.

Best ways to orchestrate many Playwright sessions for an agent fleet

An operator's ranking of six ways to run many Playwright browser sessions for an agent fleet: own pool, sharding, Selenium Grid, containers and more.

SOCKS5 vs HTTP proxies for a Playwright agent that needs authentication

Playwright can't send credentials to an authenticated SOCKS5 proxy in Chromium, but HTTP proxies just work. Here is how I choose, plus the bridge fix.

Self-hosted LangGraph checkpointing vs LangGraph Cloud for long tool calls

Self-hosted LangGraph checkpointing vs LangGraph Cloud for tool calls that run past a few minutes, and what issue 7417 means for your retries.

Residential vs mobile proxies for legitimate browser agents

Residential vs mobile proxies for AI browser agents, judged on IP reputation, session stability, geo coverage and cost, with a verdict per use case.

Prompt injection for browser agents: how web pages hijack them

Prompt injection lets a web page give orders to your browser agent. Here is what it is, how the attack works, why it matters, and what reduces the risk.

Playwright vs Puppeteer for AI browser agents

Playwright vs Puppeteer for AI browser agents: an operator comparison on reliability, session handling, tracing and cost, with a verdict per use case.

Play Integrity explained for teams running phone-use agents

A plain guide to Google's Play Integrity API: what the verdicts mean, how tokens are checked, and what it changes for AI agents driving Android phones.

LangGraph durability sync vs async: what actually survives a crash

sync vs async durability in LangGraph: what each mode guarantees after a crash, which steps replay on resume, and which one I would run in production.

How to stop a LangGraph agent from looping until it hits recursion limit

Raising LangGraph's recursion_limit just delays the crash. Here's how to find the broken state update causing the loop and add a real stop condition.

How to set up ADB and screen capture for a phone-use agent

Set up ADB, USB debugging and reliable screenshot capture so an AI agent can see and tap an Android phone, with error handling for real production runs.

How to sandbox a computer-use agent in a container

A step-by-step way to run a computer-use agent inside a locked-down Docker container, with an egress allowlist, dropped capabilities and a kill switch.

How to route a Playwright agent through a mobile proxy

Step by step: point Playwright at a mobile proxy, verify the egress IP, use per-context proxies, trim bandwidth and add retries that fail cleanly.

How to persist browser sessions and cookies for AI agents

Save, reload and refresh logged-in browser sessions for AI agents with Playwright storage state, persistent profiles, encrypted storage and expiry checks.

How to make injected storage_state cookies stick in a browser agent

Why Playwright and browser-use silently drop injected storage_state cookies, and the context-creation order and domain-scoping fixes that make sessions stick.

How to fix Playwright's page.goto timing out with no load event ever firing

Playwright page.goto times out because the load event never fires. Find the hanging request, pick a waitUntil, and break redirect loops in agent runs.

How to fix playwright install SSL certificate errors behind a proxy

Playwright install fails with self signed certificate in certificate chain behind a proxy? Trust your corporate CA via NODE_EXTRA_CA_CERTS. Docker and CI too.

How to fix Failed to launch chromium in a Docker agent image

Playwright fails at container start, not build, because the Docker image has no chromium binary. Here is the Dockerfile fix, a build-time check and pitfalls.

How to fix ERR_TUNNEL_CONNECTION_FAILED in a cloud browser proxy setup

Cloud browser connects fine but every page shows ERR_TUNNEL_CONNECTION_FAILED? Here is how to split proxy tunnel failures from browser-side ones.

How to fix Chrome 136+ blocking CDP on your default profile

Chrome 136 blocks remote debugging on your default profile. Here's the supported workaround: a separate profile copy, CDP reattached, step by step.

How to fix LangGraph's Postgres checkpointer SSL errors under load

A step-by-step fix for LangGraph's Postgres checkpointer throwing SSL bad length errors under concurrent load, covering pool sizing, keepalives, and PgBouncer.

How to add human approval checkpoints to an AI agent

A practical guide to adding human approval checkpoints to an AI agent in production: what to gate, how to build the pause/resume flow, and where it breaks.

How an IP address earns and loses reputation with anti-bot systems

A practitioner's field guide to how IP reputation is built, shared, and lost across anti-bot systems, and what that means for anyone running agents.

Does Playwright run on Ubuntu 26.04 LTS yet

Ubuntu 26.04 LTS is out, and Playwright's official support list hasn't caught up. Here's what to check before you move your browser agent fleet.

Chrome for Testing vs open-source Chromium for a Playwright agent fleet

Chrome for Testing vs open-source Chromium for Playwright agent fleets: memory footprint, concurrency limits, and which build to run at scale.

Android emulator vs real Android phone for phone-use AI agents

Comparing Android emulators and real Android phones for phone-use AI agents, scored on reliability, device integrity, maintenance, and total cost of ownership.

browser agents production checklist

Browser agent production checklist: from demo to real traffic

A checklist for taking a browser agent from demo to production: sessions, retries, idempotency, timeouts, sandboxing, secrets, logging, cost caps and human sign-off.

observability cost tracing

Observing AI agents: traces, replays and cost per task

How to see what your AI agents actually did: structured traces, step logs, screenshots and replays, cost per task, and alerts that catch a loop before the bill does.

phone-use agents android real devices

Phone-use agents on real Android: how they work and where they break

How AI agents operate Android phones through ADB, UI trees and screenshots, why emulators and real devices behave differently, and the reliability problems to plan for.

browser agents anti-bot ip reputation

Why AI browser agents get blocked, and what actually helps

The signals that get AI browser agents challenged or blocked: IP reputation, TLS fingerprints, headless tells, timing and rate. What legitimately helps, and what doesn't.