Skip to main content

Config-driven RunPod orchestration for reusable GPU project deployments.

Project description

runpod-deploy

PyPI version CI Docs Python Downloads License

runpod-deploy is a config-driven RunPod orchestration package for reusable GPU project deployments. It owns the RunPod mechanics; consumer repos own their job configs and project commands.

Quickstart

pip install runpod-deploy

# Smoke-test with the bundled hello example (no RunPod account needed):
runpod-deploy run --config examples/hello/hello.yaml --offline-dry-run

# Or against the cheapest end-to-end pipeline:
runpod-deploy validate --config examples/smoke/a4000_smoke.yaml
runpod-deploy run --config examples/smoke/a4000_smoke.yaml --offline-dry-run
runpod-deploy logs --config examples/smoke/a4000_smoke.yaml          # live-tail the active pod's run log
runpod-deploy cleanup --state-file ~/.runpod-smoke-current            # release the active pod's volume disk
runpod-deploy ls-stale                                                # audit every EXITED pod + estimated $/day
runpod-deploy cleanup --all-stopped --yes                             # bulk-release every paused pod

--offline-dry-run prints the provision/stage/launch/pull/stop command shape without calling runpodctl, SSH, or rsync. For a real end-to-end deploy on a cheap GPU, see examples/smoke/README.md — it walks through the per-host setup (SSH key registration, rsync version) once.

For new consumers, docs/source/quickstart.md is the 5-minute onboarding walkthrough, and docs/source/lifecycle.md explains what happens at each phase of a runpod-deploy run.

Optional: shell tab completion. Install via the [completion] extra and register with your shell:

pip install runpod-deploy[completion]
eval "$(register-python-argcomplete runpod-deploy)"   # bash/zsh

Add the eval line to your ~/.bashrc or ~/.zshrc for persistence.

Contributors: see CONTRIBUTING.md for the editable install (uv pip install -e ".[dev]"), pre-commit setup, and the fork → branch → PR → CI flow.

Examples

Config What it does
smoke/a4000_smoke.yaml Minimal nvidia-smi check on RTX A4000/A4500/A100 in EU-RO-1 — cheapest end-to-end pipeline test
prompt-injection-v3/v3_1_ephemeral.yaml Full prompt-injection-v3 threshold-free study on A100/H100, ephemeral storage
prompt-injection-sdd/headline_resume.yaml Headline/resume evaluation, network-volume storage
research-kb/pdf_embed_gpu.yaml GPU-accelerated PDF embedding pipeline
post_transformers/gpu_benchmark.yaml post-transformers GPU benchmark workload

Consumer-owned configs

The recommended pattern is for the consumer repo to own its runpod-deploy job YAML alongside the project. The YAML lives at consumer-repo/configs/runpod/*.yaml, and local.project_root is set relative to that file's directory:

my-project/
├── pyproject.toml
├── src/...
└── configs/
    └── runpod/
        └── headline.yaml          # local.project_root: ../..
# configs/runpod/headline.yaml
local:
  project_root: ../..   # one level for runpod/, one for configs/

../.. resolves to my-project/, which is what gets rsynced to the pod. A common off-by-one — ../../.. from the same location — resolves to your $HOME directory and would stage the entire home tree to the pod; runpod-deploy validate (and any run) fails-fast in this case.

The example configs under examples/ are not consumer-owned — they live inside this repo, so they use longer paths (../../../prompt-injection-v3) to reach back to a sibling consumer repo. Don't copy that pattern when authoring configs inside your own consumer repo.

Model

Version 1 supports one job per YAML file:

  • RunPod pod settings: image, datacenter, GPU order, storage mode, cost cap.
  • Local staging: rsync pushes from the consumer repo to the pod.
  • Remote setup and preflight commands.
  • Detached remote run script, success marker, and failure markers.
  • Artifact pulls and a reproducibility manifest.

The core is intentionally project-neutral. If a project needs special behavior, put it in its config or shell commands. Python hooks are reserved for a future schema version after at least two projects need the same extension point.

Docs

Full site (searchable, with API reference): https://brandon-behring.github.io/runpod-deploy/

Direct links to the GitHub-rendered markdown:

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

runpod_deploy-0.8.2.tar.gz (247.6 kB view details)

Uploaded Source

Built Distribution

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

runpod_deploy-0.8.2-py3-none-any.whl (72.0 kB view details)

Uploaded Python 3

File details

Details for the file runpod_deploy-0.8.2.tar.gz.

File metadata

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

File hashes

Hashes for runpod_deploy-0.8.2.tar.gz
Algorithm Hash digest
SHA256 215640e85d79b93c8f22df00aa259ef706da965f3b965577ea673e3e746e158f
MD5 c73e1b6c89ad443d92d8a5c651373bb3
BLAKE2b-256 ef93dcfe2f694f6307347652c255b32ef43a31b6650cb253f2fd6f2743ef0546

See more details on using hashes here.

Provenance

The following attestation bundles were made for runpod_deploy-0.8.2.tar.gz:

Publisher: release.yml on brandon-behring/runpod-deploy

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

File details

Details for the file runpod_deploy-0.8.2-py3-none-any.whl.

File metadata

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

File hashes

Hashes for runpod_deploy-0.8.2-py3-none-any.whl
Algorithm Hash digest
SHA256 014cb3fc0a72d408a11a13f92cc2fabc25182e2a71b57471c67118b3a47eef96
MD5 9572e93ea3bd889e5910708f52104f01
BLAKE2b-256 9144fbaeddae66de3f4479bb4fff7916f4c03e9d5a45bc9be189426f243d6795

See more details on using hashes here.

Provenance

The following attestation bundles were made for runpod_deploy-0.8.2-py3-none-any.whl:

Publisher: release.yml on brandon-behring/runpod-deploy

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