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

01

Professional formats

02

Node compositor

03

Network rendering

04

Immersive output

Alchemist Pro desktop editor design reference

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

Image resolution scale ladder

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.

A composition graph connecting source, grade, merge and output nodes
Properties — Merge1
inputs
A
V2 · TimeSwitch
B
V1 · TimeSwitch
operation
over
mix
1.000

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.

Read
Constant
TimeMap
TimeSwitch
Transform
Crop
Merge
Grade
Blur
Levels
RGB Curves
Premult
Unpremult
Tracker
Viewer
Output
OpenFX seam

Execution 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.

Network render manager with worker status and job progress
Worker lease and render task timeline

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 threads
CPU ceiling
RAM admission
cache quota
0this machine's maximum

Disabled

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.264
HEVC
Apple ProRes 422
portable ProRes

WRITERS

PNG
JPEG
TIFF
EXR

SCOPE

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.

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.

Immersive — session diagnostics

SESSION LIVE
VIEW QUATERNION0.0182, −0.1147, 0.0033, 0.9932
SWAPCHAIN2720 × 2400 per eye
VIDEO2720 × 2400
PREDICTED DISPLAY PERIOD11.1 ms
PRESENTS / LAYERS41,208 / 41,208
CONNECTION SPEEDnot reported by OpenXR

Air Link and USB throughput are not exposed by OpenXR, so the panel reports no connection speed rather than inventing one.

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.