Render Remotion videos in the cloud. Your laptop stays cold.
Free GitHub machines render your video in parallel, every frame is checked, and the MP4 comes back to you.
Website · Setup · Video rules · FAQ

▶ Watch the launch film (56 s), rendered by coldframe on 12 GitHub machines
Rendering a Remotion video ties up your computer: fans on, everything slow, nothing else gets done. coldframe hands the render to free GitHub machines instead:
- Split: your video is cut into equal pieces.
- Render: up to 20 GitHub machines each render one piece, all at the same time.
- Stitch: the pieces are joined without re-encoding, every frame is counted, and the MP4 comes back to your computer.
The launch film above and the 20 s demo are Remotion projects in example/, rendered by coldframe on GitHub machines (12 and 8).
You need a Remotion project on your computer and Node.js 18 or newer.
1. Install the GitHub CLI, then open a new terminal:
| Windows | macOS | Linux |
|---|---|---|
winget install GitHub.cli |
brew install gh |
cli.github.com |
2. Run setup in your project folder. It walks you through everything and asks before it creates anything:
npx github:Razee4315/coldframe setup- signs you in to GitHub (you paste a code in your browser)
- puts your project on GitHub if it isn't there yet
- adds the render workflow and the Claude Code skills
3. Render. Use the id of your Remotion <Composition>. The MP4 lands in out/cloud/.
npx github:Razee4315/coldframe render MyVideoThat's it. The cloud renders what's pushed to GitHub; if you have local commits, coldframe offers to push them first.
Closed the terminal, or used --no-wait? The render keeps going in the cloud. Fetch it when it's done:
npx github:Razee4315/coldframe downloadSetup adds these skills to your project (next to the coldframe skill that tells Claude Code how to render), so Claude Code follows them whenever it makes a video:
- video-rules: story structure, the "AI look" to avoid, text, UI, data, CTA, length and formats.
- motion-direction: how to direct and build real motion design in Remotion: a virtual camera, depth planes, match cuts and palette impacts, and a workflow of three directions → beat sheet → approved styleframes before anything is animated.
- sound-design: a soft music bed, a real sound for every click, keystroke and transition, mixing levels, and an audio sample you approve before the full render. Setup also adds a library of 37 CC0 sound effects to
public/sfx/and<Sfx>/<MusicBed>helpers tosrc/coldframe-sound.tsx.
The short version:
| Don't | Do |
|---|---|
| Open with a logo | Spend the first 3 seconds on the problem or the result |
| Default dark + glow + purple, particles | Your real brand colours and fonts |
| The same fade between every scene | Mix transitions, each with a reason |
| Make everything bounce | One emphasis technique, on the word that matters |
| Tiny text, lots of it | 7 words or fewer per screen, readable on a phone |
| Numbers you haven't measured | Real, sourced numbers |
| Flat slides fading in | A camera, depth, one real product action with a held result |
| Silence, or beeps made in code | Soft music and a real sound for every action |
Measured on a laptop with 4 cores / 8 threads.
| Laptop | coldframe on GitHub | |
|---|---|---|
| The 20 s demo (600 frames, 1080p30) | 46 s | 1 min 53 s on 8 machines (run) |
| Your computer while it renders | Busy, fans on | Free, can even be off |
| 3D scenes (WebGL / three.js) | Uses your GPU | No GPU, drawn in software: much slower |
Each machine spends about 40 s getting ready, so short videos are still quicker at home. coldframe is for when you need your computer while a video renders, and for long videos made of text, UI, images and footage. For 3D-heavy videos, render the 3D shots once on your own GPU and use them as clips.
coldframe setup [--public|--private] one-time setup in your Remotion project (start here)
coldframe render <Comp> [options] render in the cloud, wait, download the MP4
coldframe download [run-id] download the MP4 of a finished render (default: the latest)
coldframe runs list recent cloud renders
coldframe init only add the GitHub workflow file
--chunks <n> parallel machines (default 8, max 20)
--props <json> input props
--ref <branch> git branch to render (default: current branch)
--out <dir> where to save the MP4 (default out/cloud)
--name <file> output file name
--no-wait start the render and exit
--repo <o/r> GitHub repo (default: the repo in this folder)
Press Ctrl+C while it waits and the render keeps going; coldframe download fetches it later. You can also start a render from your repo's Actions tab → coldframe → Run workflow.
setup adds .github/workflows/coldframe.yml, which calls the shared render workflow. Edit it to change these:
| Input | Default | What it does |
|---|---|---|
composition |
(required) | Composition id to render |
chunks |
8 |
Parallel machines, 1–20 |
project-dir |
. |
Folder with the Remotion package.json |
props |
{} |
Input props as JSON |
output-name |
<comp>-<run>.mp4 |
Name of the final file |
gl |
swangle |
Chrome's OpenGL backend. swangle runs WebGL on machines without a GPU |
frame-timeout |
120000 |
Milliseconds one frame may take (heavy 3D needs more than Remotion's default) |
concurrency |
100% |
Remotion --concurrency on each machine |
extra-args |
Extra flags for every remotion render, e.g. --crf=16 |
|
chunk-timeout |
60 |
Minutes one machine may render before it's stopped, so a stuck render can't use up your minutes |
Your project needs a committed package-lock.json. coldframe adds the Linux binaries that npm often leaves out of lockfiles made on Windows or macOS (npm/cli#4828).
Is it free? Yes. On public repos, GitHub machines are free with no limit. Private repos get 2,000 free machine-minutes a month, and each machine counts separately (8 machines × 3 min = 24 min). If you run out, GitHub stops the job. You're never charged unless you add a payment method.
Will the joins show? No. Each frame is rendered on its own, the video pieces are joined without re-encoding, and each piece carries its audio as lossless PCM, so the soundtrack joins sample-exactly (tested: 768,000 of 768,000 samples identical to a single-pass render). If the final frame count is wrong, the run fails instead of giving you a broken file.
Does WebGL / three.js work? Yes, and it looks the same as a GPU render, but it's slow on GitHub's machines. See the honest numbers above.
Why not Remotion Lambda? Lambda is faster and built for production, but needs AWS and costs money per render. coldframe is for free renders from a plain GitHub repo.
What about Remotion's license? coldframe is MIT. Remotion itself is free for individuals and companies of up to 3 people; larger companies need a company license.
bin/coldframe.mjs the CLI (no dependencies, uses gh)
.github/workflows/render.yml the shared parallel render workflow
templates/coldframe.yml what setup adds to your project
.claude/skills/coldframe/ Claude Code skill: how to render in the cloud
.claude/skills/video-rules/ Claude Code skill: how to make videos that don't look AI-made
.claude/skills/motion-direction/ Claude Code skill: camera, depth, transitions, styleframes-first workflow
.claude/skills/sound-design/ Claude Code skill: music bed, a sound for every action, loudness
sfx/ CC0 sound-effect library (setup copies it to public/sfx/)
templates/sound.tsx <Sfx> and <MusicBed> helpers (setup copies it to src/coldframe-sound.tsx)
example/ the Remotion demo project
docs/ the website (GitHub Pages)
MIT. Not affiliated with Remotion or GitHub.

