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.
Not an agent
Section titled “Not an agent”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.
Not a cloud service
Section titled “Not a cloud service”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:
$ aos obs path/Users/you/.local/state/aos/telemetryDelete it whenever you like. AOS_TELEMETRY=off stops it being written
at all.
Not a screen-scraper
Section titled “Not a screen-scraper”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:
$ 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/aosNot unrestricted system access
Section titled “Not unrestricted system access”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.
Not omarchy, and not Linux-only
Section titled “Not omarchy, and not Linux-only”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:
go install github.com/muthuishere/aos/cmd/aos@latestIt 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.
Not desktop-only
Section titled “Not desktop-only”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.
Not a remote-desktop product
Section titled “Not a remote-desktop product”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.