~ Updates to the Olaf audio fingerprinting system
» By Joren on Wednesday 30 September 2026Over the last few weeks I have been improving Olaf. Olaf is an audio fingerprinting system with its core algorithm written in C. I have been focusing on ergonomics that make the C core easy to use: bindings, sensible CLI interfaces, and a REST interface. The updates:
- A clean WASM build and demo via Zig and a simple JavaScript wrapper, removing the Emscripten dependency.
- A REST API to allow remote query and store functionality.
- A REST load balancer to shard API requests over multiple REST back-ends.
- A web UI to show and listen to matches in a database.
- Minimal changes to the C core, with thread and memory safety as the goal.
- Improvements to the CLI, with quality-of-life improvements like JSON output and streamlined argument handling across the various subcommands.
- Python bindings are in decent shape again.
- A more exhaustive test suite.
- Some CI/CD improvements.
The updates were an ideal fit for the recent Astra and Opus 5.5 AI models: fingerprinting is a very testable workload, and the already established context makes tasks clear to LLMs. The tech stack also helps: Zig interfacing with a C core have often clear errors during compilation. The risk of things going wrong is also small, since the main functionality in the core is essentially untouched.
Fig: Web-based spectrogram demo via the WASM version of OLAF. Click the image above to try it out.
Check out the OLAF repository on GitHub to explore the code, try the new CLI, REST API, and Python bindings, or run the WASM demo here. Feedback, bug reports, and pull requests are very welcome.