The review loop is within reach: upload a cut, make a 1080p proxy with ffmpeg, step through it frame by frame, pin comments to timecodes and send a link that needs no account. An agent builds that in a weekend. What it can't build is the infrastructure around it: terabytes of storage and delivery, Camera to Cloud for cameras, panels inside Premiere and Final Cut, 4K playback and the security attestations studios ask for. For one editor sharing cuts with a few clients, a self-hosted review server is enough.
Before you buildCheck Frame.io Free first: 2 members, 2 GB and 2 projects with Camera to Cloud cost nothing, which is enough for a couple of short projects.
Build me a private video review server to replace Frame.io. Requirements: - Node.js 22 + TypeScript: a Fastify server rendering pages with Eta and a little vanilla JS. `npm start` serves http://localhost:4900 with the library, and /r/<token> for reviewers. - Storage: better-sqlite3 in ./data/review.db for projects, assets, versions (v1, v2 of one asset stacked), comments (frame number, text, reviewer name, resolved flag, optional drawing as JSON paths) and share links. Originals live in ./data/media/<asset-id>/. - Upload: resumable uploads with `@tus/server`, up to 20 GB. After upload run `ffmpeg` for a 1080p H.264 proxy MP4 with faststart and a poster frame; read the frame rate with `ffprobe` and keep it on the version. Show progress; originals stay untouched. - Player and comments: HTML5 video that steps one frame at a time using `requestVideoFrameCallback`, J K L and arrow-key shortcuts, a timeline with comment pins, click-to-comment at the current frame, in/out range comments and threaded replies. Timecodes show as HH:MM:SS:FF. Export comments as CSV and as a plain-text list. A side-by-side view plays two versions in sync. - Share links: a random 32-byte token stored hashed, with an optional passphrase (`argon2`), an expiry date, and flags for allowing comments and downloads. Reviewers type a name, with no account. - Single owner behind a password from .env. No accounts, no telemetry, local-first: nothing leaves the machine except what a reviewer fetches from your share link. - Out of scope: Camera to Cloud, Premiere, Final Cut and Resolve panels, watermarking and DRM, 4K and HDR playback, teams and permissions, mobile apps. - Done when a comment placed on frame 1200 of a 24 fps file shows 00:00:50:00 and reopens at exactly that frame, and an expired or wrong-passphrase link serves nothing. - README: installing ffmpeg, exposing /r/ through a tunnel, and a plain warning that disk space and upload bandwidth are now yours, and that blocking downloads can't stop screen capture.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Frame.io.
Add a comment importer to the review server in this folder. Requirements: - `npm run import-comments -- <asset-id> comments.csv` reads a CSV exported from Frame.io's Comments tab and creates comments with the original text, author name and timecode. - Convert each timecode to a frame number using the version's frame rate, and print rows whose timecode lies beyond the video's length instead of importing them. - Mark imported comments as such, skip rows already imported, and keep replies threaded when the CSV has a parent column. - Update the README with the export steps.
Add per-link watermarks to the review server in this folder. Requirements: - A share link can have a watermark text (for example the reviewer's company and the date). - When such a link is first opened, generate a proxy with that text burned in using ffmpeg's `drawtext` at low opacity in two corners, cache it per link, and stream that file instead. - Show "preparing" until the file is ready, and delete the cached file when the link expires. - The original and the normal proxy are never served on a watermarked link. - Update the README and say that a visible watermark deters but doesn't prevent leaks.
Add notifications to the review server in this folder. Requirements: - When a reviewer posts a comment, queue an email to me; send at most one email every 10 minutes per asset, listing all new comments with their timecodes and a link to open the frame. - Use nodemailer with SMTP settings from .env; if sending fails, retry 3 times with backoff and show failures in the admin. - A toggle per share link turns notifications off; resolved comments never trigger email. - Update the README.
Frame.io is where footage lands from the camera and where editors, producers and clients meet: files arrive as they shoot, editors review inside their timeline, and clients comment from a link with nothing to install. Studios pay for the integrations and the security paperwork, and for not hosting terabytes of video themselves.
Estimate · On your own disk behind a free tunnel it costs nothing; a VPS with a big disk or extra block storage runs roughly $10 to $20 a month. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | 2 members, 2 GB storage, 2 GB mounted storage, 2 projects, Camera to Cloud, transcription and captions. |
| Pro | $15 | $13.05 | Up to 5 members, 2 TB included plus 2 TB per added member, 250 GB mounted storage, unlimited projects, custom-branded and passphrase-protected shares, link expiry, comment attachments, one static watermark template. |
| Team | $25 | $21.75 | Up to 15 members, 3 TB included plus 2 TB per added member, 500 GB mounted storage (250 GB during the trial), restricted projects and folders, internal comments. |
| Enterprise | custom | — | Custom members and storage, SSO, several workspaces, 2 TB mounted storage; the Prime tier adds Storage Connect, Secure Sharing, session and forensic watermarking and DRM. |
Free: 2 members, 2 GB storage, 2 projects, Camera to Cloud and transcription.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: Camera to Cloud: cameras and recorders that upload to a project while shooting, Panels in Premiere, Final Cut Pro and Lightroom, and the iOS and Apple TV apps.
About $15 a month on the Pro plan per seat, $180 a year (checked 2026-10-19).
Camera to Cloud: cameras and recorders that upload to a project while shooting; Panels in Premiere, Final Cut Pro and Lightroom, and the iOS and Apple TV apps; Session and forensic watermarking and DRM on Enterprise Prime; Storage and delivery measured in terabytes, with 4K playback; SOC 2 and TPN+ attestations that clients' security teams ask for. If any of those matter to you, keep paying.
Yes: Clapshot (open source), Kitsu (open source), OpenFrame (open source).