Echidna
Automate

Flows and schedules

A flow is a list of browser steps you record once or write by hand, then replay on as many profiles as you like. Schedules run flows and other actions on a timetable while Echidna is running.

Flows, recordings and forms

Open Flows. It has four tabs:

TabWhat it holds
RecordingsSteps captured while you use a profile's window.
FlowsFlows you write or edit as JSON.
FormsForm templates that fill a page's fields (Capture from a page or New form template).
SyncMirror one window's actions to other profiles live.

Flows run inside the engine, so they keep going when you leave the Flows view.

Record a flow

  1. Open the profile you want to record with (it needs a window).
  2. In Flows, press Record, choose the Profile, optionally give it a Name, and press Start recording.
  3. Use the window as usual. Clicks, typing, keys, scrolling and page changes become steps.
  4. Press Stop, then Save (or Discard).

Passwords you type are saved as the placeholder {account.password}, not as text, so each profile fills in its own saved login.

Write or edit a flow

Press New flow, or Edit… on an existing one. The editor shows the flow as JSON on the left and what it does on the right. It checks the flow as you type (“Looks good” or a list of problems); Tidy JSON formats it and Save stores it. Import loads a flow file, and Export… saves one.

{
  "name": "Search",
  "kind": "flow",
  "start_url": "https://example.com",
  "steps": [
    {"type": "click", "selector": "input[name=q]"},
    {"type": "type", "selector": "input[name=q]", "text": "{custom.query}"},
    {"type": "press", "key": "Enter"},
    {"type": "wait", "ms": [800, 1600]}
  ]
}

A flow can have up to 1,000 steps. Every step can also carry note, timeout_ms and optional.

Step types

StepDoes
navigateOpen a page.
clickClick an element.
typeType into a field like a person (or paste).
pressPress a key.
select, checkChoose an option; tick or untick a box.
scrollScroll the page or to an element.
wait, wait_forPause for a random time; wait for an element, text or URL.
if, repeat, routerBranch, loop, or react to whichever of several pages appears.
assertStop with a message if something isn't as expected.
extract, set_dataRead a value from the page into custom data, or set a value later steps can use.
solve_captchaFind and solve a captcha on the page.
wait_for_otp, arm_otpWait for a one-time code (or link) in the profile's mailbox or the Unified Inbox.
screenshotTake a screenshot.
switch_tab, close_tabWork with tabs.
callRun another flow (up to 5 levels deep).
wait_queueWait until the tab is through a waiting room (never reloads).

Placeholders

Text in steps can use placeholders, so one flow works for every profile:

PlaceholderBecomes
{custom.<key>}A value from the profile's Data tab
{account.username}, {account.password}The profile's saved login (Account tab)
{totp}, {otp}The current 2FA code; the last code from a wait_for_otp step
{profile}The profile's name
{rand:N}N random digits
{data.<key>}A value saved earlier in the run

Options

OptionValues
on_errorstop or continue
step_timeout_ms1,000 to 600,000
speed0.25 to 4.0
dialogaccept or dismiss
keep_openKeep profiles open after the run
presetdefault or careful

Run a flow on many profiles

Press Run on… on a flow (Replay on… for a recording, Fill on… for a form), or select profiles and use Tools… → Run flow….

Press Run on N profiles. The run panel shows each profile's state and its step-by-step trace, with Stop run to cancel. Recent runs lists runs started from the app, by schedules, scripts or agents; the engine keeps the last 50.

Schedules

Open Schedules and press New schedule. A schedule has three parts.

What

Open, Close, Open a URL, Run a flow, Replay a recording, Check proxy, Check fingerprint, Clear cache, New device or Keep warm.

When

ModeSettings
OnceA date and time (not in the past).
RepeatEvery 15 minutes up to once a year.
CronA standard 5-field cron expression, such as 0 9 * * 1-5, or a shortcut like @daily.
Daily windowFrom and Until times on chosen Days. Open early opens profiles some minutes before the start, and Put profiles back as they were at the end restores them afterwards.

On

The profiles to act on: chosen profiles, a group, a tag or all profiles, and how many at once (1 to 16, default 3).

On the Schedules page, Run now starts a schedule immediately and History shows its last 50 runs. The All schedules card sets Browsers opened by schedules at once and has Pause timed runs; while paused, Run now still works.

Keep Echidna running

Schedules run in the engine, even when the window is closed, as long as Echidna is running. To close the window and keep schedules working, turn on Settings → General → Keep running in the system tray when the window is closed (on macOS, “in the menu bar”).

If Echidna wasn't running at the set time, a one-off run more than an hour late, or a daily window that has already ended, is recorded as missed. Other overdue repeating runs start on the next check after Echidna starts again.

Scripts and AI agents can create and run flows and schedules too; see Engine API and AI agents (MCP).