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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file use_computer-0.0.39.tar.gz.
File metadata
- Download URL: use_computer-0.0.39.tar.gz
- Upload date:
- Size: 441.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cbc103ae73c626201b55eb61082875e2c66974fad55a61ad60361116239e08cb
|
|
| MD5 |
427fabcecef892b8281c98ae09f8bc7e
|
|
| BLAKE2b-256 |
54cc2c0d159341ec406c0c3371279c440a4b1921ee7618716409bd81e7909ec4
|
File details
Details for the file use_computer-0.0.39-py3-none-any.whl.
File metadata
- Download URL: use_computer-0.0.39-py3-none-any.whl
- Upload date:
- Size: 118.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7dc809a66ab0b54a92b239354606a6c033335bddf6af9499d30d72e79a4ce03f
|
|
| MD5 |
ebb99ae4efd86cd90136dcd7b3c9e45e
|
|
| BLAKE2b-256 |
4dd885f023193d5fa77f1fb9ef8aaf15e6d93283af7e12dfa173cb2e152c280d
|