GitHub assigns a job
The controller listens to one runner scale set. It never needs your repository code.
Open source / MIT
Start one isolated worker per job, enforce a runtime budget, and remove the worker when the job ends.
No Kubernetes. No hosted control plane. The first adapter runs on Fly Machines; the compute interface stays provider-neutral.
GitHub Actions
Job assignment and status
RunnerYard controller
trusted
GitHub App, provider token, runtime ledger
Ephemeral worker
untrusted
One JIT config, one job, then destroyed
GitHub keeps the workflow experience. Your account supplies disposable compute.
The controller listens to one runner scale set. It never needs your repository code.
Your provider receives a short-lived lease and one GitHub JIT configuration.
The worker executes the job with the image, CPU, and memory you selected.
Completion, timeout, or reconciliation destroys it. Idle workers default to zero.
Security model
Workers are treated as hostile and disposable. Permanent credentials never enter the job environment.
Read every trust boundaryGitHub App and provider credentials live only in the trusted controller. A worker gets one JIT configuration.
Control and worker scopes use separate apps and networks. The doctor command rejects shared Fly apps and worker secrets.
Concurrency, maximum lifetime, and a durable rolling runtime budget are checked before a worker can start.
Controller and lease metadata let reconciliation ignore infrastructure created by another controller.
The controller reserves worst-case runtime before launch. Missing or corrupt budget state queues jobs instead of resetting the ceiling.
MIN_RUNNERS=0
MAX_RUNNERS=4
RUNNER_MAX_LIFETIME=2h
RUNNER_USAGE_BUDGET=166h40mThe initializer writes local configuration and a canary workflow. It does not create infrastructure or upload credentials.
$ npx runneryard init --github https://github.com/acme/widgetsReview the files
Nothing is deployed by init.
Create isolated apps
Then run doctor before deploy.
Run one canary
Verify the worker disappears.
The core depends on launch, inventory, and destroy. Provider details stay in adapters.
Fly Machines
Bundled now. Separate apps, networks, and zero-idle workers.
Other clouds
Implement the small compute contract without changing orchestration.
Read the adapter contract