RPA replacement, the honest version
Replacing RPA with accessibility automation is an input-layer swap, not a selector remap.
Most pages on this topic stop at “accessibility APIs are more reliable than brittle selectors.” That is true and it is also too vague to plan a migration around. Here is what actually changes when you swap RPA for accessibility automation, what specifically transfers from your existing UiPath, Power Automate Desktop, Automation Anywhere, or Blue Prism estate, and why re-recording is faster than selector authoring even though it sounds like more work.
Direct answer (verified 2026-05-07)
Yes for Windows desktop workflows on legacy systems with no API. None of the existing RPA artifacts transfer in their original format. UiPath .xaml, Power Automate Desktop .pad, Automation Anywhere TaskBots, and Blue Prism Processes all get re-recorded against the same applications. Re-recording takes hours per workflow because the input layer is a recorder that filters down to six normalized intent events at the accessibility layer (recording_processor.rs:250), and the runtime is an 871-line replay executor with no model in the loop.
Verify it yourself. The runtime is open at github.com/mediar-ai/terminator. The accessibility binding is the uiautomation Rust crate, version 0.22.2 in Cargo.lock. Productized brief at www.mediar.ai/llms.txt.
The argument in one paragraph
RPA was built around an authoring model where a human sits in a Studio-style IDE and hand-tunes selectors per control until the workflow replays cleanly. The runtime resolves those selectors at replay; on a miss, the workflow throws. The maintenance cost is linear in the number of selectors and roughly proportional to the patch cadence of the underlying applications. Accessibility automation moves the authoring boundary upstream. A human records the workflow once. A normalization layer discards everything that is not intent (mouse coordinates, raw keystrokes, hover events) and keeps six intent events. A model converts those events into a deterministic replay artifact. The runtime walks a multi-strategy cascade against the live accessibility tree on every step. The maintenance cost stops being proportional to selector count and becomes proportional to genuinely structural UI changes, which are rarer than the marketing of either side admits.
That is the entire argument. The rest of this page is what it looks like in source code, and what transfers (and does not) when you migrate off each of the four major RPA platforms.
The input-layer swap, in code
This is the recorder's meaningful-event filter. Everything not in this list is dropped before the workflow is authored. Six events survive; the rest is treated as noise. Toggle to see what an RPA recorder keeps for the same workflow.
What the recorder keeps for one click into SAP
every mouse move: recorded with screen coordinates every keystroke: recorded with timing click events: recorded with x, y screen position + control selector text input: recorded keystroke by keystroke the resulting selector for one click: a 12-attribute XPath like /pane[@aaname='SAP Easy Access']/window[@cls='afxoldgrid42']/... /button[@automationid='btn_post' and @ctrlid='1234'] when the SAP patch on the next Tuesday changes "btn_post" to "btn_postfri": the selector throws. the workflow halts. someone re-authors.
- Every cursor movement is recorded
- Every keystroke is recorded with timing
- One control gets a 12-attribute XPath selector
- Patch Tuesday rename of an automation id throws the activity
apps/desktop/src-tauri/src/recording_processor.rs (lines 250 to 260)
// apps/desktop/src-tauri/src/recording_processor.rs:250
fn is_meaningful_event_type(event_type: &str) -> bool {
matches!(
event_type,
"button_click"
| "browser_click"
| "text_input_completed"
| "browser_tab_navigation"
| "application_switch"
| "file_opened"
)
}File is open source. Clone github.com/mediar-ai/terminator andgrep -n is_meaningful_event_typeto verify.
“The recording layer is what determines whether a workflow survives a UI patch, not the runtime. RPA recorders capture pixel-level events and bake selectors per control. The accessibility recorder captures six intent events and the runtime walks a four-strategy cascade against the live UI Automation tree on every step.”
recording_processor.rs:250-260, github.com/mediar-ai/terminator
What actually transfers, per RPA vendor
None of the existing RPA artifacts move in their native format. That sounds expensive, and the operational answer is: it is, but less than you would expect, because the alternative (porting selectors one by one) is not faster either. Below is the artifact-by-artifact view of what the migration looks like across the four major RPA platforms.
UiPath classic
The artifact is a .xaml workflow file in Studio, published as a NuGet package to Orchestrator and scheduled there. Selectors live as XPath-style strings inside the .xaml; resolved at replay by the Robot. None of this transfers. The new artifact is a TypeScript workflow file checked into git, queued in Postgres, and replayed by the executor crate.
Power Automate Desktop
The artifact is a .pad file under the user's profile, executed by the PAD runtime against Windows UIA + image-matching fallback. The Recorder captures coordinates and selectors; UI changes break the recorded action set. None of this transfers. Workflows get re-recorded once into the accessibility-only path.
Automation Anywhere
The artifact is a TaskBot or MetaBot file (.atmx for v11, .json for A360) executed by the Bot Runner. Recorders include Object Cloning (UIA-aware) and Image Recognition. The selectors and the screen-anchor logic don't transfer. Re-recording takes the same legacy app and routes input through a single accessibility-only recorder instead.
Blue Prism
The artifact is a Process and a set of VBOs (Visual Business Objects) in the Blue Prism database, executed by the Runtime Resource. Application Modeller hangs spy modes off Win32, AA, and HTML. Spied objects don't transfer; the VBO graph doesn't transfer. The new model captures the same workflow as a single recording and emits the runtime artifact from there.
What does transfer (across all four)
Three things, none of them artifacts: (1) the institutional knowledge of which workflows are worth automating and which aren't, (2) the test data and the production environments to run them against, (3) the access controls and credentials to the legacy systems. Everything else gets re-built. That sounds like a tax. It isn't, because re-building under the accessibility-only model takes hours per workflow, not the weeks of selector tuning the original RPA build cost.
The pipeline, end to end
Recording to runtime, in four stages. The model sits in stage three only. After that, the artifact is a deterministic TypeScript file and replay is plain code.
recording to runtime
Recording
human walks the workflow once on the same machine that runs it
Normalize
recorder filters to the six intent events at recording_processor.rs:250
Authoring
Gemini Vertex AI converts events into a TypeScript workflow file
Runtime
871-line executor replays the file via UIA, no model in the loop
Where this is not a fit
Two cases. First, stable browser-only workflows on modern SaaS where a clean OpenAPI spec is available. If the data lives behind a documented API, an API-first integration beats both RPA and accessibility automation on cost and reliability. Second, workflows that need true free-form planning that cannot be captured by recording (multi-day case investigations, fraud triage, novel exception handling). For those, agentic systems with the model at runtime are still the right answer, even with their latency and audit limitations.
The boundary is recording-shaped repetitive work on legacy desktop systems with no API. SAP GUI, Oracle EBS, Jack Henry, Fiserv, FIS, Epic, Cerner, eClinicalWorks, mainframe terminals through 3270 emulators. That is exactly where RPA was deployed in the first place, and exactly where the selector-versus-accessibility tradeoff actually shows up in maintenance cost.
How to evaluate the swap honestly
Run the comparison in production over a quarter on three numbers, scoped to a small bundle of representative workflows from your existing RPA estate.
- Time from request to first run. A new automation request lands in the queue. How many calendar days pass before the workflow is in production. RPA Center of Excellence teams typically report three to six weeks. Accessibility automation teams typically report two to seven days, and the gap widens for workflows on legacy desktop apps.
- Failed runs per 1,000 invocations. Selector breakage is the largest contributor for RPA in production at scale. The four-strategy cascade reduces this number; it does not eliminate it. Track it for both, on the same set of workflows.
- Developer hours per workflow per month. This is the number that decides which architecture compounds. If accessibility automation requires fewer hours of maintenance per workflow per month, the long-term TCO line crosses below RPA regardless of the runtime cost difference.
The third number is the only one that matters at scale. The first two are how you sell the budget. The reason to measure all three is that the architecture which wins on the third number is the one that pays back over the renewal cycle, which is where six-figure RPA contracts compound and where mid-enterprise teams quietly stall.
Bring one stalled RPA workflow on the call. We will re-record it live.
Thirty minutes against your real environment. The recorder, the authoring pipeline, and the 871-line executor running on a workflow whose selectors keep breaking. No slides; the actual artifact.
Frequently asked questions
Can RPA actually be replaced with accessibility automation, or is this just a marketing reframe?
For Windows desktop workflows on legacy systems with no API (SAP GUI, Oracle EBS, Jack Henry, Fiserv, FIS, Epic, Cerner, eClinicalWorks, mainframe terminals through emulators), yes, and the architectural difference is real. RPA's input layer is selector authoring: a developer or analyst sits in Studio and tunes XPath-style selectors per control until the workflow replays cleanly. Accessibility automation's input layer is recording plus a normalization step that discards mouse coordinates and raw keystrokes and keeps six intent events. The recorder lives at apps/desktop/src-tauri/src/recording_processor.rs in the open-source Terminator monorepo; the meaningful event filter is at lines 250 to 260. Replacing the input layer (rather than swapping vendor selectors) is what makes this honest as a category, not a reframe. Where this is not a fit: stable browser-only workflows on modern SaaS where an OpenAPI integration beats both RPA and accessibility automation on cost and reliability.
If I already have 200 UiPath workflows running, do any of them transfer?
None of the artifacts transfer. The .xaml files, the published NuGet packages in Orchestrator, the OCR resource paths, and the asset queues do not import into an accessibility-automation runtime. What does transfer: the operational knowledge of which 200 workflows are actually worth keeping (in our experience the answer is usually 60 to 120 of them, the rest were built when you had spare licensing capacity), the production credentials and environments, and the input data. The honest path is parallel. Keep stable UiPath workflows running on the workflows whose selector maintenance has been quiet for more than a quarter. Re-record the workflows where selector authoring has stalled new development for three months or more, where Patch Tuesday has been breaking the same Robot every month, or where the queue of new automation requests is permanently longer than the team that ships them.
Why is re-recording at the accessibility layer faster than selector authoring?
Two reasons sit in the source. First, the recorder discards everything that is not intent. Mouse moves, raw keystrokes, scroll deltas, and hover events are filtered out before authoring; only six event types survive (button_click, browser_click, text_input_completed, browser_tab_navigation, application_switch, file_opened, defined at apps/desktop/src-tauri/src/recording_processor.rs:250-260). The author does not waste hours tuning a recorded sequence to ignore the user's cursor wandering. Second, the runtime does not bake one selector per click. It walks a multi-strategy match cascade in apps/desktop/src-tauri/src/focus_state.rs lines 168 to 196: try automation or accessibility id, then window plus bounds, then visible text, then parent window focus. Most enterprise UI patches (a label rename, a panel reorder, a control id change) are absorbed by one of the first three strategies. RPA's Studio resolves a single recorded selector and throws on miss; the same UI patch that breaks a UiPath Robot does not break the executor.
What is the actual runtime that drives Windows after the model is done thinking?
The runtime is one Rust crate, the executor at crates/executor/src/services/typescript_executor.rs in the open-source github.com/mediar-ai/terminator monorepo. Run `wc -l` against that file and the result is 871 lines. Run grep against it for any LLM provider name (gemini, openai, claude, anthropic) and the count is zero. The executor reads the TypeScript workflow file off a Postgres queue, calls MCP execute_sequence on a separate process, and the Terminator SDK drives Windows UI Automation through the uiautomation Rust crate (Cargo.lock pins it at version 0.22.2, the same accessibility surface a screen reader uses on Windows). The model lives in the authoring path, where Gemini Vertex AI converts a recording into a workflow file. After authoring, no model is on the hot path. That is the property that makes audit possible and that makes runtime cost predictable.
How does this work for Power Automate Desktop, which already markets accessibility support?
Power Automate Desktop reads UIA properties at recording time and falls back to image matching when UIA does not return a usable selector. The mixed mode is what causes flow drift: a recorded action set that tested fine on the developer's machine fails on production because the image fallback is sensitive to font rendering, dark mode, and resolution shifts. Replacing PAD means re-recording in an accessibility-only path with no image fallback, which sounds restrictive but isn't, because Windows enterprise apps that ship with accessibility compliance (which the apps in scope all do, because regulators required it) expose enough UIA elements that fallback is rarely needed. If a control truly has no accessibility surface, that is a sign you should not be automating it; the same workflow will fail under PAD too, just nondeterministically.
Automation Anywhere has a UIA-aware Object Cloning recorder. Is the architectural difference real here too?
Yes. Object Cloning captures element properties at recording time and bakes them into selectors that the Bot Runner resolves at replay. It is the same selector-at-author-time pattern as UiPath, with a different file format. The architectural delta against accessibility automation is identical: a single recorded selector resolved against the live tree at replay versus a multi-strategy cascade walked from the focused element outward on every step. The migration story is also identical: TaskBots and MetaBots do not transfer, workflows get re-recorded once, the new artifact is a TypeScript workflow file, and runtime cost shifts from per-Bot-Runner licensing to per-minute usage at $0.75 per minute of executor time.
Blue Prism's Application Modeller has been doing 'spy at the accessibility layer' for fifteen years. What is actually different?
Application Modeller spies once at modelling time, persists the spied attributes as part of the VBO, and the Runtime Resource resolves the persisted attributes at replay. The spy is at the accessibility layer; the resolution is single-shot. Blue Prism's failure mode at scale is the same as UiPath's: when a control's spied attributes drift (an automation id renames, a class refactors, a parent window restructures), the action throws and a developer reopens Application Modeller, re-spies, and republishes the VBO. Accessibility automation reads the live tree on every step instead of resolving a persisted snapshot, with the four-strategy cascade absorbing most attribute drift silently. The governance story (audit logs, validation rules, role-based access) carries over in concept; the implementation does not. SOC 2 Type II and HIPAA compliance are in place on Mediar's side, but the artifacts and the monitoring tooling are different.
Is the runtime file really 871 lines? What is the rest of the system doing?
The 871 lines are the executor service that pulls workflows off a Postgres queue and calls MCP execute_sequence. The MCP server is a separate service that wraps the Terminator SDK; the SDK itself is a published Rust crate (terminator-rs). The recorder is a Tauri desktop app at apps/desktop in the same monorepo, with the recorder module at apps/desktop/src-tauri/src/workflow_recorder.rs and the tree-capture module at apps/desktop/src-tauri/src/ui_tree_capture.rs. The authoring layer (recording to TypeScript workflow file) runs in modal_apps and uses Gemini Vertex AI. The point of citing the 871-line executor is that the determinism property lives in one small file the buyer's RPA Center of Excellence can audit before signing. RPA vendors do not generally let buyers audit the equivalent file, because the runtime is closed source and the resolver code path is not documented.
What does this cost compared to UiPath, PAD, Automation Anywhere, or Blue Prism?
UiPath enterprise contracts at the RPA Center of Excellence level commonly land between $100K and $500K-plus for the first year, including Studio seats, attended and unattended Robot licenses, and Orchestrator tiers. Power Automate Desktop is bundled into Microsoft 365 plans for low-volume use; the per-Bot premium tier and Process Mining add-ons compound at scale. Automation Anywhere and Blue Prism are quoted similarly to UiPath at the same volume tier. Mediar charges $0.75 per minute of executor runtime, with a $10K turn-key program fee that converts to credits with a bonus, so the program fee is effectively prepaid usage. A workflow that runs ten minutes a day for a year costs roughly $1,575 in runtime. The mid-enterprise comparison the website cites lands at about 20% of UiPath cost; savings shrink at extreme concurrency and grow on long-tail workflows that selector-based RPA cannot keep alive.
We have a small RPA estate (under twenty workflows). Does any of this still apply?
Probably less of it. The accessibility-automation argument compounds with workflow count: a multi-strategy match cascade saves the most time when there are fifty workflows touching the same UI estate that all break together on a Patch Tuesday. With under twenty workflows, the operational delta is real but small, and the migration cost (re-recording everything once) is paid against a smaller benefit. Where small estates do benefit: when one of the twenty workflows is the one that has stalled for six months because the Studio team cannot find a stable selector for a particular SAP screen. That single workflow is worth re-recording in a few hours rather than waiting another quarter on selector engineering.
Adjacent guides on the same topic
Keep reading
UiPath alternative, accessibility API agents: a 5-question test for vendor claims
Five concrete questions a buyer can ask any vendor selling 'UiPath alternative + AI agents on accessibility APIs', with the source files that answer each one.
AI agents replacing UiPath RPA: the boundary line that decides whether the replacement holds
Where the model lives in the workflow lifecycle decides whether the replacement holds in production. Authoring time works; runtime breaks. Source-cited against the open executor.
Robotic process automation with UiPath, decomposed into the three products you actually license
Studio, Robot, Orchestrator. The mechanical job each one does, where each one fails in production, and what an accessibility-API executor swaps in.