Documentation Index
Fetch the complete documentation index at: https://docs.useraven.ai/llms.txt
Use this file to discover all available pages before exploring further.
Tested on macOS 12 (Monterey) through macOS 15 (Sequoia), Intel and Apple Silicon.
Install Xcode Command Line Tools
Install Node.js 22
Install via nvm (recommended). Skip the Close and reopen your terminal, then:Verify:
curl line if you already have nvm.Install GStreamer
If pkg-config can't find gstreamer
If pkg-config can't find gstreamer
Homebrew’s
pkg-config path isn’t set. Add the correct line to your ~/.zshrc and restart your terminal:Clone the repo and install dependencies
npm install takes a few minutes. It automatically rebuilds better-sqlite3 for Electron via the postinstall script - you’ll see @electron/rebuild output near the end.Verify:Build the GStreamer echo-cancellation addon
- Installs the addon’s build tools (
cmake-js,node-addon-api) - Verifies all GStreamer libraries and builds the WebRTC DSP plugin from source (Homebrew doesn’t ship it)
- Compiles the C++ echo-cancellation native module
Troubleshooting
Troubleshooting
build-deps.shfails with “gstreamer-1.0 not found”: Revisit Step 3 and make surepkg-config --modversion gstreamer-1.0works.cmake-js compilefails with “cmake not found”: cmake is bundled with cmake-js. Runnpx cmake-js --version- if that fails, deletenode_modulesinsidesrc/native/aec/and re-runnpm install.
Build the Swift audio capture binary
If swift build fails
If swift build fails
Your Swift toolchain may be too old (5.9+ required). Check with
swift --version. Update Xcode Command Line Tools:Required Permissions
macOS requires explicit user consent for audio capture. On first recording, the app will request these:| Permission | Why it’s needed | How to grant |
|---|---|---|
| Microphone | Capture your voice | System Settings > Privacy & Security > Microphone |
| Screen Recording | Capture system audio | System Settings > Privacy & Security > Screen Recording |
During development, you may need to grant these permissions to your terminal emulator (e.g., iTerm, Terminal.app) rather than the Electron app directly. In production builds, the signed
.app is the target.Troubleshooting
| Symptom | Fix |
|---|---|
build-deps.sh: “gstreamer-1.0 not found” | Revisit Step 3 - check pkg-config --modversion gstreamer-1.0 |
cmake-js compile fails with “cmake not found” | Run npx cmake-js --version - if it fails, delete node_modules inside src/native/aec/ and re-run npm install |
swift build fails with unresolved imports | Swift toolchain too old (5.9+ required) |
npm install fails with node-gyp errors | xcode-select --install - ensure CLI tools are installed |
NODE_MODULE_VERSION mismatch at runtime | npx @electron/rebuild -f -w better-sqlite3 from the project root |
| No audio captured despite permissions granted | Restart the app - macOS sometimes requires a restart after granting Screen Recording |
| App starts, no audio | System Settings > Privacy & Security: grant Microphone and Screen Recording |