Skip to main content

Building & Dependencies

Full instructions live in docs/BUILDING.md; this page summarises what the build needs and why.

Build-time dependencies

DependencyNeeded by
Rust ≥ 1.88 (edition 2024)The whole workspace.
FFmpeg dev libraries + pkg-configffmpeg-next: decode, encode, resample, rubberband.
clang / libclangffmpeg-next's bindgen.
Wayland/X11 + Vulkaneframe/wgpu: window and GPU compositor.
ALSAcpal: audio output and recording.

On Fedora, ffmpeg-devel comes from RPM Fusion (free): Fedora's own FFmpeg lacks libx264, which is needed both to decode common H.264 sources and for export and proxies. CI uses Fedora 44 with RPM Fusion, the reference environment.

Build and run

cargo build -p vv-app            # debug
cargo build -p vv-app --release  # release
cargo run -p vv-app              # editor window
cargo run -p vv-app -- mcp       # headless MCP server
cargo run -p vv-app -- --mcp     # window with MCP on

At runtime a Vulkan driver is required on Linux: without an adapter, wgpu cannot open the window. scripts/install-linux.sh installs the binary, .desktop file and icons into ~/.local (or /usr/local as root).

Build profiles

ProfileSetting and reason
devopt-level = 1, line-table debug info only: full debug info made every link slow.
dev, dependenciesopt-level = 3: third-party crates are always built optimised.
releaseThin LTO, one codegen unit.

Headless container

container/ provides a Podman image (Fedora, Xvfb, software Vulkan via lavapipe) to build, run and screenshot vv-app without a real display or GPU. The repository is mounted at runtime, not copied into the image.

ScriptUse
container/run.shOne command in a throwaway container.
container/session.shA persistent session: start the app, interact, screenshot.