Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
AUV means Application Use Via ....
- Apple Music Application Use Via
auv-apple-music... - macOS Media Control Use Via
auv-media-macos... - Balatro (yes the game Balatro) Application Use Via
auv-game-balatro... - ... more, waiting for your implementation.
Think of it as a programmable computer use, without agents.
Table of Contents
- Getting Started
- Understand AUV
- Why even build AUV?
- Capability Matrix
- Development
- Related
- Acknowledgements
- Special Thanks
- Star History
- License
Getting Started
Install
Install directly from GitHub:
Third-party Protobuf sources are included in the repository; Cargo installs do not require Buf or a separate Protobuf dependency-generation step. See the macOS Git-install verification.
After installation, use the auv CLI directly:
Setup
macOS
OS permissions are required to be granted to the process that launches AUV, usually your terminal app.
Open System Settings -> Privacy & Security and enable:
| Permission | Needed for |
|---|---|
| Accessibility | AX tree reads, focused element control, keyboard/pointer automation. |
| Screen Recording | Screenshots, OCR, visual inspection, and evidence capture. |
| Automation | AppleScript/System Events app activation and foreground fallback paths. |
After changing permissions, restart the terminal process and rerun:
Understand AUV
For Cua, agent-browser, and
similar computer-use projects, it is common to execute screenshot, read image, click, type,
wait, and follow-up verification steps in sequence, then ask LLMs or agents to judge the next move.
flowchart LR
A[Agent] --> B[screenshot]
B --> C[read image]
C --> D[decide next step]
D --> E[click]
E --> F[wait]
F --> G[type]
G --> H[verify]
H --> D
Many of those repeated sequences can be squashed into reusable GUI operations. Opening an app, waiting for readiness, filling a form, and checking the result should be callable as one command instead of spending tokens on the same step-by-step loop every time.
Modern agents often use skills or project instructions to orchestrate tool calls, CLIs, and scripts. But built-in computer-use surfaces, such as OpenAI Computer Use or Claude Computer Use, are still primarily interactive model-tool loops, not scriptable GUI automation libraries.
Similar to Playwright, what if we could organize those actions into executable scripts, reusable?
• Ran screenshot
└ saved screen.png
• Ran read image screen.png
└ form is visible
• Ran click "Email"
└ clicked
• Ran type "user@example.com"
└ typed
• Ran screenshot
└ saved after.png
• Ran verify form state
└ ready
• Ran screenshot
└ saved page-1.png
• Ran OCR visible rows
└ 12 rows
• Ran scroll
└ scrolled down
• Ran OCR visible rows
└ 10 rows, 4 repeated
• Ran guess when to stop
└ uncertain
• Ran click target
└ clicked
• Ran screenshot
└ saved after-click.png
• Ran semantic check
└ mismatch
• Ran retry manually
└ repeated tool loop
AUV expects agents to write, test, and improve reusable GUI automation for E2E tests and rapid application actions.
In fact, AUV is not a computer-use agent. It does not ship an agent or harness. It offers tools, CLIs, drivers, and verifiable observable results so agents can build reusable GUI operations.
AUV is meant to work with coding agents and agent products such as:
That means:
- If your agent can call a CLI, AUV can be used as computer use.
- If your agent can write code, AUV can move repeated GUI work into reusable Rust or JavaScript/TypeScript operations. Python bindings remain planned. Once a GUI flow is finalized as an operation, repeated execution can approach zero reasoning-token cost.
Why even build AUV?
AUV born from the grounding knowledge of building general gaming agents for Project AIRI, since 2024, we tried to build agents to allow LLMs to play the following games, you can find how we implement the agents in the following repos:
There are more games we implemented where you can find in Project AIRI organization, but these four requires YOLO, OCR, screen understanding, and computer-use capabilities.
Now you have the framework to build for any applications, games.
Since Vercel published the agent-browser, we fell in love with it and have it assisted agents to build many web projects, but we found that the loop it requires for agents to call agent-browser CLI to execute the commands is too slow and inefficient, while in computer use world, many operations can be repeated thousands of times, just like how Playwright/Vitest would allow us to write E2E test for applications, why don't we expand this idea of writing code to control application to computer use world?
Capability Matrix
What AUV can do, compared to other computer-use projects.
- ✅: implemented and exposed by a current public repository surface.
- ⚠️: implemented with the limit shown in the table or notes.
- ⏳: planned, but not implemented.
| Capability | AUV | Cua | OpenBridge (KWWK core) | Playwright |
|---|---|---|---|---|
| Agent model | 💡 BYOA | 💡 BYOA + built-in agent | 💡 OpenBridge built-in agentKWWK is agent-free | 💡 BYOA + built-in Test Agents |
| Scriptable | ✅ Rust + JS/TS⏳ Python | ✅ Python/TypeScript/Rust SDKs | ✅ Swift package | ✅ JS/TS/Python/Java/.NET |
| Native desktop drivers | ✅ macOS/Linux/Windows⏳ Android/iOS | ✅ macOS/Linux/Windows | ⚠️ macOS only | ❌ browser only |
| CLI | ✅ | ✅ | ❌ | ✅ |
| MCP | ✅ | ✅ | ❌ | ✅ browser MCP |
| Run / trace recording | ✅ runs + tracing + artifacts + OTEL export | ✅ per-action trajectories | ❌ | ⚠️ test traces + artifacts |
| Display / window capture | ✅ macOS/Linux/Windows | ✅ macOS/Linux/Windows | ✅ macOS | ✅ browser only |
| OCR | ✅ macOS Vision/Linux Tesseract/Windows OCR | ⚠️ BYOK | ❌ | ❌ |
| Template image localization | ⚠️ typed result contract only | ⚠️ no dedicated tool | ❌ | ⚠️ visual snapshot comparison only |
| Accessibility tree | ✅ macOS AX/Linux AT-SPI/Windows UIA | ✅ macOS AX/Linux AT-SPI/Windows UIA | ✅ macOS AX | ⚠️ browser only |
| Accessibility actions | ⚠️ platform-specific focus/select paths | ✅ | ✅ | ⚠️ browser only |
| Mouse / click | ✅ macOS/Linux/Windows | ✅ | ✅ | ⚠️ browser only |
| Background pointer input | ✅ macOS❌ Linux/Windows | ✅ macOS/Linux/Windows, best effort | ✅ macOS background | ⚠️ browser only |
| Foreground pointer input | ✅ macOS/Linux/Windows | ✅ | ✅ | ⚠️ browser only |
| Keyboard | ✅ macOS/Linux/Windows | ✅ | ✅ | ⚠️ browser only |
| Scroll | ✅ macOS/Linux/Windows | ✅ | ✅ | ⚠️ browser only |
| Scroll native lists | ⚠️ reusable library and app integrationsGeneric CLI deferred | ⚠️ no dedicated tool | ❌ | ⚠️ browser only |
| Action evidence | ✅ attempts + fallback + disturbance + separate verification | ✅ structured tool outputs + trajectories | ⚠️ structured metadata | ⚠️ assertions + traces |
| YOLO / Custom Models | ✅ | ✅ | ❌ | ❌ |
- Scroll scan is a major reason AUV exists. Most desktop automation stacks can
scroll or read a screenshot, but they do not turn a native app's visual list into
page records, row candidates, crop artifacts, OCR fragments, and inspectable
stop reasons. AUV's current scroll-scan implementation is still contract work,
so the old public
scan window-regionCLI was removed until the reusable API is clear. - Feedback means the automation returns machine-readable evidence after an attempt: what input path was used, what changed, what artifacts were captured, whether verification passed, and why an operation should retry, stop, or fail.
Development
auv
To update vendored Protobuf dependencies, see the Protobuf source distribution reference.
@auv-js/sdk
Prerequisites
[!NOTE]
If you use proto, then
, this should help you install necessary tools.
Documentation
After you change headings in the root or package READMEs, run pnpm docs:update.
This command updates all three tables of contents.
Useful entrypoints:
Use docs/TERMS_AND_CONCEPTS.md for shared vocabulary. Durable design and
evidence notes live under docs/ai/references/.
Related
[!NOTE]
This project is part of the Project AIRI ecosystem.
Acknowledgements
Special Thanks
Special thanks to all contributors for their contributions to auv ❤️