vst-audio
A GUI-independent Rust library for hosting VST2 and VST3 plugins in separate processes on Windows, macOS and Linux.
Required CI executes native Windows x64, Linux x64, macOS ARM64 and macOS Intel tests, two unrelated Rust GUI consumers, and independently built open-source plugins.
The contract is one worker per plugin instance, safe application-side Rust APIs, bounded audio IPC and worker-owned native editor windows. Any Rust GUI can request an editor over the same control protocol. Native editor embedding inside an application's window is a separate, platform-specific capability. Process isolation contains crashes and hangs; it is not a security sandbox for hostile code.
See architecture, implementation and evidence and support and verification. Independent plugin measurements, extended checks and worker distribution describe the release gates. Source and license provenance is recorded in NOTICE.
The application API has a nonblocking loading task, bounded control requests, polled events and an independent supervisor. Any GUI can use this contract:
let host = new;
let task = host.spawn_async;
// In the GUI update loop:
if let Some = task.try_complete?
Instance::take_audio transfers the unique preallocated audio endpoint.
It accepts variable-length planar f32/f64 callbacks, reblocks them into a
prepared quantum, and carries bounded sample-offset MIDI/SysEx, automation and
transport data. It returns processed or explicit fallback output, reports two
quanta plus plugin latency, and swaps recovered workers at audio boundaries. The supervisor runs
even when the GUI does not poll. Drop audio resources on a control thread.
Build and test:
cargo test --workspace
python tools/check_boundary.py
python tools/native_tests.py
python tools/third_party.py
python tools/package_check.py
python tools/package_worker.py
On headless Linux, run the native and worker-distribution commands under xvfb-run -a.
The distribution guide explains executable placement,
checksums, license notices and the separate macOS signing/notarization steps.
The CLI cargo run -p vst-audio --example editor -- <worker> <plugin> opens an
editor without a GUI framework.
The independent egui and iced consumers demonstrate the same editor IPC contract. They are built and exercised separately in CI.
VST is a registered trademark of Steinberg Media Technologies GmbH. This project is independent of Steinberg and is not endorsed by it.