AXUIElementAccessibility first
Reading UI trees, pressing buttons, setting values, typing at the caret, choosing menu items and scrolling all go through the Accessibility API. Nothing gets activated.
A Computer Use MCP that allows you and your agent to work simultaneously
Whoever holds the pointer and the keyboard is driving.
It moves your pointer and pulls apps in front of you. You wait.
The agent works in its own window, outlined in green. Your pointer and keyboard stay yours.
Buttons, fields, menus, scripts. All in the background.
No beeps, no stray menus. If an app jumps forward, you get your focus back in milliseconds.
Measured on a real Mac.
Pulled out of the full-screen app to the desktop. Focus never came back.
Finder still jumps forward on its own. backseat hands focus back within 3–23 ms (measured over 6 activations), and your Space never changes.
focus on your app focus elsewhere
The same agent on the same tasks, before and after backseat's latest tool changes. Hit play and each bar grows in agent wall time. calls are the agent's tool calls.
Totals: 35 calls / 153.2 s before, 26 calls / 92.0 s after. grocery-edit got slower, and it stays on the chart.
One rule: nothing backseat does activates the app it's driving. Activation is what takes your keyboard focus, and what drags you across Spaces.
AXUIElementReading UI trees, pressing buttons, setting values, typing at the caret, choosing menu items and scrolling all go through the Accessibility API. Nothing gets activated.
CGEventPostToPidFor canvases, drags and right-clicks, backseat builds mouse events stamped with a window number and posts them straight to that app's process. WindowServer never routes them, so there's no click-to-activate, even on covered windows.
per-process keysShortcuts and typed keys reach a background app without touching your keyboard focus. ⌘ shortcuts are chosen from the menu bar, or refused when the item is disabled.
run_scriptSave, Bold, New Folder: commands that act on the focused window are disabled in an app that isn't active. run_script sends Apple Events instead, which reach scriptable apps without bringing them forward.
FocusGuardSome apps activate themselves anyway (Finder's Go to Folder, Safari's New Window). backseat hands focus straight back to your window and its Space, and keeps checking for a second in case the activation lands late.
ScreenCaptureKitScreenshots capture a single window, even one on another Space or off screen. The green outline is drawn only where that window is visible to you, and is left out of the agent's screenshots.
The honest limitation. An app that isn't scriptable and has no on-window control for a focus-only command can't run that command in the background. Doing it anyway means briefly taking focus, or running the app in a separate macOS session.
One command builds backseat and adds it to Claude Code.
$ curl -fsSL https://backseat.akshith.io/install.sh | sh
then ask for something and keep working: “tidy my Downloads while I finish this email.”