Skip to content

Record a workflow once. Replay it forever, for free.

OpenAdapt is a demonstration compiler. You perform a GUI workflow one time. It compiles that demonstration into a deterministic, self-healing script that runs locally, verifies real effects against the system of record, and halts rather than guessing. An API compiler for the API-less long tail.

Get started in 5 minutes See how it works


Who it is for

OpenAdapt is built for regulated, repetitive desktop and web work: the 500th patient referral this month, the daily claims batch, the mortgage file that moves through six screens the same way every time. Work that a person has already figured out, that runs many times, and where a wrong action has a real cost.

A computer-use agent re-reasons through the whole task with a large model on every run. That is the right shape for a task nobody has automated before, and the wrong one for a workflow you run a thousand times. OpenAdapt compiles the demonstration instead, so the model is only consulted to repair the script, not to drive it.

It runs where that work lives: a web app (the reference Playwright backend), a native Windows desktop via UI Automation, or a pixel-only Citrix/RDP session — all behind one backend protocol, with desktop and Citrix the differentiated wedge.


Three things that make it different

  • Deterministic $0 replay


    A compiled workflow replays with zero model calls on the healthy path. Local template match, OCR, and geometry resolve each step in milliseconds. No per-run API cost, no network round trip, no cloud dependency.

    The demonstration compiler →

  • Effect verification


    The screen is not the system of record. A save banner can paint over an empty database. OpenAdapt can verify each write against the real record (a FHIR or REST API, a document store) and halt on a mismatch.

    Effect verification →

  • Halt, don't guess


    When the screen stops matching expectations, the run stops with a report instead of clicking the wrong thing. An identity gate refuses to act when it cannot tell two records apart.

    The identity gate →


The shape of it

flowchart LR
    A([Demonstrate<br/>once]) --> B[[compile]]
    B --> C{{Workflow<br/>bundle}}
    C --> D[[replay]]
    D -->|healthy path| E([Deterministic<br/>$0 run])
    D -->|UI drifted| F[[self-heal]]
    F -->|repair as diff| E
    D -->|cannot verify| G([Halt safely<br/>+ report])
    G -->|demonstrate the fix| H[[learn]]
    H -->|governed & gated| C

Each compiled step carries a template crop, an OCR label, geometry landmarks, and postconditions derived from what the demonstration actually changed on screen. At replay a resolution ladder tries them in order. Healthy scripts never leave the first rung. When the UI drifts, a lower rung still finds the target and the fix is written back to the bundle as a reviewable diff. When nothing matches, the run halts safely rather than guess.

A halt is not a dead end. Demonstrate the fix once and openadapt flow teach compiles that correction back into the workflow (through the same identity, effect, and policy checks that gate everything else), so it does not halt on that situation again. The correction is induced as a guarded branch, a regression gate proves it weakens nothing, and only a verified revision is promoted (an underdetermined or unsafe fix is refused, not guessed at). It is deterministic and runs at $0 with the reference inducer. See The halt-learn loop.


Measured, not claimed

We publish the numbers and the failure modes. Two representative results, same success check on both arms:

Task Compiled replay Computer-use agent
OpenEMR (real third-party EMR, add-patient-note, 18 steps) 20/20, 39.2s p50, $0/run, 0 model calls 10/10, 70.4s p50, ~$0.55/run
MockMed (CI-reproducible triage task) 100/100, 4.9s p50, $0/run, 0 model calls 20/20, 37.5s p50, ~$0.27/run

The compiled arm costs $0 per run, every run, forever. Full methodology and caveats live in the openadapt-flow benchmark docs.

Stated honestly

Compiled replay has real limits, and we test for them by attacking our own system before anyone else does. A 125% browser zoom currently zeroes replayability. Instance-specific screen state means per-tenant re-recording. On pure-pixel substrates a look-alike identifier can force a halt rather than a verify. The full list is in what it does not do yet.


Start here

  • Get started

    Install and compile your first workflow in about five minutes.

  • Core concepts

    The compiler model, the capability ladder, effect verification, the identity gate, and how safety is enforced.

  • Guides

    Record your own app, handle parameters and secrets, write a policy, and deploy on-prem.

  • Reference

    Every openadapt flow verb, the bundle format, and configuration.