skills/depot-github-runners/SKILL.md
Configures Depot-managed GitHub Actions runners as a drop-in replacement for GitHub-hosted runners. Use when setting up or migrating GitHub Actions workflows to use Depot runners, choosing runner sizes (CPU/RAM), configuring runs-on labels, setting up ARM or Windows or macOS runners, troubleshooting GitHub Actions runner issues, configuring egress filtering, using Depot Cache with GitHub Actions, or running Dagger/Dependabot on Depot runners. Also use when the user mentions depot-ubuntu, depot-windows, depot-macos runner labels, or asks about faster/cheaper GitHub Actions runners.
npx skillsauth add depot/skills depot-github-runnersInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Depot provides managed, ephemeral, single-tenant GitHub Actions runners. Drop-in replacement for GitHub-hosted runners — change the runs-on label and everything else stays the same.
Requirement: Repository must be owned by a GitHub organization (not a personal account).
runs-on in your workflow filesIf a user belongs to multiple organizations and expected repos/settings/runners are not visible, verify Depot org context first:
depot org show # Current org ID
depot org list # Orgs the user belongs to
depot org switch <org-id> # Optional: set default org
For commands that support it, pass --org <org-id> to target the org where the workflow/repo lives.
Use a single label. Format: depot-{os}-{version}[-{arch}][-{size}]
| Label | CPUs | RAM | Disk | $/min |
|-------|------|-----|------|-------|
| depot-ubuntu-24.04 | 2 | 8 GB | 100 GB | $0.004 |
| depot-ubuntu-24.04-4 | 4 | 16 GB | 130 GB | $0.008 |
| depot-ubuntu-24.04-8 | 8 | 32 GB | 150 GB | $0.016 |
| depot-ubuntu-24.04-16 | 16 | 64 GB | 180 GB | $0.032 |
| depot-ubuntu-24.04-32 | 32 | 128 GB | 200 GB | $0.064 |
| depot-ubuntu-24.04-64 | 64 | 256 GB | 250 GB | $0.128 |
Ubuntu 22.04 also available: depot-ubuntu-22.04, depot-ubuntu-22.04-4, etc.
Same sizes and pricing as Intel. Add -arm suffix:
depot-ubuntu-24.04-arm, depot-ubuntu-24.04-arm-4, depot-ubuntu-24.04-arm-8, etc.
| Label | CPUs | RAM | $/min |
|-------|------|-----|-------|
| depot-windows-2025 | 2 | 8 GB | $0.008 |
| depot-windows-2025-4 | 4 | 16 GB | $0.016 |
| depot-windows-2025-8 through -64 | 8–64 | 32–256 GB | $0.032–$0.256 |
Windows Server 2022 also available: depot-windows-2022, etc.
Windows limitation: No Hyper-V. Docker does not work on Windows runners.
| Label | CPUs | RAM | $/min |
|-------|------|-----|-------|
| depot-macos-15 / depot-macos-latest | 8 | 24 GB | $0.08 |
| depot-macos-14 | 8 | 24 GB | $0.08 |
macOS is NOT fully elastic — fixed pool with FIFO queuing.
depot-ubuntu-latest → Ubuntu 24.04, depot-windows-latest → Windows 2025, depot-macos-latest → macOS 15
jobs:
build:
# Before:
# runs-on: ubuntu-latest
# After:
runs-on: depot-ubuntu-24.04-4
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm test
# ❌ WRONG — multiple labels cause stability issues
runs-on: [self-hosted, depot-ubuntu-24.04]
# ✅ CORRECT — always use a single Depot runner label
runs-on: depot-ubuntu-24.04-4
Actions using the GitHub Actions cache API automatically use Depot Cache — no config changes needed. This includes actions/cache, actions/setup-node, actions/setup-python, actions/setup-java, and any action using @actions/cache.
Pre-configured build tool caches (zero config on Depot runners):
|Tool |What's pre-configured |
|---------|--------------------------------------------------------------|
|Turborepo|TURBO_API env var set — just run turbo build |
|Bazel |~/.bazelrc pre-populated — just run bazel build //... |
|sccache |SCCACHE_WEBDAV_ENDPOINT set — use RUSTC_WRAPPER: 'sccache'|
|Maven |settings.xml pre-populated (cache id depot-cache) |
|Pants |pants.toml pre-configured — just run pants package :: |
|moonrepo |Env vars set — just run moon run build |
Cache behavior: repository-scoped, no branch isolation, encrypted, up to 1000 MiB/s throughput, configurable retention (7/14/30 days).
To disable auto-cache: org settings → turn off "Allow Actions jobs to automatically connect to Depot Cache."
Deprecated: Dagger Engine support on Depot GitHub Actions Runners is being deprecated and will be removed in a future update. Don't recommend this integration for new workflows.
runs-on: depot-ubuntu-latest,dagger=0.15.1
Launches a dedicated Dagger Engine VM with persistent NVMe cache. Dagger CLI pre-installed. Additional $0.04/min.
Configure in org settings → GitHub Actions Runners → Egress Rules. Set default rule to Allow or Deny, then add specific allow/deny rules for IPs, CIDRs, or hostnames. Not supported on macOS or Windows. Incompatible with Tailscale.
Use Tailscale when jobs need to reach private services (internal APIs, databases, private subnets) without static IP allowlists.
How it works on Depot:
tag:depot-runner).Setup:
tag:depot-runner) under tagOwners.Keys > Auth Keys write scope and choose that tag.tag:depot-runner to access target hosts/subnets.ACL examples:
{
"acls": [
{
"action": "accept",
"src": ["tag:depot-runner"],
"dst": ["database-hostname"]
}
]
}
{
"acls": [
{
"action": "accept",
"src": ["tag:depot-runner"],
"dst": ["192.0.2.0/24:*"]
}
]
}
Reference docs:
Enable "Dependabot on self-hosted runners" in GitHub org settings. Jobs auto-run on depot-ubuntu-latest.
Important: OIDC is not supported for Dependabot. Use token: input with a DEPOT_TOKEN secret instead.
steps:
- uses: actions/checkout@v4
- uses: mxschmitt/action-tmate@v3
- run: npm test
|Error |Fix |
|--------------------------------------------|---------------------------------------------------------------------------------------------------|
|"No space left on device" |OS uses ~70 GB disk; upgrade to larger runner or clean disk in workflow |
|"Lost communication with server" |Check status.depot.dev; check org usage caps |
|"Operation was canceled" |Manual cancel, concurrency cancel-in-progress, or OOM — check memory in dashboard |
|"Unable to get ACTIONS_ID_TOKEN_REQUEST_URL"|Dependabot doesn't support OIDC — use DEPOT_TOKEN secret |
|Workflows not starting |Verify single runner label; check runner group allows the repo; verify Depot GitHub App permissions|
|Stuck workflows |Force cancel via GitHub API: POST /repos/{owner}/{repo}/actions/runs/{id}/force-cancel |
tools
Handles Depot CLI installation, authentication, login, project setup, organization management, and API access. Use when installing the Depot CLI, logging in with `depot login`, creating or managing Depot projects, configuring API tokens or OIDC trust relationships, setting up depot.json, managing organizations, resetting build caches, or using the Depot API/SDKs. Also use when the user asks about Depot authentication methods, token types, environment variables, or general Depot platform setup that isn't specific to container builds, GitHub Actions runners, or Depot CI.
development
Configures and runs Depot remote container builds using `depot build` and `depot bake`. Use when building Docker images, creating Dockerfiles with Depot, pushing images to registries, building multi-platform/multi-arch images (linux/amd64, linux/arm64), debugging container build failures, optimizing Dockerfile layer caching, using docker-bake.hcl or docker-compose builds, or migrating from `docker build` / `docker buildx build` to Depot. Also use when the user mentions depot build, depot bake, container builds, image builds, or asks about Depot's build cache, build parallelism, or ephemeral registry.
development
Configures and manages Depot CI, a drop-in replacement for GitHub Actions that runs workflows entirely within Depot. Use when migrating GitHub Actions workflows to Depot CI, running `depot ci migrate`, managing Depot CI secrets and variables, running workflows with `depot ci run`, debugging Depot CI runs with `depot ci run list`, `depot ci status`, `depot ci logs`, or `depot ci ssh`, checking workflow compatibility, or understanding Depot CI capabilities. Also use when the user mentions .depot/ directory, depot ci commands, or asks about running GitHub Actions workflows on Depot's infrastructure without GitHub-hosted runners.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.