Skip to content

What it's not

Most of what people need to know about a tool like this is what it declines to be. Each of these clears up a specific confusion.

There is no model in it. Nothing here decides anything, plans anything, or retries on its own. It is the hands, not the brain.

Bring your own agent — Claude Code, your own loop, a script. aos serve mcp is where the two meet.

No account, no sign-in, no phone-home. Nothing leaves the machine unless you type a command that sends something.

Telemetry exists, and it is OTLP-shaped JSON in a local file:

Terminal window
$ aos obs path
/Users/you/.local/state/aos/telemetry

Delete it whenever you like. AOS_TELEMETRY=off stops it being written at all.

Windows, monitors, input and capture go through OS APIs — CoreGraphics on macOS, Win32 on Windows, wmctrl and xdotool on Linux. There is no pixel guessing and no vision model reading a screenshot to find a button.

window list returns real window records, with real geometry, from the window server:

Terminal window
$ aos window list
* Finder mon 3 1379x890+2235+134 pathextra
Ghostty mon 2 1900x940+0+30 Omarchy CLI cross-platform
Google Chrome mon 3 1920x1050+1920+30 muthuishere/aos

That is what most desktop-automation MCP servers hand an agent: a shell, a click, a keystroke, and nothing in between. Every dangerous edge here is deliberately blunted, and the blunting is written down rather than assumed — see the safety model.

remote share is a good example of the pattern: it is marked blocking, and blocking commands are excluded from the MCP tool list, so an agent cannot open a desktop-control channel on someone’s machine at all. A person starts it.

The command shape is borrowed from the omarchy CLI — group/command routes, discoverable help, a machine-readable index. That is where the resemblance stops. The implementation is Go, and it runs on macOS, Windows and Linux. docs/porting.md in the repo maps the omarchy surface group by group so you can see exactly what was taken and what was not.

Not a wrapper around tools you must install first

Section titled “Not a wrapper around tools you must install first”

One static binary:

Terminal window
go install github.com/muthuishere/aos/cmd/aos@latest

It uses native tools when they are present, and says so plainly when they are not — doctor reports what is missing and what to run about it, instead of failing at the moment you needed it.

Most of the surface needs no display at all. exec, file, pkg, network, system, power, battery, font, debug and serve work the same on a server, in CI, or in a container. On Linux, headless start provides a display when something genuinely needs one.

aos commands on a screenless machine lists only what will actually run, and serve mcp --gui=auto (the default) offers an agent only the tools that can succeed. Offering a tool that cannot run is worse than not offering it.

remote share prints a LAN URL, is started by a person at a terminal, and is revoked when they press Ctrl-C. There is no tunnel and no relay — the library it is built on cannot open one. It is a way to watch a machine you already have access to, for as long as you are watching it.