silk reel
Open studio

Render a film from the command line.

Install it, point it at a .kicad_pcb, and choose the look with flags. The same board and flags always render the same film.

Install

You need Node.js 22 or later, and ffmpeg and ffprobe on your PATH. The first render downloads its own copy of Chromium.

~/silk-reel

# in your silk reel checkout
$npm install

Render a film

Give it one board file. Every flag is optional.

~/silk-reel

$npm run reel -- board.kicad_pcb

A 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

FlagWhat it doesValuesDefault
Look
--styletrace films the lit board. glyph sets its footprints as type in a loop.
  • trace
  • glyph
trace
--paletteThe colours of the ground, ink and light.
  • copper
  • mono
  • blueprint
  • phosphor
copper for trace, mono for glyph
--accentOne highlight colour: the growing copper tips on trace, the main chip on glyph.
  • #rrggbb
The palette’s own
Frame
--aspectComposed 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:51080 × 1350
  • 1:11080 × 1080
  • 9:161080 × 1920
  • 16:91920 × 1080
4:5
Title card
--titleAdds a title card at the end of the film.
  • "Name"
No card
--versionAdds a version line under the title. Needs --title.
  • "v1.0"
None
Output
-oWhere the film is saved.
  • A file path
Next to the board, as board-trace-4x5.mp4
--formatThe file type.
  • mp4
  • gif
  • webm-alpha
  • prores-alpha
mp4
--no-audioLeaves out the score that trace films carry.Off
--draftRenders faster at lower quality, to check a look before the final render.Off
Variation
--seedPicks the variation. The same seed gives the same film.
  • A number
42
--tempoSets the pace. Higher is faster and shortens the film.
  • 0.75 to 1.5
1

A number outside its range is clamped to the nearest end.

Formats

FormatCodecUse
mp4H.264, AAC soundPosts, READMEs, launch pages
gifUp to 720 px wide, no grain, no soundIssues, forums, chat
webm-alphaTransparent backgroundVP9, Opus soundOverlays on a web page or a stream
prores-alphaTransparent backgroundProRes 4444, PCM soundPremiere, 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.

~/silk-reel

# serves on port 3102
$npm run start --workspace=@silk-reel/render-api
GET/healthAnswers when the service is up.
GET/demosLists the bundled demo boards.
POST/renderQueues a render. Send demoId or boardJson, and optionally filmConfig and format. Returns 202 and a jobId.
GET/job/:idReturns the job’s status and progress.
POST/job/:id/cancelCancels a queued or running job.
GET/download/:idDownloads the finished file.
GET/queueLists every job, oldest first.
VariableWhat it doesDefault
SILK_REEL_GLThe Chromium GL backend. angle uses the GPU. Use swangle on a server with no GPU.angle
SILK_REEL_CONCURRENCYHow many frames render at once. Lower it if the browser runs out of GPU memory.Half the cores