← Providers

Bring another provider.

Three methods

The controller owns GitHub, concurrency, budgets, and cleanup policy. An adapter only translates one disposable worker into provider infrastructure.

The interface

Terminal
type Compute interface {
  Launch(context.Context, Lease) (Worker, error)
  Inventory(context.Context) ([]Worker, error)
  Destroy(context.Context, string) error
}

What the adapter owns

Image selection, machine shape, region, bootstrap, provider authentication, ownership metadata, and provider state translation.

Acceptance bar

  • One JIT configuration starts exactly one isolated worker.
  • Inventory returns owned workers and excludes everything else.
  • Destroy is forced, idempotent, and safe after a partial launch.
  • No provider or controller credential enters job code.
  • Controller restart can adopt and later remove every worker.

Read the full adapter contract and use the Fly and Hetzner tests as executable examples.