Hugging Face published a hands-on guide on June 9, 2026 showing how to keep GitHub Actions in charge of CI while running the actual jobs on Hugging Face Jobs. The writeup is based on a real migration of Trackio, Gradio’s experiment-tracking library.
What Hugging Face Jobs Adds
A Job is a command, a Docker image, a hardware flavor and optional secrets bundled together. That makes it a natural fit for CI, where steps are already command-driven and often benefit from picking exactly the right accelerator.
The Bridge Architecture
The huggingface/jobs-actions project turns a GitHub Actions job into an ephemeral self-hosted runner. A triggered workflow sends a signed webhook to a dispatcher Space, which verifies the event, mints a short-lived runner registration token and launches an HF Job on matching hardware.
Setup in Five Steps
- Duplicate the dispatcher Space under your namespace using
cpu-upgradeso webhooks are not missed - Create and install the GitHub App from the Space and store an
HF_TOKENsecret - Set final dispatcher variables, including
HF_NAMESPACEif jobs should bill elsewhere - Change
runs-onfromubuntu-latesttohf-jobs-cpu-upgradeor a GPU label - Test with a minimal workflow and watch logs stream back to GitHub
The Results
For Trackio, the numbers were concrete: a GitHub ubuntu-latest baseline of about 1m40s, an HF Jobs CPU run on the Microsoft Playwright image at 1m10s (about 30 percent faster), and a GPU check on t4-small finishing in 45s for less than a cent.
Images, Logs and Next Steps
The guide notes that image choice matters. A bare ubuntu:22.04 was slower than GitHub’s loaded runner, while mcr.microsoft.com/playwright:v1.60.0-jammy and nvidia/cuda:12.4.0-runtime-ubuntu22.04 worked well. Logs can be pulled with hf jobs logs, and Jobs also supports volume mounts for datasets and models.