Reference

Automation

An automation is a tree of steps run against one profile — in that profile's browser, through its proxy, with its cookies. Twenty step types, and no scripting language to learn.

On this page

What an automation is

A tree of steps, run top to bottom against one profile. The steps that touch the page run inside that profile's own browser session — its proxy, its cookies, the fingerprint you built — so a site sees the identity rather than an automation harness bolted to it.

The automations tab filtered to On start pages: an eight-step automation card tagged Start page, currently running, with edit, share and run-history controls.
Automations are cards you filter — all, on start pages, assigned to you, connectors — and each carries its step count, state, and history.

Steps are built in the launcher on a canvas — each step a card, branches drawn as lanes, loops as groups you drop steps into — or handed over the API as JSON. Same tree either way: the canvas is only where the program is drawn, and execution order never follows where a card was dragged.

Either way the tree is validated before anything is stored, and a rejection names the exact path that failed rather than saying the shape is wrong.

Some steps deliberately run from the launcher and not from the page — an HTTP request, a model call, a notification. Those do not use the profile's proxy or cookies, and each says so on its own card.

An automation can also be pinned, from its editor, to every profile's browser start page — a tile next to the bookmarks, so it can be run from inside the browser.

The start page editor in the launcher: a search box, bookmark tiles, and an automations strip of pinned workflows that appear on every profile's browser start page.
Pinned workflows appear on every profile's browser start page and run from there, in that profile's session.

The 22 step types

Every field below is read from the schema Argus itself serves, so this is the vocabulary an agent gets when it calls argus_automation_schema.

The automation editor: numbered steps with a Steps-or-JSON toggle, an If step branching into a green yes lane and a red no lane, per-step enable, duplicate and delete, and a right rail with description, tags, start-page pinning and a 300-second run limit.
Steps or JSON, the same automation. Branches are lanes you add steps to; the right rail pins it to start pages and caps the whole run — 10 minutes at most.

Driving the page

The six that touch the browser. Each one runs inside the profile's own session, so a site sees the identity you built rather than an automation harness.

Go to

goto

Go to {url}

url
text · required
waitUntil
select · one of load | domcontentloaded

Wait for

waitFor

Wait for {for}

for
select · required · one of selector | selectorGone | url | text
selector
text
url
text
text
text

Click

click

Click {selector}

selector
text · required
nth
number

Type

type

Type into {selector}

selector
text · required
text
text · required
clear
boolean
delayMs
number
pressEnter
boolean

Scroll

scroll

Scroll to {to}

to
select · required · one of bottom | top | selector
selector
text

Screenshot

screenshot

Screenshot

selector
text
fullPage
boolean

Reading and holding data

Pull something out of the page, compute with it, or fetch it from somewhere else. Anything stored lands in a variable you name, and every later step can interpolate it. Save cookies captures the session itself, back into the profile's cookie set — and the two database steps carry a run's results out to a sheet, a table or a file, or read a work list back in.

Extract

extract

Read {selector} into {into}

selector
text · required
what
select · one of text | html | attr | value
attr
text
all
boolean
into
text · required

Run script

evaluate

Run script

script
textarea · required
args
keyvalue
into
text

Set variable

setVarno browser needed

Set {name}

name
text · required
value
text · required

HTTP request

httpRequestno browser needed

{method} {url}

method
select · one of GET | POST
url
text · required
headers
keyvalue
body
textarea
into
text

Sent from the launcher, not from the page -- it does not use the profile's proxy or cookies.

Save cookies

saveCookies

Save cookies to the Launcher {domain}

domain
text

With a filter set, the live cookie set is REPLACED by exactly this filtered subset -- running this step again with a narrower filter after a full sync discards every other domain's cookies from that set.

Save to database

saveRowsno browser needed

Save to {target}

connector
connector · data connector
target
remote · required
rows
select · required · one of one | many | each
items
text
mapping
mapping
matchOn
remote
extraColumns
select · one of fail | ignore | add
into
text

Sent from the launcher, not from the page -- it does not use the profile's proxy or cookies. Values are converted to the column's type before they are sent, and a value that cannot be converted fails the step rather than being stored wrong.

Load from database

loadRowsno browser needed

Load {target} into {into}

connector
connector · data connector
target
remote · required
filter
keyvalue
limit
number
into
text · required

Sent from the launcher, not from the page -- it does not use the profile's proxy or cookies. Only equality filters, and at most 1000 rows: this is a step that feeds a loop, not a query language.

Asking a model

Three steps that hand work to a model: an open question whose answer you keep, a yes-or-no check you branch on, and an agent that plans and calls tools — HTTP, code in the page, your data connectors, messages, other automations, MCP servers — until the task is done. All run from the launcher, against whichever AI connector you point them at.

Ask AI

aiPrompt

Ask AI into {into}

provider
connector · ai connector
prompt
textarea · required
context
select · one of none | pageText | selector
selector
text
format
select · one of text | json
maxTokens
number
into
text · required

Sent from the launcher, not from the page -- it does not use the profile's proxy or cookies. Page text is truncated before it is sent.

AI check

aiCheck

AI check: {question}

provider
connector · ai connector
question
textarea · required
context
select · one of none | pageText | selector
selector
text
into
text
onFalse
select · one of continue | fail

The model is asked for one word and nothing else. Anything it says that is not yes or no fails the step rather than being guessed at.

AI Agent

aiAgent

Agent into {into}

provider
connector · ai connector
prompt
textarea · required
system
textarea
memory
select · one of none | window
memoryWindow
number
maxIterations
number
tools
tools
into
text · required

Calls leave from the launcher, not the page -- no profile proxy or cookies. Tools run with the same limits as their standalone steps, and an approval tool gates every call behind a yes/no over Telegram.

Control flow and output

Branch, repeat, pause, compose, and tell someone. Run automation calls another automation's steps inline, so a flow you use everywhere is written once. A notify step is how a run that finished at three in the morning reaches you.

If

if

If {condition.left} {condition.op}

condition
condition · required
then
steps
else
steps

Loop

loopno browser needed

Loop {mode}

mode
select · required · one of times | forEach
times
number
items
text
maxIterations
number
body
steps

Wait

waitno browser needed

Wait

ms
number
minMs
number
maxMs
number

Send message

notifyno browser needed

Send message

connector
connector · message connector
message
textarea · required
subject
text

Sent from the launcher, not from the page -- it does not use the profile's proxy or cookies.

Run automation

callAutomationno browser needed

Run automation {automationId}

automationId
automation · required

What every step carries

Six fields belong to every step regardless of type, which is why they are not repeated 22 times above.

id
Required, and unique across the automation — the run log addresses steps by it, so never reuse one.
label
Your own name for the step, shown instead of the generated summary.
enabled
Off skips the step without deleting it.
timeoutMs
How long this one step may take.
onError
stop, continue or retry.
retries
How many times to retry. Capped at 5.

Variables and conditions

Any field marked as interpolated substitutes templates before the step runs: {{vars.name}} for something an earlier step stored, {{profile.email}} and {{profile.password}} for the profile's own saved credentials, and {{loop.item}} inside a loop.

One field is deliberately excluded. A Run script step never interpolates its script — templates are not substituted into code, so a value that happens to contain a quote cannot rewrite what runs.

Conditions are not an expression language, on purpose. One interpolated left side, one of five comparators, and one literal right side — enough to branch on what a page says, and too little to become a language nobody can read six months later.

equalsnotEqualscontainsexistsselectorExists

Parameters

An automation can declare parameters — the inputs it asks for before it runs. A workflow that searches Dortmund and one that searches Essen should be one automation with a city parameter, not two copies of twelve steps.

Every parameter is readable from any interpolated field as a variable. A value can come from three layers — the automation's own default, under the profile's saved value, under whatever the run dialog or an agent supplies for that run — and the most specific one wins.

Secret parameters are masked in the interface and redacted out of the run record. List parameters become real arrays, so one can feed a loop's items directly.

texttextareanumberbooleanselectsecretlist

Schedules

An automation can carry a schedule: every N minutes (5 to 1440), daily at a wall-clock time, or weekly on the days you pick — against a list of profiles it runs on. No cron strings; the modal, the card badge and an agent authoring over MCP all read and write the same small shape.

The schedule fires while the launcher is running. It is part of the automation itself, so creating or changing it over the API is the same create and update call.

Runs and notifications

Every run is recorded: which profile, which steps ran, per-step timing, and the verdict — succeeded, finished with errors, failed, or cancelled. A partial run did every step it could and tells you which one it could not, which is a different thing from a failure.

Starting a run returns as soon as it is registered; it continues in the background and lands in the history, which an agent reads back with the runs tool.

When a run finishes — at three in the morning, on a schedule, or started by an agent — Argus can send the verdict to Telegram: what ran, on which profile, and whether it succeeded. One bot serves the whole workspace, but every message is personal: you link your own chat once, then subscribe per automation to every run or failures only. Your subscriptions never ring a teammate's phone.

Automations can also notify through any messaging connector when they finish, separately from the notify step — a run that fails halfway still tells someone, even though the step that would have said so never ran.

Authoring over the API

Automations can be written by hand in the launcher or created over the local API — which is what a coding agent does. Ask for the step vocabulary first; the field names are not guessable, and a tree that does not validate is refused.

POST/v1/automations/create
{
  "name": "Sign in",
  "steps": [
    { "id": "s1", "type": "goto", "url": "https://example.com" },
    { "id": "s2", "type": "waitFor", "for": "selector", "selector": "h1" },
    { "id": "s3", "type": "extract", "selector": "h1", "what": "text", "into": "heading" }
  ]
}

Creating, changing and deleting an automation needs a key with no folder scope, because automations are shared across every folder and have none of their own. A folder-scoped key may still list, read and run them.

Parameters and schedules ride the same calls — parameters and schedule are fields of create and update, validated exactly the way the editor validates them. Running one returns as soon as the run is registered — it continues in the background, lands in the run history, and a notify step or a Telegram subscription is how it reaches you when it is done.

Build one

The editor is in the launcher, under Automations. Connect a model and a messaging service first if you want the AI and notify steps.