Ctrl + Shift + A to toggle
On-prem M&E delivery and VFX ingest. Every machine on your LAN encoding. Every output verified. Every NLE round-trippable.
Drop a video, an EXR sequence, a CinemaDNG folder, or an OTIO timeline into TRNSCODE and it gets sliced, sent to every encoder on your LAN, encoded in parallel, then stitched back together and verified — automatically. One machine becomes the conductor; every other becomes a worker that picks up chunks and returns finished media.
On top of that engine sits an on-prem Media & Entertainment delivery and VFX ingest platform — broadcast-grade QC, HDR10 / HLG / SDR color management, ProRes / DNxHR / DPX / EXR mezzanines, NLE round-trip across Resolve / Premiere / FCP / OTIO / EDL / AAF, a full VFX studio ingest pipeline with OCIO/ACES and Flow Production Tracking, RAW/CinemaDNG ingest, and AI-assisted preset selection. All of it runs on hardware you already own. Bursting to cloud is on the roadmap, not a requirement. Ships as two single-file Windows executables with ffmpeg, the VFX toolchain, and the ACES Studio Config baked in — mDNS auto-discovery, double-click to run.
Master/worker orchestration with five chunking strategies — closed-GOP slice, open-GOP remux, scene-aware, cut-aligned to AAF/EDL/FCPXML, and frame-range for EXR sequences. Cost-based scheduler with EMA-tracked runtime per worker × preset, GPU session budgeting, and work-stealing.
46 presets across 7 families with codec-spec conformance verification on every assembled output. HDR10 / HLG / SDR color metadata classification with zscale + tonemap chains. Deliverable-profile QC (LUFS + true-peak) against broadcast_atsc / broadcast_ebu_r128 / ott_netflix.
FCP-XML 1.10 + FCPXML + xmeml + OpenTimelineIO + EDL/AAF, plus opt-in direct Resolve project-DB linking. A hard backup-first rule snapshots every customer project file before any write — every relink is reversible.
EXR sequences via exrseq://, working-space + display transforms through oiiotool, ACES Studio Config v4 bundled. Shot domain model (Project → IngestProfile → Shot → ShotVersion). Flow Production Tracking with HMAC-SHA1 webhook + EventLog reconciler. Five-step ingest profile wizard.
Vite SPA served from the same origin as the API. Dashboard, Queue, tabbed job detail (Chunks / Workers / Logs / Spec / Forensics), Review (HLS preview), Ingest, Shots, virtualized Activity feed. Cmd-K command palette switches surfaces and themes. Simple and Advanced density modes.
JWT auth with approval-gated worker enrollment and HMAC-signed chunk URLs (60-min TTL). MAM push to Iconik / Dalet / Avid via a deliverable matrix. CLI for admin reset, DB backup/restore, firewall install, worker discover/probe/test-encode. Self-installing Windows firewall rules.
Operators submit a video file, an EXR sequence via exrseq://, a CinemaDNG folder via dngdir://, or an OpenTimelineIO timeline that gets exploded into one job per clip across every video track. The AI selector runs in Manual, Guided, or Auto mode — a rule-based scorer (codec family, resolution class, alpha need, audio passthrough) and an OpenCLIP ViT-B/32 model (LAION-2B weights) reason over the source and propose a preset. If the CLIP weights aren't installed, Auto and Guided gracefully fall back to the rule-based pick and the UI says so — never passing off a deterministic pick as an AI pick.
TRNSCODE picks one of five strategies based on the source. Closed-GOP H.264/HEVC: read the keyframe index via ffprobe and pick GOP-aligned boundaries — no source re-encoding. Open-GOP or unknown: fast -force_key_frames remux first, then chunk against the remux. Scene-aware: aligns boundaries to actual scene cuts so chunks never cross dissolves. Cut-aligned: boundaries snap to AAF / EDL / FCPXML edits within tolerance. Frame-range: for EXR / image sequences, partition [first_frame, last_frame] into per-chunk ranges that oiiotool or ffmpeg image2 consume directly. Chunks default to ~12s, with ProRes at ~30s and AV1 at ~8s, capped 45s / floored 4s. A validator confirms every chunk lands on a frame before dispatch.
Workers don't need a shared filesystem. The master serves chunk source bytes over HTTP at GET /chunks/{id}/source and accepts encoded output at PUT /chunks/{id}/output. Every URL carries an HMAC-signed token scoped to a single chunk with a 60-minute TTL. Same-host workers use a zero-copy local path — no HTTP, no firewall, no LAN traffic. Cross-host workers dial the master's mDNS-advertised LAN IP, so a typical LAN needs zero static configuration. Wired workers (≥ 1 Gbps Ethernet) are admitted by default; Wi-Fi and cellular links are refused at registration with a worker.network_unsupported event because flaky links poison parallel encodes.
The scheduler scores each idle worker against each pending chunk on four signals: runtime estimate (EMA per worker × preset class), network distance (same-host > LAN > WAN), queue delay (idle workers prioritized), and capability fit (NVENC chunks penalize VAAPI-only workers heavily). GPU sessions are budgeted per (worker, GPU) with a token bucket sized from each card's NVENC session limit, so the scheduler never oversubscribes a card; multi-GPU hosts get round-robin affinity. Lowest total cost wins. Work-stealing kicks in if a chunk's been queued too long while another worker idles. Workers stream progress every second over a bidi gRPC channel — frame, FPS, bitrate, speed, ETA — which is what tickets on the Dashboard and job-detail page.
When every chunk for a job arrives, the master confirms the codec signature matches across chunks (e.g. all H.264 high@L4.0) and the color signatures match — assembly refuses if HDR/SDR metadata drifted mid-stream. It extracts the source audio once via ffmpeg -c copy, runs ffmpeg -f concat -c copy to glue the encoded video together, and muxes the audio sidecar back in — with an AAC fallback if the source codec and destination container disagree.
A correctness pass runs up to seven independent verifiers and persists a report on the job's Forensics tab: PSNR/SSIM/VMAF via libvmaf, bit-exact reproducibility (elementary-stream sha256), deterministic argv audit, PTS/DTS timeline, sample-accurate audio concat at chunk boundaries, source fixity (sha256 + size baseline captured at submit), codec conformance against the preset's declared spec, and color consistency. An opt-in QC pass measures integrated LUFS + true-peak against a named deliverable profile (broadcast_atsc, broadcast_ebu_r128, ott_netflix). An opt-in review gate parks the job at pending_approval until a reviewer scrubs the full assembled output through HLS preview and approves. Then a MAM push fires to Iconik / Dalet / Avid if a deliverable matrix matches — rate-limited, retrying, idempotent, credential-redacting.
The browser console at localhost:7443 is a React + Vite + TanStack SPA served from the same origin as the master API. Operators flip between a Simple mode (Queue / Submit / Workers) and an Advanced mode that adds the Dashboard, the Activity feed, and per-job Forensics.
The Dashboard reports live fleet FPS, KPI cards (chunk counts, 24-hour verify pass rate, average chunk duration), a fleet chunk map, and a per-worker FPS strip. Click a queue row and the job-detail page opens with five tabs — Chunks, Workers, Logs, Spec, and Forensics — where the correctness report, lineage, per-chunk argv, and metadata diff live. The Review surface scrubs the full assembled job through an HLS preview before a reviewer approves or rejects. Ingest, Ingest Profiles, and Shots cover the VFX side; the Activity feed is a virtualized, live-tailing audit of every job, chunk, worker, MAM write, and Flow event.
Settings is split into General, Operations, Integrations, and Access sub-pages with admin-gated route groups. A Cmd-K command palette switches surfaces and themes. Thirteen accent palettes ship with the build; per-user theme is persisted to the DB and hydrated on login. Live-data pulses gate behind prefers-reduced-motion.