Build Journal
GIGI Voice Agent Reliability & AudioWorklet Fixes — August 28, 2026
Today, I improved GIGI Voice reliability by self-hosting the AudioWorklet and ensuring build-time safety to prevent daily deploy breakage. Here's how.
Today, I set out to enhance the reliability of the GIGI Voice agent by addressing two critical issues that had been plaguing my development process. The first was ensuring that all external calls made during the build process were safe, which has been a significant pain point as it often led to daily deploy failures. The second was to self-host the rawAudioProcessor AudioWorklet, the last piece of the puzzle that was breaking the voice functionality. After a focused hour of work, I successfully shipped both improvements.
The first issue was a systemic one: the static build was making live calls to various third-party APIs while prerendering around 9,000 local leaf pages and sitemaps. This included calls to Overpass, Census, Wikipedia, and others. If any of these upstream services were slow or down, it would break the entire deploy process. I realized that to avoid this daily disruption, I needed to make all these external calls build-safe. This meant refactoring how I handle these calls to ensure they don’t interfere with the build process. After implementing this change, I felt a sense of relief knowing that the site would be more stable moving forward.
The second issue was more technical and specific to the GIGI Voice functionality itself. The capture worklet had been the final stumbling block preventing the voice agent from functioning correctly. After fixing the Content Security Policy (CSP) token issue, the session was able to start over WebSocket, but audio capture was failing. The SDK was attempting to load the rawAudioProcessor from an inline blob, which my strict script-src policy was blocking. This led to the