Skip to main content

Python SDK for FireVM SaaS - Execute code in isolated Firecracker VMs

Project description

FireVM Python SDK

Official Python client for executing code in isolated Firecracker VMs.

Installation

pip install firevm-sdk

Or install from source:

cd sdk/python
pip install -e .

Quick Start

from firevm_sdk import FireVMClient

# Initialize client with your API key
client = FireVMClient(api_key="your_api_key_here")

# Create a VM
vm = client.create_vm(name="my-vm")
print(f"VM created: {vm.vm_id}")

# Execute Python code
result = client.execute_python(vm.vm_id, """
print("Hello from FireVM!")
print(f"2 + 2 = {2 + 2}")
""")

print(result.stdout)  # Hello from FireVM!\n2 + 2 = 4
print(result.exit_code)  # 0

Examples

Execute Python Code

result = client.execute_python(vm.vm_id, "print('Hello World')")
print(result.stdout)  # Hello World

Execute Bash Commands

result = client.execute_bash(vm.vm_id, "ls -la && whoami")
print(result.stdout)

Handle Errors

result = client.execute_python(vm.vm_id, "1/0")
if result.exit_code != 0:
    print(f"Error: {result.stderr}")

Multiple Languages

# Python
client.execute(vm.vm_id, "print('Python!')", language="python")

# Bash
client.execute(vm.vm_id, "echo 'Bash!'", language="bash")

# Node.js
client.execute(vm.vm_id, "console.log('JavaScript!')", language="nodejs")

Error Handling

VM Quota Exceeded

When you reach your VM limit, the SDK raises a VMQuotaExceeded exception:

from firevm_sdk import FireVMClient, VMQuotaExceeded

client = FireVMClient(api_key="your_key")

try:
    vm = client.create_vm("my-vm")
except VMQuotaExceeded as e:
    print(f"❌ {e.message}")
    print(f"   Current VMs: {e.current_vms}/{e.max_vms}")
    print(f"   Your tier: {e.tier}")
    print(f"   Suggested: Stop unused VMs or upgrade your tier")

Tier Limits

  • Free tier: 5 concurrent VMs, auto-stop after 10min idle
  • Paid tier: 10 concurrent VMs, auto-stop after 10min idle
  • Pro tier: 20 concurrent VMs, auto-stop after 10min idle
  • Enterprise: 999 concurrent VMs, auto-stop after 10min idle

Upgrade at: https://firevm-frontend-345160625255.asia-northeast1.run.app/pricing

API Reference

FireVMClient

FireVMClient(api_key: str, base_url: str = "https://firevm-backend-345160625255.asia-northeast1.run.app")

Initialize the FireVM client.

VM Management

create_vm()

create_vm(name: str, tier: str = "small", wait: bool = True) -> VM

Create a new VM instance.

Parameters:

  • name: VM name
  • tier: VM size ("small", "medium", "large")
  • wait: Wait for VM to be ready (default: True)

get_vm()

get_vm(vm_id: str) -> VM

Get VM details by ID.

list_vms()

list_vms(state: Optional[str] = None) -> List[VM]

List all VMs, optionally filtered by state.

Parameters:

  • state: Optional filter ("running", "stopped", "paused", etc.)

stop_vm()

stop_vm(vm_id: str) -> VM

Stop a running VM. VM can be restarted later.

start_vm()

start_vm(vm_id: str) -> VM

Start a stopped VM.

pause_vm()

pause_vm(vm_id: str) -> VM

Pause a running VM (suspend to memory).

resume_vm()

resume_vm(vm_id: str) -> VM

Resume a paused VM.

delete_vm()

delete_vm(vm_id: str) -> VM

Delete (kill) a VM permanently. This action cannot be undone!

Code Execution

execute()

execute(vm_id: str, code: str, language: str = "python", timeout: int = 30, wait: bool = True) -> ExecutionResult

Execute code in a VM.

Parameters:

  • vm_id: VM identifier
  • code: Code to execute
  • language: "python", "bash", or "nodejs"
  • timeout: Execution timeout in seconds
  • wait: Wait for execution to complete

Returns: ExecutionResult with:

  • stdout: Standard output
  • stderr: Standard error
  • exit_code: Exit code (0 = success)
  • execution_time: Time taken in seconds
  • error: Error message if any

execute_python()

execute_python(vm_id: str, code: str, **kwargs) -> ExecutionResult

Shorthand for execute(..., language="python").

execute_bash()

execute_bash(vm_id: str, code: str, **kwargs) -> ExecutionResult

Shorthand for execute(..., language="bash").

Get Your API Key

  1. Visit https://firevm-frontend-345160625255.asia-northeast1.run.app
  2. Sign up for an account
  3. Copy your API key from the dashboard

Support

License

MIT License - see LICENSE file for details.

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

firevm_sdk-0.1.2.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

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

firevm_sdk-0.1.2-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file firevm_sdk-0.1.2.tar.gz.

File metadata

  • Download URL: firevm_sdk-0.1.2.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for firevm_sdk-0.1.2.tar.gz
Algorithm Hash digest
SHA256 9f526fdf3836432f5d4ad9f9e63c65623a4afac90ef48f4dc39680698b23ce4a
MD5 e332bde9f60a544bdea48356f9bef8b2
BLAKE2b-256 e7fdc6f0f59e98ddfa765a9333b8452f23699624e6347321765298d085b3cc3a

See more details on using hashes here.

File details

Details for the file firevm_sdk-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: firevm_sdk-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for firevm_sdk-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6519eb74b2e2c7ff57a58a0cee99cab31f85fe03b70a2f97c7a3c024edac13c1
MD5 f73f835d1b9d132cd2eb355bceda4808
BLAKE2b-256 894b33451742a93e3f720aec53a624c843e74b20aacdbfda8b214fc3df669449

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