pig
Project description
Pig Docs
Pig is an API to launch and automate Windows apps. Plug this SDK into your AI Agent apps to give them a computer!
Warning: This API and associated infrastructure are currently in alpha and will likely undergo changes.
Table of Contents
- Pig Documentation
Installation
Install the package using pip:
pip install pig-python
This installation includes both the Python SDK and the pig command-line interface.
Quick Start Guide
Authentication
Set up your API key before using the SDK:
export PIG_SECRET_KEY=your_api_key
Apply Here to get your API key.
Basic Usage
Here's a simple example to launch and interact with a VM:
from pig import VM
# Create and connect to a new VM
vm = VM()
print("Starting VM...")
conn = vm.connect() # Initial boot takes a few minutes
# Interact with the VM
conn.mouse_move(100, 100)
conn.left_click(100, 100)
conn.type("Hello, World!")
Resuming an Existing Session
To reconnect to an existing VM:
vm = VM(id="VM-ABCDEFG-ABCDEFG-ABCDEFG")
conn = vm.connect()
conn.type("Hello Again!")
Hint: if you don't know the VM ID, you can use the
pig lsCLI command to list all VMs.
Resource Management
Always clean up your VMs when finished:
# Option 1: Stop VM (persists to disk)
vm.stop()
# Option 2: Terminate VM (deletes the disk)
vm.terminate()
For automated scripts, use the context manager pattern:
with VM().session() as conn:
conn.mouse_move(100, 100)
conn.left_click(100, 100)
# VM automatically stops when the block exits
The context manager ensures your VMs stop.
Warning: During the alpha period, VMs left running without activity may be manually stopped by the Pig team. But please be a good citizen and clean up after yourself.
Command Line Interface
The pig CLI provides convenient VM management commands:
# List all VMs
pig ls
# Output format:
ID Status Created
-------------------------- -------- ----------------
VM-6F25BH9-VHENR80-05CRX4Z Running 2025-01-16 06:47
VM-6F228MS-Q0EEQR0-02JT39X Running 2025-01-15 23:45
Available Commands:
pig ls: List all VMspig create: Create a new VMpig start <vm_id>: Start a specific VMpig stop <vm_id>: Stop a specific VMpig terminate <vm_id>: Terminate and delete a VM
API Reference
VM Class
The VM class is your interface for managing VMs, the cloud machines that run the Windows OS.
Constructor
VM(
id: Optional[str] = None, # Optionally attach to existing VM.
# If none, new VM will be created.
image: Optional[Windows] = None, # OS image configuration
temporary: bool = False, # If True, terminates VM after session
api_key: Optional[str] = None # API key (alternative to env var)
)
Methods
create() -> str: Creates a new VM and returns its IDconnect() -> Connection: Connects to the VM, creating if necessarysession() -> VMSession: Creates a managed VM sessionstart(): Starts the VMstop(): Stops the VMterminate(): Terminates and deletes the VM
Tip: During development and exploration, prefer using the imperative API (
vm.start(), vm.stop()) so you can watch the VM and experiment. Use the context manager (vm.session()) once you're ready to automate tasks.
Connection Class
The connection class is your interface for interracting with a running VM. This is what you'll expose as Tools to your agent.
A Connection has the following methods:
Mouse Operations
cursor_position() -> Tuple[int, int]: Get current cursor positionmouse_move(x: int, y: int): Move cursor to coordinatesleft_click(x: Optional[int], y: Optional[int]): Left click at current location, or at specified coordinatesleft_click_drag(x: int, y: int): Click and drag from current location to target coordinatesdouble_click(x: Optional[int], y: Optional[int]): Double click at current location, or at specified coordinatesright_click(x: Optional[int], y: Optional[int]): Right click at current location, or at specified coordinates
Keyboard Operations
type(text: str): Type text into VM. Maps to keystrokes, executed with a short delay between each character.key(combo: str): Send key combination (e.g., 'ctrl+c', 'alt+Tab'). Supports multiple key strokes separated by space (e.g., 'shift-h i ctrl+a ctrl+c')
Screen Operations
screenshot() -> bytes: Capture screenshot (BMP format)width -> int: Get VM width (1024)height -> int: Get VM height (768)
Control Management
yield_control(): Transfer control to human operator. This makes all future interactions error until a button is clicked in the UI to grant control back to the agent.await_control(): Wait for control to be returned to the agent.
Windows Class
Configures Windows VM images.
Windows(version: str = "2025")
.install(application: str) -> Windows # Chain multiple installations
Advanced Usage
Custom Image Configuration
img = (
Windows(version="2025")
.install("Office") # Office is currently the only supported application.
)
vm = VM(image=img)
vm.create()
Temporary VM Sessions
vm = VM(temporary=True)
with vm.session() as conn:
# VM terminates after block exit, rather than stopping.
# This deletes the VM disk, making it no longer usable.
Configuration
Environment Variables:
PIG_SECRET_KEY: API authentication key
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 pig_python-0.0.6.tar.gz.
File metadata
- Download URL: pig_python-0.0.6.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6474c0a57a21011f58a50dfec23ccae5045398053231c2b9536cda840cba8138
|
|
| MD5 |
9672b46e51a85d01535723e8bca9a217
|
|
| BLAKE2b-256 |
6e9ef17d374e8a1914dba7ff31e68c9877a3590d9ca2af93c6e4fa01cc03988a
|
File details
Details for the file pig_python-0.0.6-py3-none-any.whl.
File metadata
- Download URL: pig_python-0.0.6-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
65446db3616e3f276f0db69e9282caed77c679d5b70a4d0cb9079325205ce4e9
|
|
| MD5 |
c9fe1799cf25cbe771be36f55584a4f4
|
|
| BLAKE2b-256 |
8913d49ccb9caf977645dc629527ded37f269e630428c91cbd4e98c6f1c49f2e
|