use-computer 0.0.44


pip install use-computer

  Latest version

Released: Jun 11, 2026


Meta
Author: use.computer
Requires Python: >=3.10

Classifiers

Development Status
  • 3 - Alpha

Intended Audience
  • Developers

Operating System
  • OS Independent

Programming Language
  • Python :: 3
  • Python :: 3.10
  • Python :: 3.11
  • Python :: 3.12
  • Python :: 3.13

Typing
  • Typed

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=uc_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 agent wrapper dependencies
pip install "use-computer[harbor,agents]" # Harbor agent wrappers plus agents

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

Sandboxes default to ephemeral=True, so they are deleted after roughly 2 minutes without activity. Use ephemeral=False when a sandbox should persist until manual deletion, or call sandbox.start_keepalive(interval=30) during long model-think/install periods.

from use_computer.agents import AnthropicComputerAgent

In Harbor job YAML, use Harbor's built-in use.computer environment and the SDK agent wrappers:

environment:
  type: use-computer
  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

client = Computer()
reservation = client.reserve(hours=24)

with client.create(type="macos", reservation_id=reservation.id) 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

# Only needed when the same account key has more than one active Mac reservation.
with Computer().create(type="macos", reservation_id="...") as mac:
    print(mac.exec_ssh("uname -a").stdout)

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()

# Configure the desktop by hand over VNC, then snapshot it.
with client.create(type="ubuntu", version="ubuntu-24.04") as ubuntu:
    print("Set up the desktop here:", ubuntu.vnc_url)
    # install apps, sign into accounts, pre-open the windows your agent starts from
    input("Press Enter once the desktop is ready to snapshot...")
    snapshot = ubuntu.snapshot("chrome-seeded-ubuntu")

# New sandboxes boot from that exact state, no setup needed.
with client.create(type="ubuntu", snapshot=snapshot.version) as seeded:
    print(seeded.vnc_url)  # apps, logins, and open windows restored

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 ephemeral 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. Harbor job YAMLs should use Harbor's type: use-computer environment plus use_computer.harbor.agents:* agent wrappers.

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 uc_live_.... Swagger: api.use.computer/docs. OpenAPI spec: api.use.computer/openapi.yaml.

Wheel compatibility matrix

Platform Python 3
any

Files in release

Extras:
Dependencies:
httpx (>=0.27)