Record your first flow
Capture yourself using the application, and save what you did as a replayable flow.
ff record opens a browser, signs in through the environment's auth adapter, and writes
down what you do.
ff record --url https://your-app.example.com --outputs screenshotsA separate recorder window carries the controls — pause, resume, finish — and lists steps as they are captured. It is a window of its own rather than an overlay so that nothing belonging to the tool ever appears inside the product being recorded. Closing the browser finishes the recording, the same as the toolbar's Finish button.
Every step is verified as it is captured
A step is recorded only when its selector resolves to exactly one element. Anything ambiguous is reported rather than guessed.
That strictness is the point. A selector that silently matches the wrong control is the failure that surfaces months later, in published content, after nobody remembers the recording session.
Declare the outputs at record time
--outputs is not only a rendering choice — it changes what has to be captured.
An HTML demo needs each page's real markup, and a recording that never gathered it cannot become one afterwards without walking the flow again. Deciding late costs a re-recording.
See Outputs for what each kind produces.
Signing in is optional
The auth adapter is tried when one is configured. If it cannot sign in — no credentials, an unexpected login screen — the session starts paused so you can sign in yourself, with nothing being captured until you resume.
An environment is likewise optional. Given --url there is nothing left for one to supply, so a
recording can be made against any application without registering it first.
Then run it
ff validate flow.json
ff run flow.jsonvalidate checks the flow against the canonical schema without executing anything. run executes
a governed run and publishes what it produces — as a draft, for review.
Not every flow starts in a browser
A deck, a PDF, a Google Slides link, or a folder of pictures and clips each becomes a flow too, with no recording session at all. See Import what you already have.