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 VM sandbox (persistent=True for S3) |
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 |
url(name_or_id, port) |
Enable public URL and return full URL |
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, **opts) |
Update job config (startup_command, no_sleep) |
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 |
url_alias_create(sub, ws_id) |
Create a stable URL alias |
url_alias_list() |
List URL aliases |
url_alias_delete(sub) |
Delete a URL alias |
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:
npm install -g @magpiecloud/mags
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.6.tar.gz
(8.3 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.6.tar.gz.
File metadata
- Download URL: magpie_mags-1.3.6.tar.gz
- Upload date:
- Size: 8.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ef656975f4b0337c71e6a9b2450156888d6a0e978305719b6411d8a19822e06
|
|
| MD5 |
3cf03ef92b27d32ed5091359303d3f42
|
|
| BLAKE2b-256 |
09b2f705db36cbf6eaf1cc375d1b7b8f4b542d436f08cb9627375f0d91f76e2a
|
File details
Details for the file magpie_mags-1.3.6-py3-none-any.whl.
File metadata
- Download URL: magpie_mags-1.3.6-py3-none-any.whl
- Upload date:
- Size: 8.6 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 |
7eab5d8125de6b83ef618acf033eac2c8679e573ce8c205e1fbba8d029360483
|
|
| MD5 |
8894c20680ddaac52efcee466d9b0e43
|
|
| BLAKE2b-256 |
1b8870315ed76399789198baaec003d0185bd848ec1d4e31b495c6f140806e26
|