Running a take

Press play from the top of a script and the prompter composes the cold open for you: a countdown, the recording rolling, and the scroll starting only once you have had a beat to settle.

The cold open

clock zero · the recorder rolls
3
2
1
SMILE
GO
the scroll begins
≈ 4.5 seconds that belong to the recording

Zeroing at the countdown rather than at GO is deliberate. Starting at GO once put a whole episode's markers four and a half seconds ahead of the footage. Pressing play again during the countdown cancels it.

When GO clears, a take:go row lands in the log as a reference point — and, under Rheocles, as a marker in the manifest — and the first section starts scrolling at your reading pace.

The take clock

Cue logging does not require a recorder. This is the rule that costs the most to get wrong, so it is the one the design protects hardest.

Without a recorder

The clock starts at the countdown and every token logs against it.

take:clock, internal clock, zero at countdown start

A take filmed on a camera the prompter cannot see still produces a usable marker list. Every timecode is offset by one constant.

With OBS

The log is rebased onto the recording’s own timecode, however that recording started.

take:clock, OBS record timecode

Markers import with no offset at all — including when you started the recording from a hotkey or the OBS window rather than from here.

With Rheocles

The take is Rheocles’ own. The cue is POST /takes/{id}/start, and the clock zeroes the instant it is sent; every marker is stamped by the daemon.

take:clock, internal clock, zero at Rheocles cue

Every armed stream lands as its own file with time-of-day timecode. Markers are in manifest.json as well as the CSV. No rebase or drift row ever appears: there is nothing to adopt and nothing to drift from.

Where the files go

Under Rheocles the take is a folder, named before the cue. Creating the take reserves every path, so the cue log knows the files it belongs to before a frame of them exists — and the take is named after its folder, not after a file.

Under the output root~/Movies/Rheocles
takes/2026-09-12/003504-twipi/
the take folder
├ manifest.json
the take: streams, paths, markers
├ prompter-xl.mov
one file per armed stream
├ elgato-4k-x.mov
└ scarlett-2i2-usb.wav

One file per armed stream: video as QuickTime with a time-of-day timecode track, audio as Broadcast Wave. The cue log carries the folder, every file, and the manifest path, so a CSV alone can be matched to the footage months later. The cue log's list has a Copy folder button, because the path is long, and an Open in Finder button beside the folder and beside each file — Rheocles does the revealing, since a browser page cannot.

One video and one microphone is the shape of a screen recording, and most people want one file of it. Tick Also save a single file in the rig and Rheocles also writes combined.mov after the stop: the video track copied as-is with its timecode, every microphone as its own track — nothing re-encoded, nothing mixed down. The box appears only while at most one video stream is armed, because that is the only shape it can honour; the per-stream files are still written, and the take is complete whether or not the single file is.

Stopping

The script
A stop token, authored where the show ends. This is the normal way.
The ■ Stop button
Beside the recorder pill while recording. No confirmation; it is what the token does.
Rheocles itself
Stop in the popover. The daemon says so, and the prompter ends the take on hearing it.

A page refresh is not one of them. Rheocles owns the take, so reloading the prompter mid-take adopts the recording that is still rolling rather than ending it. The first row then reads Rheocles take … with the take's id, and the clock is rebased from when the daemon says it started.

The export explains itself

A few rows in the log are about the log rather than the show. They exist so that an import landing in the wrong place can be diagnosed from the file alone instead of guessed at, and so the file can be matched to its footage without anyone having written the pairing down.

take:clock
Which clock the take ran on. Always, as the first row.
take:rebase
How far everything logged so far was shifted. When an OBS recording is adopted mid-take.
take:drift
The size of the jump, so a misaligned import can be explained. When an OBS recording’s reported duration jumps past a quarter second.
take:footage
The file OBS wrote, or the Rheocles take folder and what is in it. When anything managed to name the footage.
take:file
The full path of that stream’s file. Under Rheocles, one row per stream.
take:manifest
The path of manifest.json, which describes the rest. Under Rheocles.

The cue log

Every fired token is logged with a frame-accurate timecode at your project's frame rate. The log opens by itself when a take ends, and you can download it as CSV or copy it. Every write persists locally, so a refresh mid-take cannot destroy a take's markers.

Going again

is shaped for redoing a section: the first press returns to the top of the section you are in, and only a second press steps back to the previous one. Clicking any section jumps straight to it.

The recording keeps rolling through all of that, which is the point. The tokens in the section you are redoing fire again and land in the log again, further down the take — and that second set of rows is what tells the edit which pass to keep.

If the script changes underneath you

The prompter re-reads its source periodically and before every cold open. If the script has been edited elsewhere, it raises a banner and refuses to start the countdown — but it never reloads on its own, which would end a recording. Adopting the change is a deliberate click, and it swaps the text in place without navigating.

Want to run your next take on this?

PteroPrompter is in early access. Leave an address and we'll be in touch when the first takes ship.