Skip to main content

Professional CLI toolkit for Modal GPU workflows, account management, and billing visibility

Project description

🚀 m-gpux

A professional CLI toolkit for Modal power users. Need fast GPU access, multi-profile account control, and simple cost visibility? Look no further.

Python PyPI CLI Docs License


✨ Highlights

  • 🧠 LLM API Server — Deploy any HuggingFace model as an OpenAI-compatible endpoint with API key auth.
  • ⚡ Interactive GPU Hub — Spin up Jupyter, execute scripts, and establish web shell sessions instantly.
  • 👥 Multi-Account Management — Seamlessly manage multiple profiles in one unified command namespace.
  • 💸 Unified Cost Visibility — Inspect billing per profile or get a comprehensive view across all configured accounts.
  • 🎨 Friendly Terminal UX — Enjoy rich tables, intuitive prompts, and interactive guided flows right in your terminal.

📖 Table of Contents


⚙️ Installation

Prerequisites

  • Python: 3.10 or higher.
  • Credentials: Modal account credentials (token_id, token_secret).
  • Modal CLI: Ensure the modal CLI is installed and in your PATH.

PyPI (Recommended)

The fastest way to get started is by installing directly from PyPI.

pip install m-gpux

From Source

Great for contributors or users who want the bleeding edge.

git clone https://github.com/PuxHocDL/m-gpux.git
cd m-gpux
pip install -e .

🚀 Quick Start

Get up and running in 5 easy steps:

# 1) Add your first profile
m-gpux account add

# 2) Check configured profiles
m-gpux account list

# 3) Launch the interactive GPU hub
m-gpux hub

# 4) Deploy an LLM as an OpenAI-compatible API
m-gpux serve deploy

# 5) Inspect 30-day usage across all accounts
m-gpux billing usage --days 30 --all

🛠️ Core Commands

Whether you need to manage your accounts, deploy APIs, or check your billing, we've got you covered. Check out our global commands with m-gpux --help and m-gpux info.

👥 Profile Management

Seamlessly hop between different Modal environments.

m-gpux account list                    # View all active profiles
m-gpux account add                     # Interactively add a new profile
m-gpux account switch <profile_name>   # Switch active profile
m-gpux account remove <profile_name>   # Remove an existing profile

Note: Modal profiles are safely persisted in ~/.modal.toml. If the active profile is removed, another existing profile is automatically promoted.

⚡ Interactive Hub

Your control center for remote execution.

m-gpux hub

Actions included:

  • 🪐 Launch Jupyter Lab on your selected GPU.
  • 📜 Run local Python scripts natively on remote GPUs.
  • 💻 Initiate an interactive web Bash shell session.

🧠 LLM API Server

Turn your HuggingFace models into live endpoints.

m-gpux serve deploy             # Deploy a model (interactive wizard)
m-gpux serve dashboard          # Live metrics dashboard in terminal
m-gpux serve logs               # Stream server logs
m-gpux serve warmup             # Trigger cold start and warm up engine
m-gpux serve stop               # Stop the server

# Secure your endpoints
m-gpux serve keys create        # Generate a new API key
m-gpux serve keys list          # List all keys (masked for security)
m-gpux serve keys show <name>   # Reveal the full key value
m-gpux serve keys revoke <name> # Revoke access

Key Features:

  • Bearer token authentication (401/403).
  • Full support for streaming & non-streaming chat completions.
  • Live dashboard — GPU/CPU/RAM metrics, latency percentiles, traffic, and token counts with progress bars.
  • Resilient proxy — automatic retry with backoff, backpressure (429), internal streaming to prevent timeouts on long inference.
  • Configurable vLLM hyperparameters (GPU memory utilization, tensor parallelism, max sequences).
  • 11 built-in popular model presets (Qwen, Llama, Gemma, Phi, etc.).

💸 Billing

Keep unexpected costs at bay.

m-gpux billing open                    # Open billing dashboard in browser
m-gpux billing usage --days 7          # Review last 7 days of usage
m-gpux billing usage --account dev     # Target specific accounts
m-gpux billing usage --all             # Aggregate cross-account usage

🛑 Stop Processes

Clean up your workspace quickly.

m-gpux stop          # Stop apps on the current profile
m-gpux stop --all    # Stop apps across ALL profiles

📚 Documentation

Dive deeper into our extensive guides:


🏗️ Architecture

Under the hood, m-gpux is built for modularity:

Component Responsibility
m_gpux/main.py CLI entrypoint and command registration
m_gpux/commands/account.py Profile CRUD operations and switching
m_gpux/commands/billing.py Usage aggregation and dashboard linking
m_gpux/commands/hub.py Guided GPU runtime execution launcher
m_gpux/commands/serve.py LLM API deployment, proxy, and auth management
m_gpux/commands/load.py Live hardware metrics probe

🔧 Troubleshooting

Have issues? Here's how to fix common hiccups:

  • No configured Modal profiles found
    • Fix: Run m-gpux account add to set one up.
  • modal: command not found
    • Fix: Make sure the Modal CLI is installed and your PATH is set correctly.
  • Script file does not exist in hub mode
    • Fix: Ensure you run the command from the script's directory, or double-check the path you provided.

🤝 Contributing

We welcome your PRs! Help us polish the UX, refine commands, and expand the documentation.

Local Setup:

pip install -e .
python -m m_gpux.main --help

📦 PyPI Publishing

Automated with GitHub Actions. Maintainers can release instantly:

  1. Ensure the PyPI Trusted Publisher is configured (pypi environment, PuxHocDL/m-gpux).
  2. Update the version inside pyproject.toml.
  3. Tag the release:
git tag v1.0.8 && git push origin v1.0.8

The Publish Python Package workflow will build and upload.


Available under the MIT License.

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

m_gpux-1.0.14.tar.gz (40.3 kB view details)

Uploaded Source

Built Distribution

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

m_gpux-1.0.14-py3-none-any.whl (41.4 kB view details)

Uploaded Python 3

File details

Details for the file m_gpux-1.0.14.tar.gz.

File metadata

  • Download URL: m_gpux-1.0.14.tar.gz
  • Upload date:
  • Size: 40.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for m_gpux-1.0.14.tar.gz
Algorithm Hash digest
SHA256 7d94eeb06f461e1ec3f9e11a596598ad46af0ec239d4eda6e576a3291cb8e180
MD5 b57806ef72f189ce4afab84ce44ecfaf
BLAKE2b-256 093eed8544b942ab5e57a6e340c23f997c621edf94babe5937d09d53f3b5d66e

See more details on using hashes here.

Provenance

The following attestation bundles were made for m_gpux-1.0.14.tar.gz:

Publisher: publish-pypi.yml on PuxHocDL/m-gpux

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file m_gpux-1.0.14-py3-none-any.whl.

File metadata

  • Download URL: m_gpux-1.0.14-py3-none-any.whl
  • Upload date:
  • Size: 41.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for m_gpux-1.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 9f2437a3bf91a00969cd666c24cbb169c6004e5a6a14bf998165ea27e7c4ae14
MD5 959783ad31d861abfc6feab3cfa6fdd3
BLAKE2b-256 61280c57086c313548b356119f093b52ad9e731d95a2fc14ceed3e4ef5030df6

See more details on using hashes here.

Provenance

The following attestation bundles were made for m_gpux-1.0.14-py3-none-any.whl:

Publisher: publish-pypi.yml on PuxHocDL/m-gpux

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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