paralleliq-dstack-plugin
June 13, 2026 · View on GitHub
A dstack plugin that surfaces piqc — Paralleliq's open-source GPU waste scanner — whenever a GPU fleet or run is applied to a dstack project.
What it does
When a user runs dstack apply on a fleet or task that requests GPU resources, the plugin prints a one-time message showing how to run a GPU waste scan against the cluster:
╔══════════════════════════════════════════════════════════════════╗
║ Paralleliq — GPU fleet detected ║
║ ║
║ Run a free GPU waste scan on this cluster: ║
║ ║
║ kubectl apply -f https://.../deploy/rbac.yaml ║
║ kubectl apply -f https://.../deploy/scan-job.yaml ║
║ kubectl logs -n kube-system job/piqc-scan ║
║ ║
║ github.com/paralleliq/piqc · paralleliq.ai ║
╚══════════════════════════════════════════════════════════════════╝
The two kubectl commands:
- Apply RBAC — creates a
ServiceAccount,ClusterRole, andClusterRoleBindingscoped to what piqc needs - Run the scan — launches a one-shot K8s Job using
ghcr.io/paralleliq/piqc:latest
Results appear in the job logs. The job auto-deletes after 10 minutes.
Why kubectl instead of a dstack task?
piqc needs cluster-wide Kubernetes API access — to list pods, deployments, and nodes, and to exec into pods to run nvidia-smi. dstack does not currently support specifying a serviceAccountName in task configuration, so a dstack task would run with the namespace default service account and have no cluster permissions.
Using standard K8s manifests lets piqc work correctly on any Kubernetes cluster, dstack-managed or not.
Installation
Install on the server where dstack is running:
pip install paralleliq-dstack-plugin
dstack discovers plugins automatically via Python entry points — no additional configuration required.
Requirements
- dstack >= 0.19 (server-side installation)
- kubectl access to the cluster (for running the scan commands)
piqc
piqc is open-source. Source and docs: github.com/paralleliq/piqc
Built by Paralleliq