Django Co-creator Simon Willison Uses Claude Code to Locate a Mysterious Beep with Multi-device Microphones, Achieving ~40cm Accuracy
Simon Willison used Claude Code to build a browser-based multi-device acoustic triangulation system, locating an old carbon monoxide detector in a storage room that urgently needed new batteries. He argues the most interesting aspect of the project is not the acoustic localization itself—the principles were already described in a 2007 paper titled BeepBeep—but rather the demonstration that a coding agent can hot-deploy code via WebSocket and remotely control microphones across multiple devices to gain perception of the physical world.
Something in the storage room was intermittently beeping. The intervals between the beeps were long enough that standing in the room made it difficult for Simon Willison to pinpoint the source, and he did not want to dig through every cardboard box. So he instructed Claude Code to build a system: using all available devices—two iPads, a smartphone, a MacBook Pro, and a Surface Ultra—to listen simultaneously and triangulate the source of the beep. The system ultimately narrowed the location down to within approximately 40 centimeters; upon moving those boxes, he found an old carbon monoxide detector that desperately needed its batteries replaced.
Willison considers the most interesting part of this project to be not the localization accuracy, but what it proves: you can give a coding agent ears. Claude does not have native audio input, but it can run JavaScript and Python code to analyze audio captured by a microphone. Willison had Claude start a Python server, connect to multiple devices via WebSocket, call the browser WebAudio API on each device to request microphone permissions, and then hot-deploy new audio processing code. This allowed him to essentially step away and let Claude query audio logs, adjust detection algorithms, and reconfigure its 'ears' independently.
The technical mechanism is based on the 2007 BeepBeep paper. Each listening device maintains a 60-second audio buffer and runs a detection script that uses Fast Fourier Transform (FFT) and a high-pass filter to identify beeps. When a device reports a suspected beep, the server selects the device with the lowest round-trip latency to play a short chirp sound, then requests that all devices upload audio clips spanning from approximately 0.6 seconds before the beep to 0.8 seconds after the chirp. This chirp acts as a timestamp, allowing the clips from different devices to be precisely aligned so that time-difference-of-arrival calculations can be performed for triangulation.