Live Nov 18 · Cohort 3Nov 18, 19:00 MSK — free hands-on AI agents live workshop · Live Cohort 3 starts Nov 23Join Nov 18 Live →Cohort 3 (Nov 23)
ReleaseInsight · On RadarSimon Willison→ original

Simon Willison built a beep finder with Claude and located the source to within about 40 cm

Simon Willison asked Claude Code to find the source of an occasional beep among boxes. The agent helped build a Python server and a browser app: five devices recorded audio, while the system aligned the recordings and marked the source on a map. According to Willison, the search narrowed to an area of roughly 40 cm, where an old carbon monoxide detector was sitting. The practical lesson: give an agent access to measurements and the results of its code.

AI-processed from Simon Willison; edited by Hamidun News
Simon Willison built a beep finder with Claude and located the source to within about 40 cm
Source: Simon Willison. Collage: Hamidun News.
Listen to article
Article Fact Sheet & Key Figures
ParameterDetails
Primary sourceSimon Willison ↗
Editor-in-Chief
Key metric #1Phones and laptops connect through a link and become microphones.
Key metric #2A short reference signal helps align recordings from different devices.
Automatic calibration worked poorlypositions had to be refined manually.

An occasional beep is a frustrating household troubleshooting problem: by the time you reach the right room, the device has gone quiet. For developer Simon Willison, the sound was coming from a room full of unpacked boxes. Instead of going through everything, he asked Claude Code to build Beep Locator: an app that aligns recordings from several microphones and displays the likely source on a map.

According to Willison, the system pinpointed the location to within about 40 cm. In the relevant stack of boxes, he found an old carbon monoxide detector that needed new batteries. For developers, the interesting part is the workflow: the agent had access to measurements from the room, could check the results of its changes and continue refining the implementation based on observed data.

Five devices become a measuring instrument

Willison used two iPads, a phone, a MacBook Pro and a Surface Ultra. A Python server serves the main interface. The other devices connect through a link or QR code, grant the browser microphone access and exchange data with the server over WebSocket. No dedicated microphones were needed for this experiment.

Imagine a phone by the door, a tablet on a shelf and a laptop near the boxes. A single beep reaches their microphones at different times. If you know where the devices are and align the recordings correctly, you can estimate where the sound came from. But browsers and the network introduce delays: simply comparing when messages reach the server is not enough.

The listening devices therefore retain the last 60 seconds of audio. A local algorithm looks for potential beeps using frequency analysis and a filter. When an event notification arrives, the server instructs one device to play a short reference signal. It then collects recording segments containing both the original sound and that signal. The reference sound helps align the recordings for the subsequent calculation.

The agent based its research on BeepBeep, a 2007 paper on acoustic distance measurement using ordinary devices. However, the home experiment cannot automatically be considered a reproduction of the original paper's accuracy: the implementation and conditions are different.

Testing with handclaps mattered more than a polished map

Automatic detection of the devices' relative positions did not work well enough. Willison added a mode in which he roughly positioned the icons on the map himself, after which the system tried to refine the coordinates using acoustic measurements. This is a significant limitation: the app required human involvement in the setup.

To test localization, Willison clapped at different points in the room and compared his actual positions with the markers. This provided a clear answer to whether the system could actually locate a sound. It is a useful technique for developers: before searching for an unknown source, test the measuring tool with an event at known coordinates.

The next step was to listen to the recordings from each device. The user could confirm that the system had captured the right beep. After confirmation, the app tracked its frequency and the intervals between events, refining the estimated location. The interface also gained a suggestion for where to place an additional microphone.

The reported 40 cm applies to a single documented case. The account does not provide a series of tests in different rooms. Sound reflections, noise and errors in device coordinates remain reasons to verify the result on site.

The agent needs access to the result

An important architectural detail is the ability to send new JavaScript to the listening devices over WebSocket. This let the agent change audio processing without reloading every page. On some devices, reloading required microphone permission again, so updating the code on the fly reduced manual work.

This loop is what makes the story useful for teams using agents in development. The agent writes code, receives measurements, sees errors and changes the implementation. Similar feedback can be provided through application logs, a test setup or screenshots from a device.

The practical takeaway: when choosing a task for an agent, plan in advance how it will verify the result. Beep Locator needed an audio buffer, recording playback, test handclaps and manual confirmation of events. These tools helped turn functioning code into a system Willison could use for a real search.

Story

Key Questions Answered

What are the key details on Five devices become a measuring instrument?

Willison used two iPads, a phone, a MacBook Pro and a Surface Ultra. A Python server serves the main interface. The other devices connect through a link or QR code, grant the browser microphone access and exchange data with the server over WebSocket. No dedicated microphones were needed for this experiment. Imagine a phone by the door, a tablet on a shelf and a laptop near the boxes. A single beep reaches their microphones at different times.

What are the key details on Testing with handclaps mattered more than a polished map?

Automatic detection of the devices' relative positions did not work well enough. Willison added a mode in which he roughly positioned the icons on the map himself, after which the system tried to refine the coordinates using acoustic measurements. This is a significant limitation: the app required human involvement in the setup. To test localization, Willison clapped at different points in the room and compared his actual positions with the markers.

What are the key details on The agent needs access to the result?

An important architectural detail is the ability to send new JavaScript to the listening devices over WebSocket. This let the agent change audio processing without reloading every page. On some devices, reloading required microphone permission again, so updating the code on the fly reduced manual work. This loop is what makes the story useful for teams using agents in development. The agent writes code, receives measurements, sees errors and changes the implementation.

ZK
Zhemal Khamidun — CPO at Alpina Digital, product manager of AlpinaGPT. Building AI products since 2019. Hamidun News is a pet project that grew into a production aggregator with 6,000+ readers.
✦ Hands-On AI Engineering · Hamidun Academy

Build & Ship Production AI Agents Without Boilerplate Code

Start your free 72-hour trial at Hamidun Academy (academy.hamidun.com) — interactive lessons on Claude Code & Cursor, live Tech Radar, and production agent templates.

Start 72h Free Trial →Vibe-Coding Intensive
What do you think?
Loading comments…