Synthetic monitoring insights, engineering deep-dives, and product updates.
How Yorker keeps checks isolated from each other and from our own infrastructure: a single-use microVM for every browser run, per-customer containers for HTTP and MCP checks, and outbound-only agents for private locations.
The web spent a decade learning that code loaded from someone else's server can change underneath you. AI agents are now doing the same thing with MCP tools, and most teams haven't applied any of the lessons yet.
Synthetic monitoring's four eras got it to OTel-native, portable telemetry. What's happening now is different: who writes the check, who writes the code, where testing ends, who the user is, and who reads the output are all changing at once.
More deploys are started and rolled back by automation than by people watching a dashboard. A post-deploy gate needs a structured answer within minutes, and synthetic checks running against the live deployment are the natural source for it.
Synthetic monitoring has always simulated a person with a browser. A growing share of the traffic that matters now comes from coding agents, MCP clients, and agents reading your docs, and a check built for a human doesn't prove any of that still works.
Synthetic checks, real user monitoring and session replay record what your application actually did in a real browser. Most organisations already pay to collect and store that data, and almost none of it reaches the security team. The same is true of the checks you run against your APIs and MCP servers.
Monitors usually get written weeks after an incident, in a dashboard, by someone other than the feature's author. That lag is structural, and the fix is to make the monitor part of the same pull request as the feature.
A body_contains assertion has worked on deterministic endpoints for fifteen years. It falls apart the moment a model generates the response. A layered assertion strategy holds up where the string match can't.
Playwright E2E tests and Playwright synthetic monitors are starting to look like the same artefact run in two places. What is converging, what still has to stay separate, and a practical rule for promoting a test to a monitor.
Authoring a synthetic check got cheap. Reviewing what got generated didn't. A practical walkthrough of five creation paths, what each one costs to write versus maintain, and a decision table for picking between them.
Coding agents optimise for the feature working, not for how fast it loads. The regressions they introduce don't fail a build. They make the page a bit slower, and nothing tells you until the conversion numbers do.
What happens between a check finishing and its telemetry landing in your backend: why the runner speaks OTLP without an SDK, what one run emits, how its trace joins your backend's trace, and the two paths data takes to get to you.
When the model that writes your code also writes the test for it, the test stops being an independent check. Outside-in synthetic monitoring becomes more necessary as coding agents take on more of the diff, not less.
A check that passes in 420ms and one that passes in 2.1 seconds both return success. Here's how Yorker tells them apart: baselines per location and hour of the week, a score on every run, and an alert only when the deviation holds.
Your MCP server can return a perfectly healthy 200 and still be broken for every agent that depends on it. Here's why that happens, and how to actually keep an eye on the thing.
ClickHouse powers your metrics and traces. HyperDX gives you the UI. But who's checking if your users can actually reach your app? Here's how to close the synthetic monitoring gap in your ClickStack.
Agentic RCA tools reason over the signals they are fed. Synthetic monitoring has spent twenty years optimizing its output for a human staring at a dashboard. That output is the wrong shape for a causal engine. Here is what the right shape looks like.
Synthetic monitoring has been through three eras: uptime pings, scripted transactions, and a signal inside one vendor's platform. The fourth era is here, the category mostly stood still, and that gap is why we built Yorker.