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 nametier: 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 identifiercode: Code to executelanguage:"python","bash", or"nodejs"timeout: Execution timeout in secondswait: Wait for execution to complete
Returns: ExecutionResult with:
stdout: Standard outputstderr: Standard errorexit_code: Exit code (0 = success)execution_time: Time taken in secondserror: 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
- Visit https://firevm-frontend-345160625255.asia-northeast1.run.app
- Sign up for an account
- Copy your API key from the dashboard
Support
- Documentation: https://docs.firevm.dev
- Issues: https://github.com/firevm/firevm-python-sdk/issues
- Email: support@firevm.dev
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
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 firevm_sdk-0.1.3.tar.gz.
File metadata
- Download URL: firevm_sdk-0.1.3.tar.gz
- Upload date:
- Size: 6.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55411ab5450d440952c887bfecf3d6e5b167657c493a1f8b586462ec5ab957d1
|
|
| MD5 |
222933d60c2c5906d8c253a881aa64e8
|
|
| BLAKE2b-256 |
e8f55f02648020875d7f1cf990b8879110a94743ceac619716a06c8ae734d2f8
|
File details
Details for the file firevm_sdk-0.1.3-py3-none-any.whl.
File metadata
- Download URL: firevm_sdk-0.1.3-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86001c13f697d058ea5615dcb4e20afaf502a5dac4c784a18405dc9f2b3fe64a
|
|
| MD5 |
226aaaf1ed01b79f7c2b55540eecae95
|
|
| BLAKE2b-256 |
beae8cc6c339f3684579ca45b7121895517abdb68404a7d04a77f0befc6a4c01
|