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.jsonThe module is read from the JSON's "module" field, and the output defaults to out/<name>.mp4. Flags may follow the file.
| Flag | Purpose |
|---|---|
--data | The scene JSON (also accepted as a positional argument). |
--out | Output path. Defaults to out/<name>.mp4. |
--draft | Fast encode with no film grain, for iterating. |
--no-grain | Encode without grain but otherwise full quality. |
--aspect | Comma-separated ratios to render in one pass, for example 16:9,9:16,1:1. |
--fps | Override the frame rate (0 uses the scene's, else 30). |
--workers | Number of headless Chrome tabs. Defaults to min(cores - 1, 8). |
--alpha | Render a transparent VP9 .webm overlay. |
--bg <video> | Composite the scene's alpha over a background video. |
--all | Render every format via the render queue. |
--list | List 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 mp4sLooking 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 filmAssets 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 fragmentBuilding 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 stingsThe 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