Locate a beeping device by triangulating sound across phones and laptops

Simon Willison had Claude Code build Beep Locator, which turned five spare devices into listeners and pinned a hidden beep to within about 40cm: a forgotten carbon monoxide detector in a box pile.

Done withClaude CodeinGitHub· Nov 9, 2026

What they did

Something in Willison's box room beeped now and then, too rarely to find by ear. Starting from an empty GitHub repository on his phone, he asked Claude Code to write up the problem: several devices around the room listening at once, a Python web app coordinating them over WebSockets, and ideally the devices locating each other by sound. Claude found a 2007 acoustic ranging paper and wrote the plan into a problem file, then built most of the system, including a way for the server to push new code to listeners without reloading them. On his laptop, Claude Code then ran the server, watched the audio logs and changed the code live while Willison asked for features: a rough mode for dragging devices on the map, a clap test, timestamps, replay of each recording, a button to mark the mystery beep and a repositioning flow. Two iPads, a phone, a MacBook Pro and a Surface acted as listeners.

How it went

The devices placing themselves by playing sounds to each other did not work well, so manual rough placement was added and then refined by sound. Clapping around the room gave him confidence the location was right. Once the beep was marked, the system narrowed its position to within about 40cm. In that pile of boxes he found an old carbon monoxide detector with a dying battery. After the first build he mostly sat chatting with the agent while it worked.

Worth knowing

The live code push means the server can run arbitrary code on every connected device, which is what saved him from granting microphone permission again on each reload, but it is not something to leave exposed. Claude has no audio input of its own here; it hears only through the scripts it writes. The work moved between Opus 5.5 on the cloud version and Fable 5.2 on the laptop.

Try it

With Claude Code· 4 parts to fill in

I want to find the source of [a sound, e.g. an intermittent beep] in [a room]. First write a problem.md that describes the job and any research on locating sounds with ordinary devices. Then build a [Python] web app that one device opens as the map, while [phones, tablets, laptops] join a URL and become listeners using browser microphone access and WebSockets. Let me drag listeners to rough positions on the map, add a clap test so I can check accuracy, log each detected sound with a timestamp and a replay button, and let me mark which sound is the one I am hunting. Add a way to push new listener code without reloading pages. Run it, read the logs and keep improving it, but check with me before any change that needs me to move devices.

Square brackets are the parts to fill in. The prompt is ours; the story is theirs.

Where they said it

Related