GitHub Actions, forged on Lupine Cloud

Your cloud has idle CPU.
Your CI has a queue.

Purple turns spare compute on your Lupine nodes into clean, one-job GitHub Actions runners. CPU stays busy. CUDA stays virtual.

purple / live capacity
live
JOB QUEUE
lint-and-testlupinemachines/cloud · #184
cuda-integrationlupinemachines/lupine · #352
··
release-linuxwaiting for capacity
LUPINE NODES
coreweave-ord132 / 192 vCPU in use
CPUlocal execution
CUDAVirtualGPU route
Ephemeralone clean runner per job
Elasticcapacity follows spare CPU
GPU-safeCUDA stays behind VirtualGPU
Drop-inchange one workflow label
THE SWITCH

One line. The same workflow.
A different place to run.

Install the App, give Purple access to the repositories you choose, then replace the runner label. Everything else stays yours.

.github/workflows/ci.yml
jobs:
  test:
-   runs-on: ubuntu-latest
+   runs-on: purple-2vcpu-ubuntu-2404
    steps:
      - uses: actions/checkout@v4
      - run: npm test
HOW IT WORKS

From queued to running,
without a standing fleet.

GitHub remains the source of truth. Purple connects a signed job event to the next healthy Lupine node with compatible capacity.

01

GitHub sends the job

The App listens only for jobs carrying a purple-* label and records an idempotent queue event.

02

An idle node claims it

A cloud node leases the oldest compatible job and receives a GitHub JIT configuration valid for that runner only.

03

The runner disappears

The ephemeral runner executes one job, streams logs to GitHub, cleans its workspace, and deregisters automatically.

BUILT AROUND THE TRUST BOUNDARY

Jobs get a runner.
They do not get your GPU.

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.

  • Short-lived credentialsJIT config is scoped to one ephemeral runner.
  • Verified webhooksEvery GitHub delivery is HMAC checked and deduplicated.
  • No App key on nodesCloud nodes authenticate to Purple with a separate control-plane token.
  • VirtualGPU for GPU jobsNo physical GPU device is mounted into the Actions runner.
YOUR NEXT BUILD HAS SOMEWHERE TO GO

Put the purple machines to work.

Install in minutes. Pick the repositories. Change one label.

Install Purple on GitHub