Open source · AGPL-3.0 · Self-hostable

Turn any website into an API. By showing, not coding.

Record a workflow once in your real, logged-in browser — or ask an AI agent to do it. Stepped compiles it into a deterministic, self-healing automation that is simultaneously a typed REST endpoint, an MCP tool, and a scheduled job.

~ — zsh
$ curl -fsSL https://stepped.ai/install | sh

  ⛰  Stepped — turn any website into an API

   Node 23 runtime ready (provisioned automatically)
   wrote ~/stepped/.env with generated secrets
  · starting Stepped…
   Stepped is up  →  http://localhost:7431

     next:  open the URL, or run  stepped onboard

$ stepped onboard

   admin account created
   extension paired — code 481-062
   first recording compiled → POST /api/w/demo-invoice/run

0 LLM calls on the happy path · under 30 s from recording to endpoint · your data stays on your instance

How it works

Record. Replay. API.

Show Stepped the task once. From then on it’s software — deterministic, versioned, callable by anything.

1 · Record

Hit Record in the Chrome extension and do the task once — in your real browser, logins included. Or ask the AI agent to do it while the recorder watches. Steps stream live into the sidepanel with screenshots and click targets.

2 · Replay

Stepped compiles the recording into a workflow: intent-level steps, ranked selectors, verification effects, typed variables. Replays are deterministic — zero LLM calls when the site behaves.

3 · API

The same artifact is instantly a typed REST endpoint, an MCP tool, and a cron schedule. From stop-recording to a working endpoint: under 30 seconds.

The healing ladder

Deterministic first. AI only when the site changes.

An AI agent doing a browser task burns 50–200 LLM calls, every run. Stepped replays with zero — and when a site ships a redesign, it escalates one rung at a time, spending the minimum needed to recover. Every heal becomes a reviewed patch, so the workflow gets stronger with age.

$0 happy path · healed runs p95 < $0.01

  1. L0

    Primary selector

    ~0 ms · $0

    The recorded selector hits and the element fingerprint checks out. The normal case.

  2. L1

    Ranked fallbacks

    <50 ms · $0

    Recorded alternates — test id, ARIA, text, CSS, XPath — tried in order, each verified before use.

  3. L2

    Structural matching

    <1 s · $0

    Weighted similarity scoring finds the element even after markup shuffles. Still no AI.

  4. L3

    One-call LLM pick

    ~$0.002

    A single structured call: step intent and recorded fingerprint in, one element out.

  5. L4

    Scoped agent

    cents · rare

    An agent takes over exactly one step. Success is defined by the step’s recorded effects.

  6. L5

    Human gate

    your call

    The run parks and notifies you. Finish the step live — 2FA, captcha — and replay continues.

Three surfaces, one artifact

Every workflow is an API

No exports, no glue code. The moment you save a recording, it answers as a REST endpoint, shows up as an MCP tool, and can run on a schedule.

Typed REST

Variables become the request body. Outputs — even files — come back.

curl -X POST \
  https://app.stepped.ai/api/w/tripo-text-to-3d/run \
  -H "Authorization: Bearer $STEPPED_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "prompt": "a low-poly fox" }'

# → { "status": "succeeded",
#     "outputs": { "model_file": ".../fox.glb" } }

MCP tool

One line and every workflow is a tool in Claude Code, Cursor, or any MCP client.

claude mcp add --transport http stepped \
  https://app.stepped.ai/mcp

# new recordings appear automatically
# (listChanged) — plus meta-tools like
# create_workflow_from_goal

Schedule

Timezone-aware cron with preset variables, retries, and canary health runs.

POST /api/w/weekly-report/schedule
{
  "cron": "0 7 * * 1",
  "timezone": "Europe/Berlin",
  "variables": { "range": "last-week" }
}

# notified only on heal or failure

For AI agents

Built to be found — and called — by machines

Point your agent at Stepped once. Community workflows are published for both humans and machines, and any of them can land in your own instance with one click.

  • Browsable — every community workflow has a public page at /w/<slug>: a step-by-step guide plus ready-to-copy API docs.

  • Discoverable/llms.txt and the sitemap index every public workflow, so agents find them without scraping.

  • Importable — paste a workflow URL into any self-hosted instance for one-click import. Bundles (.stepped.json) are secret-free by construction.

  • Callable — connect via MCP and every workflow is a typed tool. Agents can even teach new ones: create_workflow_from_goal records while the agent works.

GET /llms.txt
# Stepped — community workflows.
# Each is callable: POST /api/w/<slug>/run
# or as an MCP tool via /mcp

/w/tripo-text-to-3d
  Tripo AI: text prompt → 3D model download
  vars: prompt (string) · out: model_file (file)

/w/chatgpt-image
  ChatGPT: prompt → generated image file
  vars: prompt (string) · out: image (file)

/w/google-doc-to-pdf
  Google Docs: create, fill, export as PDF
  vars: title, body · out: pdf (file)

Self-host

Your machine. Your data. One command.

No Docker required — the installer provisions a Node 23+ runtime if needed, writes a config with generated secrets, and starts Stepped with its built-in SQLite database. Nothing else to install, no external services to sign up for.

  • First-run wizard: admin account, optional AI provider, extension pairing
  • Works AI-free — connect Anthropic, OpenAI, or local Ollama only if you want healing L3+
  • Multi-user with roles, invites, API tokens, and a full audit log
Read the source on GitHub
recommended ≈ 2 minutes
curl -fsSL https://stepped.ai/install | sh
or with Docker, for servers
git clone https://github.com/myfoxit/stepped
cd stepped && docker compose up -d

# hardened compose: loopback-only ports,
# cap_drop ALL, resource ceilings
# → http://localhost:7431

The extension

Record in your real browser

Since Chrome 136, external tools can no longer attach to your default profile — an extension using chrome.debugger is the only way to automate the browser you’re actually logged into. Stepped’s recorder and replayer live there: your sessions, your cookies, your fingerprint — no separate robot browser to babysit.

Chrome Web Store Coming soon Manual install from GitHub Releases

FAQ

Questions, answered

Self-host or cloud?

Both. Stepped is built to be self-hosted — one command, your machine, your data. A hosted cloud at app.stepped.ai is coming for teams that don’t want to run anything. The software is identical.

Is it open source?

Yes — the entire stack (server, web app, Chrome extension, CLI) is licensed under AGPL-3.0 and developed in the open on GitHub.

Do my credentials leave my machine?

No. Recordings and sessions stay on your own instance. Passwords are typed secret at capture time — encrypted at rest, masked in logs, and excluded from exports. Shared .stepped.json bundles are structurally secret-free: there is simply no field where a session or credential could travel.

What happens when a site changes?

The healing ladder kicks in — selector fallbacks and structural matching first (free, deterministic), a one-call LLM element pick only if those fail, then a scoped agent, then a human gate. Every heal is recorded as a reviewed patch, so the workflow comes out stronger.

Can AI agents use it?

That’s the point. Connect once via MCP and every workflow becomes a typed tool in Claude Code, Cursor, or any MCP client — new recordings appear automatically. There’s also a plain REST API, and agents can teach new workflows with create_workflow_from_goal.

What does it cost?

Self-hosting is free, forever — AGPL-3.0. Replays cost $0 in LLM spend on the happy path by design. The hosted cloud will be paid when it launches; self-hosters lose nothing.

Show it once. Call it forever.

Two minutes from curl to calling a website as an API.