Vawe

CLI and make targets

The bin/vawe binary and its flags, plus the make wrappers for rendering, previewing, and shipping a video.

bin/vawe

The renderer is a single Go binary, built by make build:

./bin/vawe formats/scene/my-video.json

The module is read from the JSON's "module" field, and the output defaults to out/<name>.mp4. Flags may follow the file.

FlagPurpose
--dataThe scene JSON (also accepted as a positional argument).
--outOutput path. Defaults to out/<name>.mp4.
--draftFast encode with no film grain, for iterating.
--no-grainEncode without grain but otherwise full quality.
--aspectComma-separated ratios to render in one pass, for example 16:9,9:16,1:1.
--fpsOverride the frame rate (0 uses the scene's, else 30).
--workersNumber of headless Chrome tabs. Defaults to min(cores - 1, 8).
--alphaRender a transparent VP9 .webm overlay.
--bg <video>Composite the scene's alpha over a background video.
--allRender every format via the render queue.
--listList the module, its schema, and its sample.

Make wrappers

Most work goes through make, which wraps the binary and the tooling with shorter names. The essentials:

make build                              # fetch fonts, then build bin/vawe
make list                               # show the scene module + schema + sample
make video D=formats/scene/my.json      # render one scene
make video D=formats/scene/my.json ASPECT=16:9,9:16
make render M=scene                     # render the bundled sample
make all                                # render every format
make clean                              # remove the binary and rendered mp4s

Looking at a render

make look M=scene                       # storyboard the key frames
make frame M=scene N=42                 # one exact frame
make beats D=formats/scene/my.json      # first, mid, and last frame of every beat → /tmp/beats/<name>.png
make scrub F=out/my.mp4          # a contact sheet of the whole film

Assets and previews

make assets D=formats/scene/my.json WRITE=1   # fetch missing icons and logos
make photos Q="query" NAME=hero N=4           # fetch openly-licensed photos
make preview HTML=fragment.json THEME=brand   # render one fragment standalone → /tmp/preview.png
make capture URL=... SEL=... NAME=... LABEL=... # lift a real UI component into a fragment

Building and expanding

make expand D=formats/scene/my.json     # expand block and comp sugar into real layers
make catalog                            # render the whole block registry to sheets
make direct D=formats/scene/my.json WRITE=1  # let the motion director pick cuts and stings

The full list of targets is in the repo's Makefile, and make list prints them. Every quality check has its own wrapper too, covered in Quality gates.

The authoring loop, end to end

make assets D=formats/scene/my.json WRITE=1   # 1. fill any missing images
make beats D=formats/scene/my.json            # 2. read the beats
make slop D=formats/scene/my.json             # 3. anti-slop check
make video D=formats/scene/my.json            # 4. render
make audit                                    # 5. overlap, contrast, safe-zone
make look M=scene                             # 6. eyeball hook, reveal, and end

On this page