Skip to main content
m-gpux logo

m-gpux

The GPU workbench for Modal.

PyPI - License PyPI - Downloads Version Python VS Code Marketplace

m-gpux is a CLI for getting real work done on Modal GPUs. It turns a folder on your laptop into a GPU dev box, a Jupyter session, a hosted web app, an OpenAI-compatible LLM endpoint, or a whole Docker Compose stack — across every Modal account you own, with the price per hour in front of you before anything starts.

Quickstart

pip install m-gpux         # also installs the `modal` CLI that m-gpux drives
m-gpux account add         # paste a `modal token set ...` command
cd my-project
m-gpux dev up              # pick an account and a GPU; this folder lands in /workspace
m-gpux dev code            # open it in VS Code (Remote-SSH)
m-gpux dev pause           # snapshot everything, stop paying for compute

If you'd rather click through a menu, m-gpux hub launches Jupyter, a script run, a browser terminal, or vLLM on any GPU from one guided wizard.

For the same workflows inside your editor, install the m-gpux VS Code extension.

m-gpux ecosystem

The CLI works on its own, and each piece below plugs into the same accounts, presets, and budgets.

  • CLI — dev boxes, Hub, hosting, serving, Compose, budgets, and billing from one command
  • VS Code extension — accounts, sessions, presets, and the Hub / host / serve wizards in a sidebar
  • Documentation — guides for every workflow, plus the full command reference
  • Examples — ready-to-deploy FastAPI, Flask, and static-site projects for m-gpux host

Why use m-gpux?

m-gpux wraps Modal's primitives (Sandboxes, Functions, Servers, Volumes, named Images) into workflows that fit how you already develop.

  • Dev boxes that survive the night — Sandboxes running sshd, reachable with plain ssh or VS Code Remote-SSH. pause snapshots the whole filesystem and resume boots it back in seconds; sync push/pull moves files both ways
  • Every GPU, priced up front — T4 through H100, H200, B200, and B300, including multi-GPU containers (H100:8), with $/hour in every picker and m-gpux billing rates for the live price table
  • Many accounts, one budget — per-account monthly limits, budget-aware AUTO selection, a warning before you launch on an account that's nearly empty, and budget check --stop to shut down apps on accounts that go over
  • From localhost to a URL — m-gpux host deploys FastAPI, Flask, Django, or a static folder with scale-to-zero; --server uses Modal's low-latency @app.server() primitive
  • Your own OpenAI-compatible endpoint — m-gpux serve deploy puts any Hugging Face model behind vLLM with API keys, streaming, warmup, logs, and a live metrics dashboard
  • Kaggle & Colab too — m-gpux kaggle and m-gpux colab drive Kaggle notebooks and Colab runtimes across many accounts: weekly GPU hours and compute units at a glance, AUTO picks the account with the most left, kernels pushed as any account (Colab CLI works on Windows)
  • A local control plane — m-gpux ui opens a web dashboard on localhost: every account's credit and workspace, live apps, containers and sandboxes across accounts, sessions, endpoints and GPU prices, with stop / logs / budget actions
  • Scripts as an async API — m-gpux gateway deploy exposes the tasks you declare in mgpux.gateway.toml as an authenticated job API: submit JSON, poll for results, each task autoscaling on its own CPU or GPU
  • Docker Compose, lifted as-is — run a docker-compose.yml as one container, a full VM-style image (Triton, gRPC), or one Sandbox per service with readiness probes and working service-to-service addresses
  • Starts in seconds, not minutes — m-gpux image build bakes your dependencies once and publishes them to every account; Hub and dev boxes offer them as the base image
  • Nothing hidden — every workflow generates a plain Modal script you can read and edit before it runs

Resources

Contributing

git clone https://github.com/PuxHocDL/m-gpux.git
cd m-gpux
pip install -e ".[dev,docs]"
m-gpux --help

Each command group is a plugin in m_gpux/plugins/<name>/plugin.py, registered in both m_gpux/plugins/__init__.py and the m_gpux.plugins entry-point group in pyproject.toml.

Run the same checks used by CI before opening a pull request:

ruff check m_gpux tests
python -m unittest discover -s tests -v
mkdocs build --strict

cd m-gpux-vscode
npm ci
npm run typecheck
npm run compile

cd ../m-gpux-ui
npm ci
npm run build

License

MIT

Metadata

Release files for m-gpux 3.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for m-gpux 3.1.1
File Size Uploaded Provenance Actions
m_gpux-3.1.1.tar.gz 217.2 kB With provenance Details for m_gpux-3.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for m-gpux 3.1.1
File Interpreter ABI Platform Actions
m_gpux-3.1.1-py3-none-any.whl Python 3 none any Details for m_gpux-3.1.1-py3-none-any.whl

Total release size: 449.4 kB

Release files / m_gpux-3.1.1.tar.gz

Download URL m_gpux-3.1.1.tar.gz
Size 217.2 kB
Tags Source
SHA-256 checksum
How to use checksums
9e8e28686f5a201f68e0b611b328b479438d8ba29246e8577de57c25467099a8
BLAKE2b-256 checksum
How to use checksums
8aedb93659c0d76dce6cd07f2f3d901a93e0f26afdb4c41a6c860c97ae5d3c3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.

Transparency log

Release files / m_gpux-3.1.1-py3-none-any.whl

Download URL m_gpux-3.1.1-py3-none-any.whl
Size 232.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
77b5974f50c777a5ecfb0d4044efbdef85e08290c4acf2b7e0fa3d0b04d5623f
BLAKE2b-256 checksum
How to use checksums
3ed9da53ee058e1b777c5da71bca024052efccff267dd3725c51a1b2092aa3ea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.

Transparency log

Security for m-gpux 3.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for m_gpux-3.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 3, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

3.1.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page