A author had intermittent beeps coming from a box-filled spare room after a move. Instead of searching through every box, they built a software system called Beep Locator to triangulate the source using multiple microphones. The system ultimately led them to an old carbon monoxide detector that was beeping because its batteries needed replacement.
How Beep Locator works
Beep Locator is a Python web application server that coordinates multiple listener devices in the room. Devices connect to the server via a QR code or URL and open a browser UI; in the author’s test setup they used two iPads, a phone, a MacBook Pro and a Surface Ultra. Each listener requests microphone access via the browser, maintains a rolling 60-second audio buffer, and runs a simple beep-detection algorithm (Fast Fourier Transform plus a high-pass filter).
When a beep is reported, the server picks the device with the lowest round-trip time to play a short chirp. Then every listener uploads a clip from roughly 0.6 seconds before the beep to 0.8 seconds after the chirp. The chirp enables time alignment of the clips, which is crucial for triangulation. Located beeps appear on a map (as an X) and in a “Sounds located” log; each entry can be replayed in sequence from the different listeners so the user can confirm which recording is the mysterious beep.
After confirming the mystery beep (via a “This is the mystery beep” button), the system monitors for that frequency and interval and uses triangulated data to compute the most likely location. In practice the system localized the beep to within about 40 cm, allowing the author to search a specific pile of boxes and recover the faulty carbon monoxide detector.
Background research and method
When starting the project, the author used Claude Code to find and read the 2007 paper BeepBeep: A High-Accuracy Acoustic-Based System for Ranging and Localization Using COTS Devices by Chunyi Peng, Guobin Shen, Yongguang Zhang, Yanlin Li and Kun Tan. The BeepBeep paper describes a pure software solution using commodity microphones and speakers that achieves high accuracy with techniques like two-way sensing, self-recording and sample counting. That approach served as the conceptual basis for Beep Locator.
How it was developed
Development began in Claude Code Cloud on an iPhone with Opus 5.5 running in Extra thinking effort mode. The author created a problem.md and iteratively guided Claude Code to implement features. The listener clients connect to the Python server via WebSockets and support a hot-swap installModule() mechanism so the server can push new JavaScript modules to clients at runtime. This was useful because some browsers re-request microphone permission on reload; pushing updates over the WebSocket avoided manual reauthorizations.
Feature requests added during development included a “Rough mode” for manually dragging listener icons to approximate positions, a “clapping mode” to test localization (taps are shown with a different symbol), timestamped symbols (HH:MM:SS), and replay buttons that play each listener’s recorded clip in sequence while temporarily disabling live recording. The system also gained a workflow for repositioning listeners without restarting them and a suggestion mechanism that proposes useful locations for adding another listener based on collected data.
Notable aspects
The author highlights that the project demonstrates it’s possible to give Claude Code perceptual capability: while the language model itself lacks native audio input, it can run JavaScript and Python that analyze microphone audio captured in clients. The server-and-clients arrangement let the coding agent iterate on the problem, query audio logs and reconfigure its “ears” autonomously.
The project shows that acoustic localization using off-the-shelf devices is practical: inspired by the BeepBeep research and enabled via WebAudio and WebSockets, the implemented system found the source of a household beep with roughly 40 cm accuracy and avoided a laborious manual search.



