To automate a legacy Windows app that has no API, you need something that can use the app the way a person does: read the screen, click, type and check the result. Sai does that on a Windows computer, from one HTTP call or MCP tool call your agent makes. It asks before risky steps, and a run that worked can be saved as code and replayed with new inputs.
What a Windows desktop automation API is
A Windows desktop automation API lets your code drive a desktop application through its user interface instead of through a programming interface of its own. You send the task, the API operates the app's windows, fields and menus, and you get back the result.
This matters because most business software was never connected to anything. In MuleSoft's 2025 Connectivity Benchmark, the average enterprise ran 897 applications and only 29% of them were integrated (MuleSoft, 2025). Old Windows clients for accounting, ERP, claims and scheduling make up a large part of that gap.
Why legacy Windows apps resist automation
- No API and no import. The only way in is the screen: the vendor never shipped an API, or the version you run predates it.
- Controls that UI Automation cannot see. Standard Win32, WinForms and WPF controls are exposed to Microsoft UI Automation, but custom controls need a provider written by the app's developer (Microsoft). Owner-drawn grids and third-party control suites often show up as one blank pane.
- Frameworks that need their own bridge. pywinauto's win32 backend covers MFC, VB6 and VCL apps and its UI Automation backend covers WinForms, WPF and Qt5, but it does not support Java Swing (Apriorit). Java clients need the Java Access Bridge.
- Remote sessions are just pictures. In Citrix or Remote Desktop, Power Automate for desktop can only see an image of the remote screen, so Microsoft points to image and text recognition instead (Microsoft).
- Drivers that went quiet. WinAppDriver's last release was built on .NET 5, and its tracker had more than 1,000 open issues when users asked Microsoft about its future (Microsoft Q&A).
Jobs agents hand to legacy Windows apps
- Entering bills, orders or claims from a CSV into a desktop accounting or ERP client.
- Looking up a customer, policy or part number and returning the fields your agent needs.
- Running an end-of-day report in the app and saving the export to a shared folder.
- Updating records in bulk after your agent decides what should change.
- Copying data between two desktop apps that were never connected.
Ways to automate a legacy Windows app, compared
| Approach | What you build | Custom or owner-drawn controls | Citrix or RDP | When the UI changes | Called from an agent |
|---|---|---|---|---|---|
| pywinauto or FlaUI | Python or C# scripts against UI Automation | Only if the control exposes itself | No, the app is an image | Update control lookups | You write the wrapper |
| WinAppDriver or Appium | Selenium-style tests on Windows | Only if the control exposes itself | No | Update locators | You write the wrapper |
| Power Automate Desktop or UiPath | Recorded or designed flows, with image and OCR fallback | Through image matching or computer vision | Through image matching or computer vision | Re-record or fix the flow | Through the vendor's orchestrator |
| AutoHotkey or coordinates | Keystrokes and fixed clicks | Yes, blindly | Yes, blindly | Breaks | You write the wrapper |
| Sai | A plain-English task | Yes, works from what is on screen | Yes, works from what is on screen | Re-plans the step; saved code is repaired from the failed run | One HTTP call or MCP tool |
If the app's controls are exposed and the job runs thousands of times a day, a pywinauto or FlaUI script is cheaper per run. A Gartner analyst has warned that AI agents can cost far more than RPA bots on high-frequency work (Gartner via CXOToday). That is why Sai lets you save a working run as code instead of reasoning through every click again.
How to automate a legacy Windows app with Sai
- Put the app on a computer Sai can use. Install it on a Windows cloud computer Simular hosts, or run Sai on your own Windows PC where the app already lives. Check the app's license terms for a hosted machine.
- Write the job as a task. Name the screens, the input file and what "done" looks like. The full prompt is in the Start with a prompt tab above.
- Approve the sign-in. Sai sends a link for the app's login, so the password never passes through your agent. See approvals.
- Approve the first commit. Ask Sai to stop before the first save or post, check the filled form, then let it continue.
- Save it as code. Ask Sai to save the steps as a replayable skill with the input file as a parameter. Next time your agent runs the skill instead of the whole task.
On the official OSWorld 2.1 leaderboard, which tests agents on real desktop apps, Sai has the highest partial score, 79.38%, at $14.34 per task. See the leaderboard and method.
Call it from your agent
From a coding agent, add the MCP server once, then ask for the job in chat:
claude mcp add sai -e SAI_API_KEY=sapi_YOUR_KEY -- npx -y @simular-ai/sai-mcp
From your own agent or backend, send the task to POST /v1/agents/message. Name the inputs so the run can become a reusable skill, and record the steps:
curl -s https://api.simular.ai/v1/agents/message \
-H "Authorization: Bearer $SAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"message": "In Acme Ledger, enter every bill in {{file}} under Vendors > Enter Bills. Ask before the first save.",
"options": { "inputs": { "file": "bills.csv" }, "recordTrajectory": true },
"wait": false
}'
Attach the CSV with /upload, read the result with /turns, and turn a good run into code with learned code (research preview). The quick start walks through the first call.
Limitations
- Slower than an API. Working from the screen takes seconds per step. If the vendor offers an API or a database export, use that.
- The app has to run on the computer Sai uses. Apps tied to one office PC need Sai on that PC; Simular's cloud computers run Windows or Linux.
- Learned code is a research preview. It cannot ask a person anything mid-run, so keep approvals in the agent-driven run until you trust the job.
- Sign-ins stay human. Link-only approvals, such as typing a password, always wait for a person, even in unattended runs.
Related use cases: give your agent a computer as a tool, enter CSV rows into a web app with no import and turn a runbook into a scheduled job.
Last reviewed October 17, 2026.