Skip to main content

Python SDK for use.computer sandboxes across macOS, iOS simulators, Windows, and Ubuntu

Project description

use-computer Python SDK

Python client for use.computer — rent dedicated VMs across macOS, iOS/visionOS/tvOS simulators, Windows, and Ubuntu built for computer-use agents.

pip install use-computer
export USE_COMPUTER_API_KEY=mk_live_...

Optional agent and Harbor integrations are installed explicitly:

pip install "use-computer[agents]"        # computer-use agents and provider SDKs
pip install "use-computer[harbor]"        # Harbor environment adapter (Python 3.12+)
pip install "use-computer[harbor,agents]" # Harbor adapter plus agents

Base installs only the SDK client and httpx. The agents extra installs the agent runtime plus model-provider dependencies; harbor installs Harbor plus the environment adapter dependencies.

from use_computer.agents import AnthropicComputerAgent
from use_computer.harbor.environment import UseComputerEnvironment

In Harbor job YAML, use the SDK paths directly:

environment:
  import_path: use_computer.harbor.environment:UseComputerEnvironment
  kwargs:
    platform: macos
agents:
  - import_path: use_computer.harbor.agents:AnthropicCUAAgent
    model_name: anthropic/claude-sonnet-4-6
from use_computer import Computer, SandboxType, SimulatorFamily

with Computer().create() as mac:
    mac.exec_ssh("open -a TextEdit")
    mac.keyboard.type("hello")
    png = mac.screenshot.take_full_screen()

with Computer().create(type=SandboxType.IOS, family=SimulatorFamily.TV) as tv:
    tv.screenshot.take_full_screen()
    tv.input.press_remote("select")

with Computer().create(type=SandboxType.IOS) as ios:
    ios.input.long_press(120, 300, duration=1.0)
    print(ios.exec("simctl getenv $UDID HOME").stdout)  # CoreSimulator exec, not SSH

Windows (Beta)

with Computer().create(type="windows") as win:
    print(win.run("$env:COMPUTERNAME").stdout)   # PowerShell exec (no SSH)
    win.keyboard.type("hello")
    win.screenshot.take_full_screen()
    win.ui_tree()                                 # native Windows UIAutomation tree

Windows sandboxes are Beta (admin-only). Same mouse/keyboard/screenshot/ recording/file surface as macOS; exec runs in-guest via PowerShell/cmd (win.run / win.shell) instead of SSH. AsyncWindowsSandbox mirrors it. See docs.use.computer/docs/windows.

Selectable Windows images are exposed by Computer().platforms()["windows"]. Prefer version="windows-11" plus resources={"cpus": 4, "memory_mb": 4096, "disk_gb": 40} to select a resource profile. Explicit image IDs such as windows-11-4c4g40g still work. The image metadata includes CPU/RAM/disk and display size.

Ubuntu (Beta)

with Computer().create(type="ubuntu", version="ubuntu-24.04") as ubuntu:
    print(ubuntu.run("uname -a").stdout)  # bash exec (no SSH)
    print(ubuntu.display.get_info())
    ubuntu.keyboard.type("hello")
    ubuntu.screenshot.take_full_screen()

Ubuntu sandboxes are Beta (admin-only). They use the same KVM/noVNC backend as Windows; pass version="ubuntu-24.04" plus resources to select CPU/RAM/disk.

Selectable Ubuntu images are exposed by Computer().platforms()["ubuntu"]. Current examples include ubuntu-24.04, ubuntu-24.04-4c4g80g, ubuntu-24.04-4c4g40g, and ubuntu-24.04-2c4g40g.

client = Computer()
platforms = client.platforms()
for image in platforms["ubuntu"]["images"]:
    print(image["version"], image["resources"], image["display"])

with client.create(
    type="ubuntu",
    version="ubuntu-24.04",
    resources={"cpus": 2, "memory_mb": 4096, "disk_gb": 40},
) as ubuntu:
    print(ubuntu.display.get_info())

Snapshots (Beta)

Windows and Ubuntu snapshots preserve disk + RAM state, including open apps and running processes. Seed a VM once, snapshot it, then create new sandboxes from that snapshot version.

client = Computer()

with client.create(type="ubuntu", version="ubuntu-24.04") as ubuntu:
    ubuntu.run("google-chrome-stable --no-first-run https://example.com >/tmp/chrome.log 2>&1 &")
    snapshot = ubuntu.snapshot("chrome-seeded-ubuntu")

with client.create(type="ubuntu", snapshot=snapshot.version) as seeded:
    print(seeded.run("pgrep -af 'chrome|chromium' | head").stdout)

Use client.snapshots("ubuntu") or client.snapshots("windows") to list saved snapshot versions.

Full DSL reference: docs.use.computer/docs/sdk

Simulator sandboxes use type=SandboxType.IOS for the SDK route, but device_type and runtime can target any installed compatible CoreSimulator pair: iPhone or iPad with iOS, Apple Watch with watchOS, Apple TV with tvOS, or Apple Vision with visionOS. Prefer family=SimulatorFamily.TV/WATCH/VISION unless you need to pin raw CoreSimulator identifiers. Raw strings like type="ios" still work for compatibility. If omitted, the gateway defaults to iPhone 17 Pro on the latest installed iOS runtime. Known-incompatible simulator types are filtered from family selection, including the non-4K Apple Vision Pro type on current fleet runtimes. For iOS app installs, upload the .app / .ipa first and pass the same path to sandbox.apps.install(path); files are staged on the simulator host.

Per-family input

iPhone / iPad sims have full touch + on-screen keyboard. Apple Watch supports touch + crown / button (no type_text — watchOS keyboard isn't exposed). Apple TV has no touch — drive it with input.press_remote(RemoteButton.SELECT) (the remote D-pad, select, menu, home, play/pause). Apple Vision (visionOS) is BETA: sessions display and you can screenshot / launch apps, but input.tap is a no-op because there's no XCTest-free coordinate tap path on visionOS yet. Use it for read-only flows for now.

Examples

File What it shows
examples/_1_hello_macos.py create → exec → keyboard → screenshot
examples/_2_hello_ios.py create iPhone sim → open URL → screenshot
examples/_3_recording.py start / stop / download a screen recording
examples/_4_file_transfer.py upload bytes, download a file back
examples/_5_keepalive.py heartbeat for sessions idle > 2 min
examples/_6_hello_tvos.py tvOS: pick TV family + drive the Apple Remote
examples/_7_hello_windows.py create Windows → run PowerShell → screenshot
examples/_8_hello_ubuntu.py create Ubuntu → run bash → screenshot
examples/_9_seeding.py typed setup: files, hosts, open URLs/apps
examples/_10_snapshots.py snapshot seeded Ubuntu/Windows desktop state

For agent loops and evals: use-computer-cookbook. Its Harbor job YAMLs use use_computer.harbor.environment:UseComputerEnvironment and use_computer.harbor.agents:* as the canonical import paths.

Skill for AI coding assistants

Point your assistant at use-computer-cookbook/skills/SKILL.md — short body with per-topic references for macOS, Apple simulators, lifecycle, and the Harbor harness.

HTTP API

Every SDK method wraps https://api.use.computer/v1/... with Authorization: Bearer mk_live_.... Swagger: api.use.computer/docs. OpenAPI spec: api.use.computer/openapi.yaml.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

use_computer-0.0.38.tar.gz (440.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

use_computer-0.0.38-py3-none-any.whl (118.0 kB view details)

Uploaded Python 3

File details

Details for the file use_computer-0.0.38.tar.gz.

File metadata

  • Download URL: use_computer-0.0.38.tar.gz
  • Upload date:
  • Size: 440.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for use_computer-0.0.38.tar.gz
Algorithm Hash digest
SHA256 b8c5a13cad8454954966b0d64224b67ffe3038631e27a1a1e060122e01b806b1
MD5 47c3118c052291b7eb61d65dc58fea9e
BLAKE2b-256 217c7177f62696e755405676749169518c25f2b323af65cbee4d49686333eace

See more details on using hashes here.

File details

Details for the file use_computer-0.0.38-py3-none-any.whl.

File metadata

  • Download URL: use_computer-0.0.38-py3-none-any.whl
  • Upload date:
  • Size: 118.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for use_computer-0.0.38-py3-none-any.whl
Algorithm Hash digest
SHA256 ce0c7464535c53cfe764dcb0c97ed96c1c70956eda9790df53326e9879ba48d7
MD5 785753bd9abdae73693c3f711bd1b93a
BLAKE2b-256 8c579ed7c1d2fea2a803dee244903edcfb8df5b134183daa2b71b294aa6b44eb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page