Install
openclaw skills install vvvv-fundamentalsExplains vvvv gamma core concepts — data types, frame-based execution model, pins, pads, links, node browser, live compilation (source project vs binary reference workflows), .vl document structure, file types (.vl/.sdsl/.cs/.csproj), ecosystem overview, and AppHost runtime detection. Use when the user asks about vvvv basics, how vvvv works, the live reload model, when to patch vs code, or needs an overview of the visual programming environment.
openclaw skills install vvvv-fundamentalsvvvv gamma is a visual programming environment for .NET 8. It combines node-based patching with C# code generation, targeting Stride (3D engine) and .NET APIs. Programs are built by connecting nodes with links in a visual editor.
vvvv is a live programming environment — programs run continuously while you build them. Both visual patch edits and C# code changes take effect immediately without restarting. vvvv compiles C# source files itself via Roslyn into in-memory assemblies on every save.
.vl files — vvvv gamma documents (XML-based, version controlled).vl filesvvvv runs your program continuously while you edit it. There is no edit-compile-run cycle for patches and shaders. For C#, live reload depends on how the code is referenced.
.sdsl shader files always live-reload when savedC# code can be integrated via source project reference or pre-compiled binary. The choice depends on project size and development phase.
Source project reference (live reload):
When a .vl document references a .csproj source project, vvvv compiles .cs files itself via Roslyn into in-memory assemblies. No dotnet build or external toolchain is involved.
Dispose() called on old instanceNodeContext)Update() resumes on the next frameBinary reference (no live reload):
When a .vl document references a pre-compiled DLL or NuGet package, the assembly is loaded once at startup. To pick up changes, you must rebuild the DLL externally (e.g., dotnet build) and restart vvvv. This workflow is common for larger projects and stable libraries where live reload is not needed.
[ProcessNode] attribute[ProcessNode] attribute needed+ works with int, float, Vector3, string, etc.Spread<T> connects to a single-value input, the node auto-iterates| Use Patching | Use C# Code |
|---|---|
| Prototyping, data flow | Custom nodes, performance-critical code |
| Visual connections, UI composition | Complex algorithms |
| Real-time parameter tweaking | .NET library interop |
| Dataflow routing and spreading | Native/unmanaged resource management |
IChannel<T> — observable value containerIChannel<T>.Value — read/write the current valueChannel.IsValid() — check if connectedFor C# channel integration patterns (IChannelHub, PublicChannelHelper, [CanBePublished]), see vvvv-channels.
| Type | C# Equivalent | Usage |
|---|---|---|
Spread<T> | ImmutableArray<T> | vvvv's immutable collection |
SpreadBuilder<T> | ImmutableArray<T>.Builder | Build spreads efficiently |
| Float32, Int32, etc. | float, int | Primitives |
Vector2/3/4 | Stride.Core.Mathematics | Spatial math |
Color4 | Stride.Core.Mathematics | RGBA color |
| Extension | Purpose |
|---|---|
.vl | vvvv gamma documents (XML-based) |
.sdsl | Stride shader files (SDSL language) |
.cs | C# source files for custom nodes |
.csproj | .NET project files |
.nuspec | NuGet package spec |
vvvv's functionality extends through NuGet packages that bundle .vl documents, C# nodes, and shaders.
| Domain | Key Packages |
|---|---|
| 3D Rendering | VL.Stride (Stride engine), VL.Fuse (GPU visual programming) |
| 2D Rendering | VL.Skia, ImGui, Avalonia, CEF/HTML |
| Hardware I/O | DMX/Art-Net, ILDA lasers, depth cameras (Azure Kinect, ZED), robotics (KUKA, Spot), Ultraleap, LiDAR |
| Networking | OSC, MIDI, MQTT, Redis, WebSocket, HTTP, TCP/UDP, ZeroMQ, Modbus, Ableton Link |
| Computer Vision | OpenCV, MediaPipe, YOLO (v8–v11), ONNX Runtime |
| Audio | NAudio, VST hosting, SuperCollider bridge |
| General .NET | Any of 100,000+ standard NuGet packages via .csproj reference |
To add a package: reference it in your .vl document's Dependencies, or add a <PackageReference> to your .csproj. See vvvv-dotnet for .csproj details.
// Detect if running as exported .exe vs editor
bool isExported = nodeContext.AppHost.IsExported;
// Register per-app singleton services
nodeContext.AppHost.Services.RegisterService(myService);
For detailed reference, see reference.md.