GitHub sends the job
The App listens only for jobs carrying a purple-* label and records an idempotent queue event.
Purple turns spare compute on your Lupine nodes into clean, one-job GitHub Actions runners. CPU stays busy. CUDA stays virtual.
Install the App, give Purple access to the repositories you choose, then replace the runner label. Everything else stays yours.
jobs:
test:
- runs-on: ubuntu-latest
+ runs-on: purple-2vcpu-ubuntu-2404
steps:
- uses: actions/checkout@v4
- run: npm test
GitHub remains the source of truth. Purple connects a signed job event to the next healthy Lupine node with compatible capacity.
The App listens only for jobs carrying a purple-* label and records an idempotent queue event.
A cloud node leases the oldest compatible job and receives a GitHub JIT configuration valid for that runner only.
The ephemeral runner executes one job, streams logs to GitHub, cleans its workspace, and deregisters automatically.
Purple keeps the GitHub App key at the edge and hands nodes a single-job JIT configuration. A purple-gpu-* runner is wrapped by Lupine, so CUDA and NVML calls traverse the existing mTLS VirtualGPU data plane without reserving a GPU for CPU-only jobs.
Install in minutes. Pick the repositories. Change one label.
Install Purple on GitHub