Skip to content

About eiviz

eiviz is developed and maintained by volunteers and individuals.
It is free to use, including for commercial purposes, under the PolyForm Shield 1.0.0 license. Source is on GitHub.

The goal is to ship working implementations of features that existing live-production tools do not offer, and to show what a software vision mixer can do in the field. It is published at no cost so that teams can try that model without a purchase barrier.

It is not meant to replace vMix, OBS Studio, or similar products.
Those tools have been hardened over many years. eiviz prefers landing new capabilities first, and was never expected to match them on production quality or reliability.

As of September 2026, eiviz is not recommended for production or live shows.
Use it in tests, labs, and anywhere a crash is acceptable.

The stack aims for performance, a native feel, and portability across operating systems.

Compositing lives in the mixer core. Each OS UI calls it through an internal C ABI. Host code lives in hosts/win32, hosts/macos, and hosts/linux.
GPU paths drop through wgpu to the native API on that platform and apply extra optimization there. ControlService inside the mixer handles the control plane. External APIs are vMix-compatible HTTP/TCP and Protobuf WebSocket. Operating another eiviz from Windows or macOS is in Remote connection.

Layer Stack
Mixer (core) Rust 1.97, wgpu 30
Windows UI .NET 10, C# 14, WPF
Windows GPU Direct3D 12, Resizable BAR
macOS UI Swift 6, SwiftUI
macOS GPU Metal
Linux (experimental) Rust, GTK 4 (gtk4-rs), Vulkan

The compositing engine is the mixer (core). It is Rust + wgpu 30, for real-time GPU work on every supported OS.
It builds as a cdylib and is called from each host (hosts/win32 and the others) over an internal C ABI.
Session files are owned by the mixer. Save writes the current .eivz (in-file history, no embedded media) when that path is already known; Save As picks a new .eivz. Export is under the Save menu and writes .eivzx (embedded Still/Video, empty history). Opening an export asks for a media folder and a working .eivz path. Load Last opens the most recent existing file. A file saved on one OS loads as the same session on another.

The Windows host lives in hosts/win32. It is .NET 10 and C# 14, with a WPF UI. Video work runs on the GPU. The host reaches through wgpu’s abstraction to Direct3D 12 for extra optimization.

CPU-to-GPU frame upload uses Resizable BAR (ReBAR), as provided by NVIDIA and others, and writes frames straight into GPU VRAM.
Machines without ReBAR lose a lot of that gain, so they are not a recommended baseline. Windows on ARM is not supported (GitHub issue #80).

Even on a Resizable BAR system, GPU upload heaps may be unavailable — for example on Windows 11 before 24H2 — so this optimization cannot be used.

The macOS host lives in hosts/macos. It is Swift 6 / SwiftUI and calls the mixer dylib through the internal C ABI. Drawing uses Metal.
On Apple Silicon, unified memory gives transfer characteristics close to ReBAR on Windows.

Discrete GPUs on Mac are not planned.

Linux (experimental): Rust / GTK 4 / Vulkan

Section titled “Linux (experimental): Rust / GTK 4 / Vulkan”

The Linux host is planned under hosts/linux as Rust and GTK 4 (gtk4-rs), with Vulkan for drawing.
The upload path is meant to use Vulkan host-visible memory, in the same spirit as ReBAR on Windows.
There are few Linux users so far, and nobody on the team operates video on Linux as their main platform, so support ranks below the other two.

A short snapshot of stacks used by other software vision mixers.

vMix appears to use .NET Framework 4.8 and SlimDX (Direct3D 9).
Relative to current .NET and DirectX, that is a legacy-heavy stack. It is Windows-only.

The core is C17 libobs. The UI is C++17 and Qt 6.
The compositor uses Direct3D 11 on Windows, OpenGL 3.3+ by default on Linux and macOS, and experimental Metal 3 on Apple Silicon Macs.
Capture and audio are abstracted per OS so the UX stays close across platforms. Because it is GPL, it also leans on FFmpeg and x264, and encoding plus media handling reuse a large existing codebase.

Latest: v0.3.0