New to Claude Skills? Learn how to install them →

Dposthog on GitHub

Depot GitHub Actions Runners

Free

Efficiently manage GitHub Actions with Depot's runners.

by posthog37.6k stars on posthog/posthog
2 views
Updated Aug 11, 2026
Get this skill

Free · Opens the source repo

What Depot GitHub Actions Runners does

Depot GitHub Actions Runners provide a managed solution for GitHub Actions, allowing users to replace GitHub-hosted runners with Depot's ephemeral, single-tenant runners. This setup is beneficial for organizations looking to optimize their CI/CD workflows by choosing specific runner sizes based on CPU and RAM requirements. Users can easily configure their workflows to use Depot runners by simply updating the runs-on label in their GitHub Actions YAML files.

To get started, users need to connect their GitHub organization to the Depot dashboard and ensure that their repository settings allow for public repositories if applicable. The runners are available in various configurations across different operating systems, including Ubuntu, Windows, and macOS. This flexibility allows teams to select the most appropriate runner for their specific needs, whether they require ARM architecture or specific Windows Server versions.

One of the key advantages of using Depot runners is the automatic integration with Depot Cache, which enhances build performance without any additional configuration. This feature is particularly useful for teams using popular build tools like Maven, Bazel, and Turborepo, as it pre-configures caching settings to speed up build times. Additionally, Depot provides egress filtering for Linux runners, allowing organizations to control outbound traffic easily.

This skill is designed for developers and DevOps engineers who need a reliable and cost-effective way to manage their GitHub Actions workflows. By utilizing Depot runners, teams can achieve faster build times and better resource allocation while maintaining the flexibility to scale as their projects grow.

When to use it

Use this skill when setting up or migrating GitHub Actions workflows to utilize Depot-managed runners for enhanced performance and cost savings.

When not to use it

This skill is not suitable for personal GitHub accounts, as it requires a GitHub organization for setup.

What you can build with it

Migrating from GitHub-hosted to Depot runners

Easily transition your CI/CD workflows by updating the `runs-on` label in your GitHub Actions YAML files to use Depot runners.

Optimizing build times with caching

Leverage Depot Cache for faster builds by using pre-configured settings for tools like Maven and Bazel.

Managing egress filtering for security

Set up egress rules in Depot to control outbound traffic for your Linux runners, enhancing security for your workflows.

How to install Depot GitHub Actions Runners

View source

1. Install with the skills CLI

npx skills add posthog/posthog/depot-github-runners --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by posthog

Depot GitHub Actions Runners

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).

Setup

  1. Depot dashboard → GitHub Actions → Connect to GitHub → Install Depot GitHub App
  2. For public repos: GitHub org settings → Actions → Runner groups → Default → "Allow public repositories"
  3. Update runs-on in your workflow files

Org Context Check for Multi-Org Users

If 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.

Runner Labels

Use a single label. Format: depot-{os}-{version}[-{arch}][-{size}]

Ubuntu (Intel x86 — AMD EPYC)

LabelCPUsRAMDisk$/min
depot-ubuntu-24.0428 GB100 GB$0.004
depot-ubuntu-24.04-4416 GB130 GB$0.008
depot-ubuntu-24.04-8832 GB150 GB$0.016
depot-ubuntu-24.04-161664 GB180 GB$0.032
depot-ubuntu-24.04-3232128 GB200 GB$0.064
depot-ubuntu-24.04-6464256 GB250 GB$0.128

Ubuntu 22.04 also available: depot-ubuntu-22.04, depot-ubuntu-22.04-4, etc.

Ubuntu (ARM — Graviton4)

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.

Windows Server

LabelCPUsRAM$/min
depot-windows-202528 GB$0.008
depot-windows-2025-4416 GB$0.016
depot-windows-2025-8 through -648–6432–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.

macOS (Apple M2)

LabelCPUsRAM$/min
depot-macos-15 / depot-macos-latest824 GB$0.08
depot-macos-14824 GB$0.08

macOS is NOT fully elastic — fixed pool with FIFO queuing. Startup plan+ only.

Aliases

depot-ubuntu-latest → Ubuntu 24.04, depot-windows-latest → Windows 2025, depot-macos-latest → macOS 15

Migration Example

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

Common Mistakes

# ❌ 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

Caching

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):

ToolWhat's pre-configured
TurborepoTURBO_API env var set — just run turbo build
Bazel~/.bazelrc pre-populated — just run bazel build //...
sccacheSCCACHE_WEBDAV_ENDPOINT set — use RUSTC_WRAPPER: 'sccache'
Mavensettings.xml pre-populated (cache id depot-cache)
Pantspants.toml pre-configured — just run pants package ::
moonrepoEnv 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."

Dagger Integration

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.

Egress Filtering (Linux Only)

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.

Access Private Endpoints 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:

  • Depot GitHub Actions runners join your tailnet as ephemeral nodes at job start.
  • Access is controlled with your Tailscale ACLs (recommended tag: tag:depot-runner).
  • No workflow YAML changes are required just to connect runners to private endpoints.

Setup:

  1. In Tailscale ACLs, create a runner tag (for example tag:depot-runner) under tagOwners.
  2. Create a Tailscale OAuth client with Keys > Auth Keys write scope and choose that tag.
  3. In Depot org settings, open Tailscale settings and connect using the OAuth client ID/secret.
  4. Add ACLs allowing 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:

Dependabot

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.

SSH Debugging

steps:
  - uses: actions/checkout@v4
  - uses: mxschmitt/action-tmate@v3
  - run: npm test

Troubleshooting

ErrorFix
"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 startingVerify single runner label; check runner group allows the repo; verify Depot GitHub App permissions
Stuck workflowsForce cancel via GitHub API: POST /repos/{owner}/{repo}/actions/runs/{id}/force-cancel

Frequently asked questions about Depot GitHub Actions Runners

Similar skills