yReel · capture
yMotion · compose
yBlocks · publish
connections drive screencast drive screenshot cuts.json assets footage seek + capture assemble beat table public films product films public/media Live product dev environment yreel run storyboard runner master.mp4 + cuts.json 4k60 · named cuts yreel stills manifest runner 4K stills one per screen Cut recipes trim · sync assets Shot composition hyperframes + gsap render-clean png-seq · bt709 Master cut the beat table Score bgm from the beats Product films private delivery sync-video-renders mp4 + poster /videos film stage · shots request path out of bandhover to isolate · click to pin · esc to release
Pick a box to read why it is in the stack.
Motion comes from a storyboard, stills from a manifest — both are files, so both re-shoot identically. What crosses into the studio is not just footage but cuts.json: every cut's boundary by name. Trims anchor on those names, which is why a re-record does not invalidate a single cut recipe.
Shot durations are constants in the master composition, and the music is synthesized from that same grid rather than aligned to it afterwards. A cut cadence becomes a note value, so the drop lands on its seam by construction instead of by nudging a waveform until it looks right.
One studio, two destinations. Films built from a company product's screens are delivered as files; the rest are copied into this repo and committed, because the gallery has to render on a clean clone and on a Vercel build that has never seen the studio.