We Let AI Agents Rewrite a 92M-Message-a-Day Service in Go. Zero Incidents. Checkly, a monitoring platform, rewrote its Results Daemon service from Node.js to Go using Claude Code, an AI agent, and shipped it with zero incidents despite processing approximately 92 million messages daily. The rewrite reduced running pods by 70% and lowered database load, with a test harness built beforehand ensuring byte-to-byte parity with the legacy system. Our Results Daemon processes about 92 million messages a day. We recently rewrote it from Node.js to Go, and we let Claude Code write it. We wanted to know whether we could trust an agentic rewrite for a critical, high-throughput production service rather than a prototype. It shipped with zero incidents, a 70% reduction in running pods, and a lighter database load. Go's stronger type system also proved a better fit for agents than JavaScript, adding protection against regressions and letting us ship faster and with more confidence. What made it work was the test harness we built before the agent wrote a line. Here's how we designed it, and the principles you can reuse on your own legacy services. The problem the-problem Checkly is a monitoring platform that runs synthetic checks, automated scripts that emulate real users, and uptime checks that confirm a system component is operational. A runner component executes all of these and produces a result that has to be processed, stored, and alerted on. Since we introduced uptime checks, and with the company's overall growth, the volume of checks run on our platform has doubled over the last year. Some components started degrading under that load. The most notable one was Results Daemon, a Node.js component written in vanilla JavaScript. Results Daemon is a background worker. It consumes results from our runner, writes them to databases, determines the check outcome, issues alerts, and schedules retries as needed. It also publishes WebSocket updates to our CLI and UI. In total, this component processes approximately 92,000,000 messages every day , around 40,000,000 of them check results and the rest WebSocket publishes. At that scale, it was becoming a bottleneck. It paged our on-call engineers more often, and limited type safety made every change harder to land safely. So we decided to rewrite Results Daemon in Go using agentic engineering. Designing a test harness designing-a-test-harness We built the harness before we started the rewrite. If an agent is going to write the code, something other than a human reviewer has to define what correct means. We built it on these design principles: - The harness tests the component as a black box. There is zero coupling between the code or language of the system under test and the harness itself. - Every test case provides an input and expects a deterministic output, with all outputs recorded in "golden files." These are generated against the legacy system and later used by the rewrite to assert byte-to-byte parity. - Non-deterministic fields, such as UUIDs or timestamps generated during the test itself, are written as