Summary
The computer use tools (MouseClick, MouseMove, Type, Screenshot) currently interact with the UI by actually moving the mouse and typing. On macOS, the Accessibility API can read UI element positions, labels, and states without physically moving the cursor - enabling text-only models (like DeepSeek) to perform GUI tasks by reading the accessibility tree instead of relying on vision.
Acceptance Criteria
Context
This is a follow-up from PR #990. The vision annotation pipeline already lets text-only models understand screen content via the annotator, but they still can't interact with the UI without vision. The macOS Accessibility API is a natural fit: it provides the same element-level information the annotator extracts from screenshots, but natively and without needing a vision model side-call.
For text-only models like DeepSeek, this would enable:
- Reading button labels and menu items
- Getting element positions for targeted clicks
- Understanding UI state without screenshot annotation
- Performing multi-step GUI workflows via background tasks
Related
Summary
The computer use tools (MouseClick, MouseMove, Type, Screenshot) currently interact with the UI by actually moving the mouse and typing. On macOS, the Accessibility API can read UI element positions, labels, and states without physically moving the cursor - enabling text-only models (like DeepSeek) to perform GUI tasks by reading the accessibility tree instead of relying on vision.
Acceptance Criteria
use_accessibility_apiparameter (or similar) to computer use tools that, when enabled, reads the macOS accessibility tree instead of moving the mouse or typing with the keyboard.Context
This is a follow-up from PR #990. The vision annotation pipeline already lets text-only models understand screen content via the annotator, but they still can't interact with the UI without vision. The macOS Accessibility API is a natural fit: it provides the same element-level information the annotator extracts from screenshots, but natively and without needing a vision model side-call.
For text-only models like DeepSeek, this would enable:
Related