ReadingResearchRadarInvestment framework
Sign in / Sign up
← Back to reading
NewsMaterial3 min readDisconfirmAI Editorial

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.

2026-11-10 07:57 GMT+8

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.

Sign in / Sign up
ReadingResearchRadarInvestment framework

During development, Willison initially used Claude Code Cloud on his iPhone with Opus 5.5 to generate the problem description and initial code, then cloned the repository to his laptop to continue iterating with the newly released Fable 5.2. A key design feature was that Opus 5.5 wrote an installModule() method during the initial build, allowing the server to push and execute new JavaScript code to any listening device via WebSocket. This meant Willison did not need to physically visit each device to refresh pages or re-authorize microphones; the agent could deploy modifications remotely. He added features such as drag-and-drop positioning, clap testing, timestamp annotations, audio playback, and markers for the mysterious beep through a series of specific prompts.

However, automatic inter-device ranging did not work well, forcing Willison to add a 'rough mode' where users manually dragged device icons to approximate locations, which the system then fine-tuned. This indicates that the method still relies on manual initial calibration in real-world environments. Additionally, the 40-centimeter accuracy was derived from a single specific scenario—a small room, intermittent beeping, and five devices—and is not a reproducible benchmark result. Willison also noted a similar approach presented by Martin Woodward at GitHub Universe, who gave a coding agent eyes by connecting a badge computer via USB-C and pointing a webcam at its screen to verify if updates succeeded. His conclusion is that finding ways to allow coding agents to perceive the surrounding world is a highly engaging endeavor.

Sources

  • simonwillison.netSimon Willison’s Weblog↗
Continue researching →