Skip to main content

Exo Control

Realtime PC eyes and hands for any AI agent

Any model · MCP · CLI · Python
Compact. Leased. Honest.

MIT license PyPI Any harness

Install · Harness · Safety · Exo Launcher

Exo Control is a Windows Python library that gives any AI eyes and hands on the desktop. Same ops over MCP, CLI, or Python. Not an app and not a Setup.exe — install with pip.

How the AI talks Entry
MCP exo_exec · exo_screenshot · exo_help
CLI exo-control exec · exo-control script · exo-control doctor
Python from exo_control import ExoExecEngine

Works with Exo Launcher when it is installed. Not required.

Install

pip install exo-control
exo-control doctor

Optional extras:

pip install "exo-control[browser]"   # Playwright CDP
playwright install chromium
pip install "exo-control[web]"       # Browser Use web expert (optional)

Pin: pip install "exo-control==2.4.0" or pip install "git+https://github.com/ImAvgErix/ExoControl.git@v2.4.0". State lives under ~/.exo/. Legacy ~/.aether/ is migrated automatically.

MCP

{
  "mcpServers": {
    "exo-control": {
      "command": "python",
      "args": ["-m", "exo_control.slim_mcp_server"]
    }
  }
}

aether_* tools register only when EXO_MCP_ALIASES=1. Prefer exo_*.

Do not set PYTHONPATH at a second tree. exo-control doctor reports shadowing.

Quick script

exo-control script examples/notepad.json
from exo_control import ExoExecEngine

ExoExecEngine().execute({
    "steps": [
        {"op": "lease_acquire", "agent_id": "demo", "task": "notepad", "ttl_sec": 90},
        {"op": "launch", "app": "notepad"},
        {"op": "type", "text": "hello from Exo Control"},
        {"op": "verify", "text": "hello from Exo Control"},
    ],
    "finally": [
        {"op": "window_close", "title": "Notepad", "discard_unsaved": True},
        {"op": "lease_release"},
    ],
})

Failed steps do not attach screenshots unless screenshot_on_fail: true. Use {"op":"last_error"}. Harness install is in docs/HARNESS.md.

What it can do

Surface Ops
Desktop UIA click/type/fill, aimed wheel + scroll_into_view + hover, live eyes, lease, multi-monitor
Browser CDP snapshot refs, DOM click/type, page scrollBy / scrollIntoView
OS Allowrooted files, HKCU registry, processes/services, fuzzy launch
Search Lease-free search (provider=perplexity|tavily|exa|ddg|serper|brave) + search_content
Cloud browser Browser Use browser_use / browser_use_start (BROWSER_USE_API_KEY)
Web extract scrape (provider=firecrawl|jina); crawl / site_map; Stagehand browser_act; Skyvern; AgentQL
Docs / find files_convert (engine=markitdown|docling), files_find (Everything or walk)
Memory / history memory_add / memory_search (local or Mem0); recall (Screenpipe)
Mail / calendar mail_list / cal_next / drive_get / todo / onenote / teams / mail_send (Graph or Composio)
Desk extras xlsx, git, gh_pr, volume, winget, recycle, eventlog, window_move, browser_network / pdf / tabs
Wave 2 rag / steel_start / slack / notion / linear / pwsh / docker / hash / whoami / disk
Waves 3–5 Graph writes, CDP extras, wiki/weather/hn, Jira/Discord/Airtable, zip/sqlite/tree, which/dns/lock_pc
Pilot Original layer: goal / checkpoint / proof / changed / undo / skill_save / skill_run / heal
Ready Honest ready map — what works here vs Windows-native vs needs a key
Windows natives Stock volume/lock/wifi/power/recycle/TTS/dialog/dark_mode/idle/ports/Defender (no extra pip)
Live seat session_open holds the desk like remote access; pointer / mouse / keypress / drive are raw HID

Key-gated rows fail closed; {"op":"ready"} is the map; stt is a stub. | Desktop | UIA click/type/fill, right/double click, menu, copy/paste, aimed wheel + scroll_into_view + hover, live eyes, find, lease, multi-monitor, window move/resize/snap | | Browser | CDP snapshot refs, DOM click/type, page scroll, tabs/back/extract; web_task for multi-step jobs | | OS | Allowrooted files (+ hash/zip/watch/reveal), HKCU registry, processes/services, drives, os_info, audio/power/idle, wifi, recycle, winget, ms-settings: | | Session | Persistent prefs, plan, checkpoint, recover |

{"op":"help"} lists the core ops. detail=true is the full catalog. find searches the last read. pc is the owner snapshot (volume, power, idle, wifi). exo-control pc from a shell.

Safety

  • One desktop lease; lease_status / session_status never return the token

  • Destructive OS ops need confirm=true (agent assertion, not a human prompt) unless Full-Trust is on

  • Files stay in EXO_FILE_ROOTS unless the operator sets EXO_ALLOW_OUTSIDE_ROOTS=1 (Full-Trust widens user-profile roots only)

  • Hard denies in default/trusted: anti-cheat, unnamed PID kill, critical services, HKLM write, Windows/System32 writes, non-loopback CDP

  • Full-Trust owner mode lifts those denials and auto-elevates privileged ops through a broker (MCP stays medium IL). First admin op may UAC once.

  • Human kill-switch: create ~/.exo/KILL or exo-control trust kill — agents cannot disarm it

  • SECURITY.md

Full-Trust (“this is my PC”)

Default install stays safe. Full-Trust is explicit and reversible:

  1. exo-control trust enable --ack "I own this PC" (one-time human ack + audit log)
  2. Set EXO_TRUST=full (or EXO_FULL_TRUST=1) on the MCP/CLI process and restart it
  3. exo-control trust status should show "level": "full"

While Full-Trust is on, confirms are optional, the disk is in play, and privileged OS ops (HKLM, Program Files, services, anti-cheat) go through an elevated broker. The desktop MCP stays unelevated so clicks still work. One UAC to install the broker; after that it starts with the logon task.

exo-control elevate status
exo-control elevate install

Create ~/.exo/KILL to freeze hands immediately. That file is the only remaining agent-proof stop.

Docs

Doc Role
docs/HARNESS.md Host install matrix
docs/LIVE-MODEL.md Lease / eyes / hands
docs/CAPABILITY.md Capability bar
CHANGELOG.md Version history

License

MIT

Release files for exo-control 2.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for exo-control 2.5.0
File Size Uploaded
exo_control-2.5.0.tar.gz 308.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for exo-control 2.5.0
File Interpreter ABI Platform
exo_control-2.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 611.4 kB

Release files / exo_control-2.5.0.tar.gz

Download URL exo_control-2.5.0.tar.gz
Size 308.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ae2c199c911a0ba86d184033e336553de750a01f3af329b2cdd53a1f4c260869
BLAKE2b-256 checksum
How to use checksums
51ac90cb28d75cd158f88994e76e59b2233f35a43396ccfbb6382494028ae5f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log

Release files / exo_control-2.5.0-py3-none-any.whl

Download URL exo_control-2.5.0-py3-none-any.whl
Size 303.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
baa2189a13c8573758af8ccabb9e34075ac2bfdb4424a50287f13e2a10a5c634
BLAKE2b-256 checksum
How to use checksums
05e1b1e41de641125f8119468c2edd35abca6ee2f15f0d0465332d9a26548a10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.5.0 This release

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page