1
Add your keys
Open the Connections page (
npx vfrey open, then Connections under Setup). See The Connections page.2
Let it dry-run
Run a few ticks. Look at the videos and at the Publications page, where each dry run has a
dry-run badge.3
Go live
Type the channel id once. See Go live.
4
Keep it running
npx vfrey service install runs the worker in the background. See Background worker.The Connections page
The Connections page (/keys on the dashboard, called Keys in older versions) holds one form per platform: YouTube, TikTok, Instagram, Facebook, and Reddit sources. It is write-only.
- A saved value is never shown again. The page shows
presentormissing, and when each value was set. Older values show “Set earlier”. - A blank field keeps the stored value. Only a field you fill in changes.
- Clear is its own button, with an inline confirm.
- The values go to the same secret store the
desk secretverbs use. They are never echoed and never logged.
npx vfrey desk secret set, through stdin. See Local desk.
Go live
A new series haslive = false. In that state a tick runs the whole pipeline and records a dry-run publication with no upload, and a reply to a comment is drafted but not sent.
To go live, type the channel id of the account the series posts to. This is so a series never posts to the wrong channel.
- Dashboard
- Command line
Open the series page and press Go live. The page lists the channel ids on file (the TikTok open id, the Instagram user id, the Facebook page id). Type one of them exactly.
Fix: line. YouTube has no id in your keys, so for a YouTube series with no id on file, the id you type is saved as the channel id, and the series goes live with it. Each change is recorded as an event on the series page (went_live, went_dry_run, and the switches).
A series you already had before this feature stays live only if it already has a real publication. Every other series became dry-run. Series imported from an
accounts.json start in dry-run.The switches
Each series has three switches, on the series page or withdesk series update.
--publish, --engage, and --review each take true or false.
Never uploads twice
A video is never uploaded twice to the same platform. Once a job has a publish session or an external id for a platform, no retry, resume, cancel-and-retry, or second worker starts a new upload for it.- A job claim carries a token. If you cancel or retry a job, or another worker takes it over, the first worker loses its claim and stops without writing.
npx vfrey desk job retryrefuses while the worker that held a cancelled job is still running, because it may be in the middle of an upload. It works once that worker has stopped.- A series that is not live, or has publish off, never overwrites an unfinished upload with a dry run. It marks the platform
skippedand keeps the ids. - A TikTok publish that TikTok reports as failed with
internalis not restarted with a fresh session. It counts as a failed job.
Review before render
Withreview on, a job runs its script, scene, and before-render quality checks, then stops in the awaiting_review state. A compliance failure blocks the job before that, so it never reaches review.
The Review screen (/review) shows each waiting job with its script, a preview of the scene, and the check results.
- Approve puts the job back to
pending. The next tick renders it, runs the after-render checks, and then the normal publish rules. - Reject ends the job as
rejectedwith the codereview_rejectedand your reason.desk job retrystill works on it.
tick summary prints both commands for a waiting job, and tick --json has review: { approve, reject } on it. A waiting job does not claim a worker, and it counts as a video made, so the series keeps its normal cadence and does not pile up waiting jobs. The worker’s service status shows how many are waiting.
Live scene preview
The run page and the Review screen play an HTML scene in the browser, in sync with the voice, so you can scrub through it before a render. The preview is served from your project’s dashboard on your own machine, with the same files vfrey supplies at render time. It cannot reach the network. Only HTML scenes (vfrey-framey or hyperframes) have the live preview. A Remotion scene shows a still frame instead. See Scenes.
The screens
The dashboard has four read-only screens for a series on autopilot. Runnpx vfrey open to see them.
Also on the dashboard: Topics, Creators, and Mail, which are paid features, and Review.