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. An opt-in OS sandbox restricts
worker network access, program execution and filesystem writes; it is off by
default for plugin compatibility. Set Configuration::sandbox (or
ProcessingOptions::sandbox) to Some(SandboxPolicy::default()), and use
Host::scan_sandboxed for discovery. Unsupported restrictions fail startup
rather than silently running unsandboxed. See the support guide for platform
exceptions and remaining security limits.
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.