Skip to main content

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",
)

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 (returns immediately)
run_and_wait(script, **opts) Submit and block until done
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 install or download from releases

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

magpie_mags-1.0.0.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

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

magpie_mags-1.0.0-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file magpie_mags-1.0.0.tar.gz.

File metadata

  • Download URL: magpie_mags-1.0.0.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.6

File hashes

Hashes for magpie_mags-1.0.0.tar.gz
Algorithm Hash digest
SHA256 ff5a20a4fa5cf0acf56e158387d693a95c06f90733f9252b7b30590cd2bdd4d6
MD5 64d2f527c957a4278ffd6cc688a3250e
BLAKE2b-256 f92d65d60f8b419c1203e05c7528f928cdaa295d7f1e29faaf096465fcbe2ff7

See more details on using hashes here.

File details

Details for the file magpie_mags-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: magpie_mags-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.9.6

File hashes

Hashes for magpie_mags-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 20e4bf72ff783895acf596155d3e0aedcba33fe2d4a12caf61ece131ed2e5cc0
MD5 2e91c679b1d2b6f3c92731b5278895c5
BLAKE2b-256 f4ab873ec57200ef548c262b2582da317f7b49ebe49258c37ac5944c7c0c2a64

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