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

Crates at a glance
Layers and key external crates are shown in the diagram above.
| Crate | Responsibility | Main modules |
|---|---|---|
vv-core | Project model, edits, undo history, RON persistence, OTIO import/export | model, edit, command, id_map, pool, persistence, otio |
vv-media | Probe, decode (HW accelerated), frame cache, encode, proxies, thumbnails, waveforms | probe, decode, hw, cache, encode, proxy, waveform, thumbnail |
vv-render | GPU compositor, title rasterization | compositor, text |
vv-audio | Mixing, effect chain, time-stretch, recording, audio output (the playback clock) | mixer, eq, dynamics, stretch, recorder, spectrum |
vv-vad | Voice activity detection for silence removal | lib |
vv-session | UI-free session: import, relink, analysis, silence and export jobs | session, jobs, worker, export, frame_provider, silence |
vv-mcp | MCP server: tool calls dispatched onto a Session | server, dispatch, tools, host, socket |
vv-app | The binary: egui UI, playback, background workers, MCP editor host | main, timeline_ui, transport, render_ahead, mcp_host |
Layering rules
| Rule | Why |
|---|---|
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. |
No comments to display
No comments to display