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 · Agent instructions · 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 browser CDP: pip install "exo-control[browser]" then playwright install chromium.

Pin: pip install "exo-control==2.2.0" or pip install "git+https://github.com/ImAvgErix/ExoControl.git@v2.2.0".

State lives under ~/.exo/. Legacy ~/.aether/ is migrated automatically.

MCP

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

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"}. Drop AGENTS.md into any model's rules.

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

{"op":"help"} lists the core ops. detail=true is the full catalog.

Safety

  • One desktop lease; lease_status / session_status never return the token
  • Destructive OS ops need confirm=true (agent assertion, not a human prompt)
  • Files stay in EXO_FILE_ROOTS unless the operator sets EXO_ALLOW_OUTSIDE_ROOTS=1
  • Hard denies: anti-cheat, unnamed PID kill, critical services, non-loopback CDP
  • SECURITY.md

Docs

Doc Role
AGENTS.md Drop-in agent instructions
docs/HARNESS.md Host install matrix
docs/LIVE-MODEL.md Lease / eyes / hands
docs/API-STABILITY.md 2.0 public surface
CHANGELOG.md Version history

License

MIT

Release files for exo-control 2.2.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.2.0
File Size Uploaded
exo_control-2.2.0.tar.gz 252.8 kB Details

Built distribution (wheel)

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

Total release size: 506.8 kB

Release files / exo_control-2.2.0.tar.gz

Download URL exo_control-2.2.0.tar.gz
Size 252.8 kB
Tags Source
SHA-256 checksum
How to use checksums
dc9cb73b11d5e1e85ac1b06fa3935e36161a45f27d68aba81f4bd4fa53f53550
BLAKE2b-256 checksum
How to use checksums
7a31d31f3209c54a70d0ed8d1f7c9b0a2ee87f3ffe11bd36388f60bda22b0f1d
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 15, 2026.

Transparency log

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

Download URL exo_control-2.2.0-py3-none-any.whl
Size 254.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
84acd43a07e7fa34b28e0e66d1a0f2e20d9bd5315726bbceb3139946a16eb8f3
BLAKE2b-256 checksum
How to use checksums
df6dd4eec78a2bdd488dc254fe5edc057bc80d26c2ff92443da0f84837f77cb8
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 15, 2026.

Transparency log

Release history Release notifications | RSS feed

2.5.0

2 release files

This release

2.2.0 This release

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