Mags SDK - Execute scripts on Magpie's instant VM infrastructure
Project description
Mags Python SDK
Execute scripts on Magpie's instant VM infrastructure from Python.
Install
pip install magpie-mags
Quick Start
from mags import Mags
m = Mags(api_token="your-token")
# Run a script and wait for the result
result = m.run_and_wait("echo 'Hello from a VM!'")
print(result["status"]) # "completed"
print(result["exit_code"]) # 0
for log in result["logs"]:
print(log["message"])
Authentication
Pass api_token directly, or set one of these environment variables:
export MAGS_API_TOKEN="your-token"
# or
export MAGS_TOKEN="your-token"
Usage
Run a Script
# Fire-and-forget
job = m.run("apt install -y ffmpeg && ffmpeg -version")
print(job["request_id"])
# Run and wait for completion
result = m.run_and_wait(
"python3 -c 'print(sum(range(100)))'",
timeout=30,
)
Persistent Workspaces
# First run: creates the workspace
m.run_and_wait(
"pip install pandas && echo 'setup done'",
workspace_id="my-project",
persistent=True,
)
# Second run: reuses the workspace (pandas is already installed)
m.run_and_wait(
"python3 -c 'import pandas; print(pandas.__version__)'",
workspace_id="my-project",
)
Always-On VMs
# VM that never auto-sleeps — stays running 24/7
job = m.run(
"python3 server.py",
workspace_id="my-api",
persistent=True,
no_sleep=True,
)
# Auto-recovers if the host goes down
Enable URL / SSH Access
job = m.run("python3 -m http.server 8080", persistent=True)
# HTTP access
access = m.enable_access(job["request_id"], port=8080)
print(access["url"])
# SSH access
ssh = m.enable_access(job["request_id"], port=22)
print(f"ssh root@{ssh['ssh_host']} -p {ssh['ssh_port']}")
Upload Files
file_ids = m.upload_files(["data.csv", "config.json"])
result = m.run_and_wait(
"ls /uploads && wc -l /uploads/data.csv",
file_ids=file_ids,
)
Cron Jobs
cron = m.cron_create(
name="nightly-backup",
cron_expression="0 0 * * *",
script="tar czf /workspace/backup.tar.gz /data",
workspace_id="backups",
)
jobs = m.cron_list()
m.cron_update(cron["id"], enabled=False)
m.cron_delete(cron["id"])
Check Usage
usage = m.usage(window_days=7)
print(f"Jobs: {usage['total_jobs']}, VM seconds: {usage['vm_seconds']:.0f}")
API Reference
| Method | Description |
|---|---|
run(script, **opts) |
Submit a job (persistent, no_sleep, workspace_id, ...) |
run_and_wait(script, **opts) |
Submit and block until done |
new(name, **opts) |
Create a persistent VM workspace |
find_job(name_or_id) |
Find a running/sleeping job by name or workspace |
exec(name_or_id, command) |
Run a command on an existing VM via SSH |
stop(name_or_id) |
Stop a running job |
resize(workspace, disk_gb) |
Resize a workspace's disk |
status(request_id) |
Get job status |
logs(request_id) |
Get job logs |
list_jobs(page, page_size) |
List recent jobs |
update_job(request_id, startup_command) |
Update job config |
enable_access(request_id, port) |
Enable URL or SSH access |
usage(window_days) |
Get usage summary |
upload_file(path) |
Upload a file, returns file ID |
upload_files(paths) |
Upload multiple files |
cron_create(**opts) |
Create a cron job |
cron_list() |
List cron jobs |
cron_get(id) |
Get a cron job |
cron_update(id, **updates) |
Update a cron job |
cron_delete(id) |
Delete a cron job |
Links
- Website: mags.run
- Node.js SDK:
npm install @magpiecloud/mags - CLI:
go installor download from releases
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
magpie_mags-1.3.4.tar.gz
(8.1 kB
view details)
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 magpie_mags-1.3.4.tar.gz.
File metadata
- Download URL: magpie_mags-1.3.4.tar.gz
- Upload date:
- Size: 8.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
570776b0c2b2d447e9d93f65fb14034fd40ccfc23cc5a4b5fc066be7d50fc371
|
|
| MD5 |
60ad7aa06926690c69f856243f20b405
|
|
| BLAKE2b-256 |
a78398f442848590a1faff9f6a4d21e9cb07073bbc04b413323699d2558cc25b
|
File details
Details for the file magpie_mags-1.3.4-py3-none-any.whl.
File metadata
- Download URL: magpie_mags-1.3.4-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fac6c2e8bbfb47467b685045702533ec7b2902a7bdf94586edab317382d93db6
|
|
| MD5 |
c14e334a33d7242cde66d3832edc67b4
|
|
| BLAKE2b-256 |
5b8c0989339fc3780acc44011d293e13c0ea15c59a1fb7c5c25e5532f96308fb
|