Skip to content

Control Flow from the Shortcuts app, Siri, and AppleScript.

These automations are separate from keyboard shortcuts on Mac.

The Shortcuts app can run Flow actions. Siri shortcuts exist for Start or Resume Session, Pause Session, Skip Session, Reset Cycle, Set Session Title, and Set Duration.

Action What it does Platforms (all unless noted)
Start or Resume Session Starts or resumes the current Flow or break
Pause Session Pauses the current Flow or break
Toggle Timer Switches between running and paused
Skip Session Skips the current session and moves to the next
Previous Session Goes to the previous session, or reloads the current one if it is running or paused (Flow Pro)
Reset Cycle Returns to a pending Flow at the start of the cycle
Get Phase Returns Flow, Short Break, or Long Break
Get Remaining Seconds Returns remaining seconds
Get Session Title Returns the current title
Set Session Title Sets the title (Flow Pro)
Get Duration Returns the duration of a Flow, Short Break, or Long Break in minutes
Set Duration Sets the duration of a Flow, Short Break, or Long Break in minutes. Custom values from 1–90 minutes require Flow Pro
Get Tag Returns the current tag, or empty iPhone, iPad, Mac
Set Tag Sets the tag by name (Flow Pro). An empty name clears it iPhone, iPad, Mac
Get All Tags Returns tag titles in display order iPhone, iPad, Mac
Get State Returns Pending, Running, or Paused
Open App Opens Flow
Show Window Shows the Flow window Mac
Hide Window Hides the Flow window Mac

Flow bundles a flow command-line tool inside the app, at Flow.app/Contents/Helpers/flow. It talks to a running copy of Flow over AppleScript.

Terminal window
"/Applications/Flow.app/Contents/Helpers/flow" status

To run it as flow instead of the full path, symlink it onto your PATH:

Terminal window
ln -s "/Applications/Flow.app/Contents/Helpers/flow" /usr/local/bin/flow

Commands that change the timer print the same JSON as status.

Command What it does
status Print the current timer as JSON
start Start or resume the timer
pause Pause the timer
skip Skip the current session
previous Go to the previous session, or restart the current one if it has already started (Flow Pro)
reset Reset the cycle progress
session [--title <text>] [--tag <text>] Set the session title (Flow Pro) or tag (Flow Pro; empty clears it)
duration <minutes> [--phase <phase>] Set the duration of a phase (flow, shortBreak, or longBreak, defaulting to the current phase) in minutes. Custom values from 1–90 minutes require Flow Pro
tags List session tags as JSON, in display order

status prints a JSON snapshot with phase, state, remainingSeconds, title, tag, cycleProgress, cycleLength, and willCompleteAt (ISO 8601, only when running).

On Mac you can control Flow with AppleScript. For example:

tell application "Flow" to getState
Command What it does
start Start or resume
stop Pause
skip Skip to the next session
previous Go to the previous session (Flow Pro)
reset Restart the cycle
show Show the window
hide Hide the window
getPhase Returns flow, shortBreak, or longBreak
getTime Remaining time as m:ss
setTitle to "..." Set the session title (Flow Pro)
getTitle Current session title
setDuration to … for "…" Set the duration of a phase (flow, shortBreak, longBreak) in minutes. Custom values from 1–90 minutes require Flow Pro
getDuration for "…" Get the duration of a phase (flow, shortBreak, longBreak) in minutes
setTag to "..." Set the tag by name (Flow Pro). An empty name clears it
getTag Current tag, or empty
getAllTags Tag titles in display order
getState Returns pending, running, or paused
getTimerStatus Snapshot record with phase, state, remainingSeconds, title, tag, cycleProgress, cycleLength, and willCompleteAt (ISO 8601, only when running)