ALCHEMIST PRO
The whole finish, on your own hardware.
Decode camera originals natively. Composite out of core at 8K. Spread the render across the machines already on your LAN. Then put the cut on a headset while you are still cutting it.
macOS 14+ and Windows 11 · Apple silicon, NVIDIA RTX or AMD Radeon Pro · perpetual or subscription
01Professional formats
02Node compositor
03Network rendering
04Immersive output

01PROFESSIONAL FORMATS
Camera originals, decoded where they are.
No transcode pass and no proxy round before you can cut. Most adapters are this repo's own decoders rather than a platform framework, which is why the format list reads the way it does.
FORMAT | DECODE PATH | NOTES |
|---|---|---|
ProRes 422 and 4444 | turbores — pure Zig | Every 422 and 4444 variant, with this repo's own demux. ProRes RAW is a different bitstream and is excluded rather than half-supported. |
DNxHD / DNxHR in MXF | turbovc3 — pure Zig | Decoder and MXF demux both. Progressive DNxHR and DNxHD only; interlaced DNxHD coding units are not yet native. |
H.264 / HEVC / AV1 | Media Foundation (Windows) | MP4 and MOV, with AVC and HEVC profile-level data read at probe and timing checked against the sequence clock. |
RED R3D | RED SDK C ABI | On by default. IPP2 source grading exposes exposure, CDL, tone map and highlight rolloff as bounded per-source deltas. |
Blackmagic RAW | BRAW SDK C ABI | On by default. The decode pipeline is selectable across CPU, CUDA, OpenCL and Metal, and chosen once per process. |
OpenEXR | OpenEXRCore, region-native | Selects a multipart part explicitly, walks intersecting scanline or tiled chunks, keeps arbitrary channel names. Deep and subsampled layouts fail explicitly. |
Image sequences | Platform imaging + OpenEXRCore | PNG, JPEG, TIFF and EXR. PNG, JPEG and TIFF decode to RGB8; EXR decodes to RGBA16F. |
Signed codec extensions | Native C ABI 1 or 2 | An additive, video-only fallback after the built-ins — loaded inside the editor only after explicit pre-load consent. |
Image sequences
Runs are stored as printf-style patterns — %0Nd padded or plain %d. The probe reports the first-to-last frame span and an aggregate missing-frame count, so a gap is a fact about the clip rather than a surprise at render.
A missing or corrupt member stays online and renders a right-reading MISSING FRAME slate
Stills and sequences with no embedded rate assume 24 fps until Interpret Footage overrides it
Literal stills cache as freeze frames; stored patterns seek by logical index
RAW decode is a machine setting
Blackmagic and RED get separate Settings sections rather than one combined panel, because the two SDKs expose genuinely different knobs — and inventing a shared three would mean inventing a mapping neither vendor has.
Values are read when a decoder opens, so a change takes the next clip instead of tearing one down mid-playback
Probe and filmstrip opens keep the shipped defaults, so a thumbnail never inherits a full-scale preference
Hand-edited preferences are clamped on parse: a bad file costs a default, never a launch

THE COMPOSITOR
The timeline owns placement. The composition owns the image.
A VFX shot is an editorial container on the timeline plus a separately persisted, project-global composition. Two owners, one boundary, nothing shared between them by accident.
01
Convert to VFX Shot
Selected clips become a composition clip on the first free video track above them. The sources stay below, unchanged and still yours to trim.
02
A managed branch per clip
Read, TimeMap, the cloned OpenFX stack, Transform/Crop and a per-track TimeSwitch, merged bottom-to-top into Output and a Viewer.
03
Update Sources, not overwrite
Timeline changes mark the snapshot stale. An artist edit detaches the node it touched, and Update Sources reports the detached conflict rather than writing over it.
COMPOSITING
A VFX shot is an editorial container. The composition outlives it.
The timeline owns placement and source drift. The composition — persisted separately, global to the project — owns image processing. Neither one reaches into the other without saying so.

FAMILIAR ON PURPOSE
Merge is the A/B model you already know.
Port 0 is B, port 1 is A, exactly as in Nuke. Over is the default, backed by the full arithmetic, blend and Porter-Duff menu, and the 0–1 mix dissolves the result toward B. Nothing here is a renamed dialect of somebody else's node.
One history row per graph change
Every change to the graph is a single entry in the History panel — not a scatter of sub-steps you have to undo one at a time.
THE NODE SET TODAY
Sixteen operators and one seam.
First-party operators work in planar float32 linear light and preserve arbitrary named channel planes end to end. This is the list as it stands — not a roadmap.
ReadConstantTimeMapTimeSwitchTransformCropMergeGradeBlurLevelsRGB CurvesPremultUnpremultTrackerViewerOutputOpenFX seamExecution and memory | scanline planner |
|---|---|
scheduling | Demand-driven and out-of-core. The planner subdivides work into x ranges, bounded row stripes and channel groups. |
stripe height | 64 rows by default. |
wide scanlines | An extremely wide scanline is split in x rather than held whole. |
canvas | 8K is supported. |
viewer rungs | The viewer can snap to 1/2, 1/4 or 1/8 spatial. |
fused pass | Compatible Grade, Unpremult and clamp tails collapse into a single fused point-operation pass. |
dispatch | Bounded planar stripes through Metal or D3D11 compute, with an exact fused CPU fallback. |
proof harness | Renders a multi-gigabyte logical image under a 64 MiB budget, then checks the output hash and the measured peak allocation. |
Cache defaults
A byte-budgeted in-memory cache, pinned while referenced and LRU-evicted, over a disk cache of compressed immutable stripe payloads.
25
%
of physical RAM
20
%
of currently available dedicated VRAM
100
GiB
of disk
Preferences can override all three. Disk records are published by atomic rename under a sharded content hash; a corrupt record is rejected, and the quota is enforced.
Only Output resizes a composition
The Output node is the single source of truth for the composition raster's width, height and pixel aspect. Read nodes, decoded media dimensions and later sequence-setting changes never resize a composition implicitly.
Your edits detach, they do not vanish
Edit a managed node and it detaches from the generated branch. A timeline change marks the snapshot stale, and Update Sources reports the detached conflicts instead of writing over them.
EXR that fails out loud
Ingress is region-native: an explicitly selected multipart part, only the intersecting scanline or tiled chunks, arbitrary channel names kept. Deep and subsampled layouts fail explicitly rather than silently.
ALCHEMIST RENDER
A render pool made of the machines you already own.
A private-LAN companion application with its own tray process and manager window. Not a mode of the editor, and not a cloud service.


Discovery, identity and transport | private LAN |
|---|---|
discovery | Native DNS-SD on both sides. The manager shows live discovered and pairable peer counts. |
manual endpoints | Accepted only as private IPv4 or IPv6 literals. |
pairing | One-use codes, with a prompt on the receiving machine showing a random code. |
device identity | Each daemon creates one Ed25519 device identity. |
seed storage | The versioned seed lives in the OS credential store, chunked so Windows Credential Manager size limits cannot reject a valid one. |
transport | Rotating seven-day P-256 certificates, each carrying a fixed-format Ed25519 attestation. |
verification | Exact trust and revocation checks. |
job admission | Immutable-manifest based. Repeated admission succeeds only for byte-identical manifests from the same origin. |
asset transfer | Bounded HTTP byte ranges into a block cache. |
lease lifecycle | Heartbeats, deterministic expiry and reassignment after a daemon or worker restart. |
The owner sets the ceiling
Admission is under the machine owner's control. Each control is a slider spanning that machine's own logical core count and memory.
worker threadsCPU ceilingRAM admissioncache quota0this machine's maximumDisabled
rejects admission entirely
Paused
accepts no new leases
WHAT THE POOL ADVERTISES
Encoders, declared per machine.
A codec-dependent job is never submitted to a render worker that is not configured for that codec. The pool does not guess, and it does not substitute.
ENCODERS
H.264HEVCApple ProRes 422portable ProResWRITERS
PNGJPEGTIFFEXRSCOPE
What Alchemist Render is not.
Said plainly, because the absences are decisions. You should be able to plan your facility around them.
Not a cloud service
Discovery, pairing and transport happen on your own private LAN. A manual endpoint is accepted only as a private IPv4 or IPv6 literal.
Not a mode of the editor
A separate application, with its own tray process and its own manager window — Jobs and Network sections, and five activity charts.
Not a machine you stop controlling
Worker threads, CPU ceiling, RAM admission and cache quota stay with the machine's owner. A disabled worker rejects admission entirely; a paused one accepts no new leases.
Not a mutable job queue
Job admission is immutable-manifest based. Repeated admission succeeds only for byte-identical manifests from the same origin.
04IMMERSIVE OUTPUT · OPENXR
Sit inside the cut while it is still a cut.
Immersive Program output is an owning subsystem beside the media backend, not a mode inside it. Head pose and GPU resources never enter editorial state.
a.Stereo straight from Blackmagic RAW
The BRAW ABI queries IBlackmagicRawClipImmersiveVideo and uses the SDK's own left and right tracks, submitting pairs as batched jobs followed by one flush.
b.Per-eye calibration, not a guess
Each ILPD view becomes one Mei/Rives record — focal length, principal point, skew, radial and tangential coefficients, projection offset, the calibrated radial-angle limit and the per-lens extrinsic quaternion.
c.A pair is a pair, or it is nothing
A frame pair requires equal PTS and decode generation and carries one reference-counted release contract across both eyes, so a half-updated pair cannot reach the headset.
d.Publishing never grows a queue
Output is non-blocking: publishing replaces the retained latest generation rather than appending, so the headset shows the newest frame instead of drifting behind the timeline.
Windows today
OpenXR is the Windows backend. macOS carries an explicit Apple stub and every other platform an actionable unsupported one — the selector never pretends a headset is there.
A narrow accepted set
Only fish projection clips with Mei/Rives calibration and non-empty ILPD are accepted for spherical presentation. Anything else plays flat rather than wrong.
11.1 ms for the pair
At 90 Hz a stereo pair has 11.1 ms to decode, upload and present. That budget is why the decode path hands the SDK's buffer downstream instead of copying 26 MB per eye.