The Agent Takes the Wheel

Bounded, dual-world desktop control for agents

Agents master the terminal, then go blind at the desktop GUI

Agents already write code and run terminal commands with real autonomy — but they can't click a dialog or fill a form with any grounded, bounded discipline. amplifier-bundle-cua closes that gap as a clean-room, Amplifier-native bundle: tools, agents, and recipes, not a foreign runtime.

And it isn't a sketch — the evidence is next.

Not a sketch — a working v0.1.0 backed by passing tests

Michael J. Jabbour built the whole bundle in 41 commits over 5 days (2026-03-06 to 2026-03-10), merged through 3 pull requests. The public repo michaeljabbour/amplifier-bundle-cua ships with 147 passing tests.

So what does all that capability actually hang off of?

41
commits over 5 days
147
tests passing (uv run pytest)
3
pull requests merged
1
sole author (all 41 commits)

The whole bundle hangs off one 'cua' tool

A single tool named cua exposes a fixed set of 12 desktop actions — observe the screen, then click, type, press keys, and scroll. Everything the argument leans on routes through this one surface.

First question: how does the agent actually see the desktop?

# the single "cua" tool — 12 actions observe semantic_tree screenshot screen_info window_info cursor_position click double_click type_text key_press scroll move_cursor

One Observation fuses the visual and the semantic worlds

A single Observation carries the visual world — screenshot, screen geometry, cursor, windows — together with the semantic accessibility tree of roles, labels, and values. Neither is treated as secondary; both are co-equal, first-class inputs.

Seeing is half of it — now the discipline of acting.

Fire exactly one atomic action, then re-observe to verify

A bounded observe-act-verify loop keeps action honest: Observe, Analyze, Plan, Act — exactly one atomic action — Verify by re-observing, then Decide. The agent never claims success without evidence.

But driving a real desktop this way carries real risk.

  1. 1Observecapture the dual-world state
  2. 2Analyze & Planchoose one atomic action
  3. 3Actfire exactly one action
  4. 4Verify & Decidere-observe, then loop or terminate

Autonomy on a real desktop is dangerous

Capability alone isn't enough. An agent that assumes success — or hallucinates desktop state it can't actually see — can do real damage. Unbounded desktop control is a hazard, not a feature.

So the bundle layers safety in, deliberately.

Structured uncertainty, human gates, and fail-fast honesty

Every action returns one of four normalized statuses. The bounded-task recipe gates both the plan and the result behind human approval, with a default budget of 20 actions and 2 retries per step. Detection fails fast — the macOS backend raises rather than silently returning fixture data.

Put it together and a plain sentence becomes a workflow.

success failure blocked ambiguous

"Open TextEdit and type hello world" — driven end to end

A single plain sentence resolves into a fully observed, approval-gated, verified desktop workflow the agent actually drives — running on a real macOS backend (Quartz input, screencapture, AXUIElement accessibility) with a deterministic fixture backend for CI.

Status: v0.1.0 — working & tested (fixture + macOS)
# a sentence becomes a safe, auditable workflow "Open TextEdit and type hello world" observe → dual-world state captured approve → human gates the plan act → one atomic action at a time verify → re-observe, confirm, decide approve → human gates the result
Sources

Research Methodology

Data as of: HEAD 5f127bc, development window 2026-03-06 to 2026-03-10

Feature status: v0.1.0 — working and tested for fixture + macOS backends; Windows/Linux backends are stubs

Repository: michaeljabbour/amplifier-bundle-cua (public, default branch main). Cloned fresh from GitHub into /tmp/cua-src; not present locally under /home/ramparte/dev/ANext.

Research performed:

Gaps: macOS backend was not executed against a live desktop (no macOS host available); macOS claims are grounded in source (17 async methods, Quartz/screencapture/AXUIElement) and the passing mocked test suite. GitHub-side PR metadata (reviews, CI runs) was not queried; PR facts come from local merge commits.

Primary contributor: Michael J. Jabbour — sole author, all 41 commits (100%).

More Amplifier Stories