Install
You need Node.js 22 or later, and ffmpeg and ffprobe on your PATH. The first render downloads its own copy of Chromium.
# in your silk reel checkout
$npm installRender a film
Give it one board file. Every flag is optional.
$npm run reel -- board.kicad_pcbA glyph film is an 11.2-second loop and renders in about ten seconds. A trace film runs 12 seconds and takes one to two minutes; --draft takes a fraction of that.
Flags
| Flag | What it does | Values | Default |
|---|---|---|---|
| Look | |||
--style | trace films the lit board. glyph sets its footprints as type in a loop. |
| trace |
--palette | The colours of the ground, ink and light. |
| copper for trace, mono for glyph |
--accent | One highlight colour: the growing copper tips on trace, the main chip on glyph. |
| The palette’s own |
| Frame | |||
--aspect | Composed for each frame, not cropped: 4:5 and 1:1 for feeds, 9:16 for Reels and Shorts, 16:9 for YouTube and launch pages. |
| 4:5 |
| Title card | |||
--title | Adds a title card at the end of the film. |
| No card |
--version | Adds a version line under the title. Needs --title. |
| None |
| Output | |||
-o | Where the film is saved. |
| Next to the board, as board-trace-4x5.mp4 |
--format | The file type. |
| mp4 |
--no-audio | Leaves out the score that trace films carry. | Off | |
--draft | Renders faster at lower quality, to check a look before the final render. | Off | |
| Variation | |||
--seed | Picks the variation. The same seed gives the same film. |
| 42 |
--tempo | Sets the pace. Higher is faster and shortens the film. |
| 1 |
A number outside its range is clamped to the nearest end.
Formats
| Format | Codec | Use |
|---|---|---|
mp4 | H.264, AAC sound | Posts, READMEs, launch pages |
gif | Up to 720 px wide, no grain, no sound | Issues, forums, chat |
webm-alphaTransparent background | VP9, Opus sound | Overlays on a web page or a stream |
prores-alphaTransparent background | ProRes 4444, PCM sound | Premiere, Resolve, Final Cut |
Self-hosting
The render API queues renders over HTTP and runs one at a time. The studio sends its full-quality renders here, and your own tools can too.
# serves on port 3102
$npm run start --workspace=@silk-reel/render-apiGET/health | Answers when the service is up. |
|---|---|
GET/demos | Lists the bundled demo boards. |
POST/render | Queues a render. Send demoId or boardJson, and optionally filmConfig and format. Returns 202 and a jobId. |
GET/job/:id | Returns the job’s status and progress. |
POST/job/:id/cancel | Cancels a queued or running job. |
GET/download/:id | Downloads the finished file. |
GET/queue | Lists every job, oldest first. |
| Variable | What it does | Default |
|---|---|---|
SILK_REEL_GL | The Chromium GL backend. angle uses the GPU. Use swangle on a server with no GPU. | angle |
SILK_REEL_CONCURRENCY | How many frames render at once. Lower it if the browser runs out of GPU memory. | Half the cores |