macos-harness README

The project's README from github.com/browser-use/macos-harness. As one markdown file: README.md.

macOS Harness

macOS Harness ⌘

The simplest, thinnest harness that gives an LLM complete freedom to complete virtually any task on a Mac.

The agent writes what is missing, mid-task. No framework, no recipes, no rails. One Python process connected directly to macOS, your real browser, and your files.

● agent: wants to do something no helper exists for
│
● sees the app and uses raw macOS primitives
│
● writes the missing logic in ordinary Python
│
✓ task complete                                  no app-specific tool added

Your agent now has a Mac.

Give it to your agent

Paste this into Codex or Claude Code:

Install or upgrade macOS Harness from https://github.com/browser-use/macos-harness with uv using Python 3.12. Register the skill printed by `macos-harness skill`, then run `macos-harness doctor`. Explain any missing macOS permissions and ask before requesting them. Finally, verify the harness by capturing one already-running app without bringing it to the foreground.

That is it. The agent installs the package, teaches itself the workflow, checks permissions, and verifies the connection. Manual setup is available too.

Six primitives. The whole Mac.

macos-harness <<'PY'
frame = mac.see("Spotify")
mac.key("cmd+k", app="Spotify")
mac.type("Alessia Cara", app="Spotify")
mac.click(640, 420, app="Spotify")

item = mac.ax.at(640, 420, app="Spotify")
mac.script('tell application "Spotify" to play')

print(browser.page_info())
print(list(Path.home().iterdir()))
PY

Think in see, key, type, click, ax, and script. browser, Path, and subprocess are ready in the same Python process.

There are no Spotify tools, Slack tools, or Final Cut tools. The model gets raw primitives and writes the rest.

How it works

                              one persistent Python process
                                           │
                    ┌──────────────────────┼──────────────────────┐
                    │                      │                      │
                 mac.*                  browser.*          Path / subprocess
                    │                      │                      │
        ┌───────────┼───────────┐     Browser Harness        files + shell
        │           │           │            │
    CGWindow     CGEvent      AX + Apple      CDP
   screenshots    to PID       Events          │
        │           │           │          real Chrome
        └───────────┴───────────┘
                    │
              native + Electron apps

Permissions and privacy

macos-harness doctor reports the macOS permissions actually needed. The harness never activates or raises a target app and never moves the physical pointer.

Anonymous telemetry is enabled by default. It records only the CLI command category, success, duration, package version, OS/architecture, and detected agent client. It never records prompts, app names, screenshots, UI text, scripts, paths, or window titles.

macos-harness telemetry disable

Experimental. macOS only. MIT licensed.

macos-harness (browser-use/macos-harness)

Searching Database…

Что это?macos-harness — тонкий Python-харнесс, дающий LLM-агенту прямой контроль над Mac через несколько сырых примитивов вместо готовых инструментов под конкретные приложения.
Это фреймворк со встроенными рецептами или нечто более простое?Это намеренно не фреймворк: здесь нет инструментов для Spotify, Slack или Final Cut и никаких предопределённых воркфлоу. Он лишь открывает шесть примитивов (see, key, type, click, ax, script) в одном Python-процессе и позволяет модели написать остальное.
Как его запустить?Вы вставляете короткий промпт в Codex или Claude Code, и агент сам устанавливает пакет, осваивает воркфлоу, проверяет разрешения и убеждается в подключении. Есть и ручной путь настройки.
С какими кодинг-агентами он работает?Он рассчитан на передачу Codex или Claude Code, которые сами устанавливают и разворачивают его; сам харнесс работает как Python-процесс рядом с вашим настоящим браузером.
Он готов к ежедневному продуктивному использованию?Нет, README помечает проект как экспериментальный и только для macOS, так что относиться к нему стоит как к раннему инструменту, а не к чему-то обкатанному для ежедневного использования.
Он работает и на других операционных системах?Нет, он построен специально вокруг API Accessibility и Apple Events macOS, поэтому работает только на Mac.
Какие данные он отправляет разработчикам?Анонимная телеметрия включена по умолчанию, но логирует только категорию CLI-команды, успех, длительность, версию пакета, ОС/архитектуру и обнаруженный агентский клиент; она никогда не записывает промпты, имена приложений, скриншоты, текст интерфейса, скрипты, пути или заголовки окон.
Он двигает мой настоящий курсор мыши, пока работает агент?Нет, он рисует анимированный прозрачный для кликов указатель поверх и отправляет ввод напрямую в процесс целевого приложения, так что ваш настоящий курсор и порядок окон остаются нетронутыми.
Он видит и взаимодействует с приложениями, работающими в фоне?Да, он захватывает окна фоновых приложений, не выводя их вперёд, и отправляет клавиатурный и координатный ввод напрямую в PID приложения.
Как он обращается с реально залогиненным браузером?Он использует Browser Harness через CDP для управления вашим настоящим залогиненным сеансом браузера, а не поднимает отдельный автоматизированный браузер.
Какие шесть примитивов получает агент?see, key, type, click, ax (Accessibility/Apple Events) и script, плюс обычный Python с доступными browser, Path и subprocess в том же процессе.
Size
6 MB
Stars
958
Age
2mo
Commits · 90 Days