paralleliq-dstack-plugin
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
Metadata
Release files for paralleliq-dstack-plugin 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| paralleliq_dstack_plugin-0.2.0.tar.gz | 3.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| paralleliq_dstack_plugin-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 7.1 kB
Release files / paralleliq_dstack_plugin-0.2.0.tar.gz
| Download URL | paralleliq_dstack_plugin-0.2.0.tar.gz |
|---|---|
| Size | 3.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eab1fa89b116d0d2d06dbb792c20d67d8cb2f0ecf13ffab9c6ed24d143a174cc
|
|
BLAKE2b-256 checksum How to use checksums |
7e41ce34562e7cef521790fa60019e930e179ef5be75c43fcdbf5b5ff77aaa53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|
Release files / paralleliq_dstack_plugin-0.2.0-py3-none-any.whl
| Download URL | paralleliq_dstack_plugin-0.2.0-py3-none-any.whl |
|---|---|
| Size | 3.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8872e69aaba8e1153fdc0f362dba34dd26734bef288eacd65f6fa1d2c2d395e4
|
|
BLAKE2b-256 checksum How to use checksums |
d198e1c610cb25872a0a8321701cc9298c336a6c1fd74947664cc7728ca5b25c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.7
|