Skip to content
A connector, two actions and a workflow on one rising line

your domain,
your solution,
your tool

Build the harness you need, from anything, for anything.

Chain scripts, CLI tools, containers, APIs, message queues, any programming language, AI agents and models: anything that runs becomes a step in your workflows. You write the chain in a small JSON file, by hand or with AI; itero (Latin: “I repeat”) runs it when something happens or on a schedule, with waiting, retries, guards, undo and a record of every run.

Something to keep an eye on: a site, a local server, a backup. Every minute itero asks it; when it does not answer, you get a notification saying why. An action, actions/check-site:

#!/bin/sh
curl -fs --max-time 10 -o /dev/null "$url" || { echo "$url is down" >&2; exit 1; }

and a workflow, workflows/beacon.json:

{ "on": [{ "schedule": "* * * * *" }],
"steps": [{ "#check-site": { "url": "http://localhost:3000" } }],
"error": [{ "#notify": { "title": "beacon", "text": "$why" } }] }

With {} in an itero.config.json beside them, itero daemon runs it. The beacon example goes further: many sites and the disk’s free space, told only when something changes.

A model is one more program to chain, used only where judgment is needed:

{
"on": [{ "event": "mail.received" }],
"steps": [
{ "#ai": { "ask": "Summarize this mail in one line, and rate it: important, normal or spam." } },
{ "#notify": { "on": [{ "$rating": "important" }], "title": "$from", "text": "$summary" } }
]
}

A mail arrives; #ai, a few lines of shell around curl, asks a model to read and rate it, and prints {"summary": "...", "rating": "important"} into the run’s state. The rating decides the rest: you hear only about the important mails, and the spam and the ads pass quietly.

Anything is a step

An action is an executable in any language. It reads its values as environment variables, prints JSON, and its exit code says how it went: done, not yet, or broken.

Plain files in git

Nothing lost, everything iterated: workflows and actions are plain files you keep in git, share as folders and improve. A run keeps the version it started with.

Runs on its own

Messages, schedules and watched files start runs. A step can wait for a message that comes later; a lost step runs again; a broken one is undone.

A record of everything

Every message and answer is in a SQLite journal, every step in a JSON log. itero runs tells a run’s story, step by step.

  • cron runs a command at a time; itero chains steps, waits for messages, retries, undoes and keeps a record.
  • n8n, Zapier offer the nodes they built; in itero any program is a step, and the workflow is a file you keep.
  • Temporal, Airflow need their SDK and a server; itero is one binary, and a step is whatever runs on your machine.