Skip to main content

Workspace Map

Venturi is a single Cargo workspace (edition 2024) of eight crates. Dependencies never point upwards: the data model knows nothing about media, the engines know nothing about each other, and the application core knows nothing about any UI.

The GUI and the MCP server are two parallel front ends over the same vv_session::Session. vv-app depends on vv-mcp only because it is the one binary: it hosts the MCP server inside the editor window (mcp_host) and runs it headless with vv-app mcp.

Dependency graph

workspace-map-v2.png

Crates at a glance

Layers and key external crates are shown in the diagram above.

CrateResponsibilityMain modules
vv-coreProject model, edits, undo history, RON persistence, OTIO import/exportmodel, edit, command, id_map, pool, persistence, otio
vv-mediaProbe, decode (HW accelerated), frame cache, encode, proxies, thumbnails, waveformsprobe, decode, hw, cache, encode, proxy, waveform, thumbnail
vv-renderGPU compositor, title rasterizationcompositor, text
vv-audioMixing, effect chain, time-stretch, recording, audio output (the playback clock)mixer, eq, dynamics, stretch, recorder, spectrum
vv-vadVoice activity detection for silence removallib
vv-sessionUI-free session: import, relink, analysis, silence and export jobssession, jobs, worker, export, frame_provider, silence
vv-mcpMCP server: tool calls dispatched onto a Sessionserver, dispatch, tools, host, socket
vv-appThe binary: egui UI, playback, background workers, MCP editor hostmain, timeline_ui, transport, render_ahead, mcp_host

Layering rules

RuleWhy
vv-core depends on no other workspace crate.The model, edits and undo stay testable and serialisable without FFmpeg, GPU or audio devices.
Engines depend only on vv-core (or nothing), never on each other.Each pipeline (decode, compositing, audio, VAD) can evolve and be tested in isolation.
vv-session has no UI dependency.The same core serves the egui editor and the headless MCP host (vv-app mcp).
vv-mcp never depends on vv-app.The MCP tools work on a Session only, so they run identically with or without a window.
Every project change is a Command run through the session's History, from both the UI and MCP. Multi-step edits are built in vv_core::edit.Undo, dirty tracking and persistence see every change, whoever made it.