ALCHEMIST REVIEW
Everyone on the same frame. Even the one who stopped.
A live session streams the editor's Program and its whole timeline to a browser, an Apple TV, a phone and a tablet at once. When someone needs to write a note, their device freezes the frame — and nobody else's screening pauses.
Browser · Apple TV · iPhone · iPad — guests join with a link or a six-digit code, no account required
FOUR SURFACES, ONE SESSION
The edit, wherever the room is.
Every client speaks the same versioned JSON wire contract, checked against one shared conformance corpus that all four vendor byte-for-byte rather than hand-editing.
The host
native-editorPublishes Program video and audio, the full OTIO snapshot, the media bin, thumbnail atlases and waveforms. Folds accepted comments back into the project's Annotations track and publishes the next snapshot generation.
The browser seat
webEditorially read-only. Answers the host's WebRTC offer and presents Program with Opus audio, joins the all-participant voice mesh, and ducks Program under speech. An invite opens a lobby that waits for an explicit Join, so the microphone starts from a real user gesture.
The ten-foot seat
apple-tvProgram full screen with no chrome. Press down for a read-only timeline strip; Menu shrinks Program and raises the roster. Hardware H.264 through VideoToolbox and Opus at 48 kHz stereo, over libdatachannel rather than a 300 MB WebRTC binary.
The notepad
apple-second-screenWhere notes actually get written. Holds a frame locally, converts PencilKit strokes into open ORI annotation commands, keeps a draft through a disconnect, and retries its commit idempotently.
HELD REVIEW
Freeze your frame. Not the screening.
Holding a frame is local presentation state, never shared transport state. Nobody else's playback is touched, and the held device never issues a pause, play or seek.
01Resolve
The live sequence frame resolves to the visible OTIO clip instance and its source-media time — before the keyboard or the drawing UI appears. If no video clip resolves, it fails visibly rather than making a note that cannot survive an edit.
02Freeze
That frame holds on this device alone. The Apple TV, the browser and the shared screening keep playing at full speed.
03Compose
Write and draw locally while live state keeps reducing into a buffer behind the held image. Program audio mutes on this device only, so a stale picture never plays against live sound.
04Commit
The note and the drawing commit together as one idempotent mutation. Retrying after a dropped connection creates exactly one comment, never two.
05Catch up
On acknowledgement the device jumps straight to the newest live frame. It never replays the missed interval, and never issues a pause, play or seek to anyone else.
ANCHORING
A note about a frame, not about a timecode.
Comments address source media, not sequence position. The edit moves underneath them all afternoon and they stay on the frame the reviewer was actually looking at.
WHAT THE EDITOR DOES | WHAT THE COMMENT DOES |
|---|---|
Moves the clip | Resolves at the clip's new sequence position. Nothing to reconcile. |
Trims the frame out | Kept, and marked off-cut until that source frame is visible again. |
Duplicates the clip | The original instance keeps the comment. It is never copied or retargeted automatically. |
Relinks the media | The anchor survives as long as the clip GUID does; only the diagnostic fingerprint updates. |
Replaces or deletes the clip | Marked unplaced. A frame digest may suggest a rebind, but nothing applies one silently. |
Edits during composition | The frozen anchor does not move. It resolves against the newest timeline only after commit. |
IDENTITY
Five screens. One person in the roster.
A connection is not a human being. Splitting the two is what lets one director hold a frame on an iPad while their own Apple TV keeps leading playback.
IDENTITY | LIFETIME | OWNS |
|---|---|---|
userId | An account, or a session-scoped guest | Display identity, role, comments, annotations and permissions |
deviceId | An app install, or a trusted browser install | Device name, form factor and remembered preferences |
presenceId | One connected session endpoint | The socket, WebRTC signalling, mute, liveness and playback leadership |
Leadership is handed to a presence, never inherited by a person. A guest keeps a reconnect credential that restores the same identity, device and pending mutations — without handing back leadership.
ANNOTATIONS
Drawings that outlive the session.
Notes and markup land in the project itself as a one-frame clip on an OTIO Annotations track — one per clip and source frame — so they travel with the file rather than a vendor database.
Built on an open interchange, not our own
The drawing payload is ORI Annotations, pinned to a specific upstream commit and Apache-2.0 licensed. Alchemist implements compatible schemas and codecs in Swift, TypeScript, Go and Zig rather than adopting ORI's own transport, so the markup is portable even though the session is ours.
PaintStart.1PaintPoints.1PaintVertices.1PaintEnd.1TextAnnotation.1EllipseAnnotation.1RectangleAnnotation.1ArrowAnnotation.1Aspect-independent coordinates
Height-normalized, Y-up and centred on the image, so y always spans −0.5 to +0.5. A 16:9, portrait or anamorphic frame round-trips identically.
Stable command UUIDs
Every stroke, shape and positioned text keeps an identity, so editing one person's note regenerates the aggregate without disturbing anyone else's work.
Attribution without exposure
The participant hash is an opaque derivative of the user id — never a presence id, never a display name.
NOT IN THE FIRST RELEASE
Broadcasting private draft strokes before they are submitted
Automatically rebinding a comment when its clip is replaced
Conference video — camera preview stays local only
Still landing
Durable folding of committed comments into the saved project, cross-client rendering of other people's annotations, and account-backed identity across installs are the next milestones rather than shipped behaviour.
Live co-editing of an unfinished prose comment