Every server Unmetered traffic, DDoS protection and IPMI included. No setup fees, no contract. Unmetered traffic on every server See pricing

CI/CD & build farms

Faster builds on dedicated cores and NVMe

Run GitHub Actions, GitLab or Buildkite runners on servers with no CPU steal and fast local disks. Caches stay warm on NVMe, and pulling images and artifacts costs nothing extra.

Top pick for CI/CD & dev

Pro 48

96 threads and 576 GB of RAM run about a dozen 8-thread jobs in parallel with room for tmpfs build directories, plus 2 × 7.68 TB NVMe Gen5 for caches. $999/mo.

Processor
AMD EPYC 9455P48 cores · 96 threads
Memory
576 GBDDR5-6000 ECC
Storage
2 × 7.68 TBNVMe Gen5
Network
25 GbpsUnmetered traffic

$999/mo

Deploy

Ready in minutes · 8 locations

Benefits

Cores that are all yours

Builds get every core and every cache line, with no noisy neighbors, so job times stay consistent from run to run.

Warm caches on local NVMe

Keep Docker layers, dependency caches and compiler caches on local NVMe instead of downloading them again for every job.

Unmetered pulls and pushes

Pull base images, push artifacts and mirror registries without per-GB charges, on ports from 10 Gbps to 2 × 25 Gbps.

Capacity in minutes

Core and Pro servers are usually delivered within 15 minutes of payment, and the API and Terraform provider let you add runners from code.

Recommended servers

Three configurations that fit.

Prices per month in USD, excluding taxes, with unmetered traffic and DDoS protection included.

Pro

Pro 48

96 threads and 576 GB of RAM run about a dozen 8-thread jobs in parallel with room for tmpfs build directories, plus 2 × 7.68 TB NVMe Gen5 for caches. $999/mo.

  • AMD EPYC 9455P48 cores · 96 threads
  • 576 GBDDR5-6000 ECC
  • 2 × 7.68 TBNVMe Gen5
  • 25 Gbps portUnmetered traffic

Ready in minutes · 8 locations

Pro

Pro 64

For large monorepos and C++, Rust or Android builds: 64 cores, 768 GB of RAM and four NVMe Gen5 drives that can be striped for cache throughput.

  • AMD EPYC 9555P64 cores · 128 threads
  • 768 GBDDR5-6000 ECC
  • 4 × 3.84 TBNVMe Gen5
  • 2 × 25 Gbps portUnmetered traffic

Ready in minutes · 6 locations

$1,349/mo

Core3D V-Cache

Core 16X

Linking, type-checking and test suites that don't parallelize run on one fast core: 5.7 GHz boost and 128 MB of L3 suit latency-sensitive pull request checks at $399/mo.

  • AMD EPYC 4585PX16 cores · 32 threads
  • 192 GBDDR5 ECC
  • 2 × 3.84 TBNVMe Gen4
  • 10 Gbps portUnmetered traffic

Ready in minutes · 10 locations

Architecture and sizing

How to run it well.

01

Sizing runners: slots, cores and memory

Think in job slots: decide how many threads a typical job needs, then divide the server. As an estimate, assuming 8 threads per job:

ServerThreadsJob slotsRAM per slot
Core 16X323 to 4about 48 GB
Pro 489611 to 12about 48 GB
Pro 6412815 to 16about 48 GB

The lower slot count keeps a few threads for the host, the runner agent and caches. Compile-heavy jobs scale with threads; test suites are often limited by a single thread or by I/O, so profile your slowest pipeline stage before buying cores. Use the spare RAM: building in a tmpfs directory takes disk I/O off the critical path for many compile jobs.

Prefer ephemeral runners that start a fresh container or microVM for each job and discard it afterwards, for example with actions-runner-controller on Kubernetes or GitLab Runner's Docker executor. Each job gets a clean environment, while caches live outside the job sandbox.

02

Caching is where the time goes

On a dedicated runner, the biggest wins usually come from never downloading or rebuilding the same thing twice:

  • Container images: a pull-through registry mirror (Distribution or Harbor) on the private network, and BuildKit's cache on local NVMe.
  • Dependencies: proxy npm, PyPI, Maven and Go module downloads through a local cache.
  • Compilers: ccache or sccache for C, C++ and Rust, and a Bazel remote cache on NVMe for monorepos.
  • Git: keep mirrors or reference clones on the runner and use shallow or partial clones.

On a Pro 64, use a small mirrored partition for the OS and stripe the rest of the four NVMe Gen5 drives as RAID 0 for cache data, which can always be rebuilt. Traffic is unmetered on every port, so warming caches, pushing artifacts and mirroring registries cost nothing extra. Share caches between runners in the same location over a free private VLAN.

03

Security for self-hosted runners

A self-hosted runner executes whatever code a pipeline hands it, so treat it as exposed infrastructure:

  • No untrusted code on persistent runners: GitHub's documentation recommends self-hosted runners only for private repositories, because a pull request from a fork can run arbitrary code on the machine. For public projects, use ephemeral runners or keep fork builds on hosted runners.
  • Separate trust levels: dedicated runners, or at least separate runner groups, for deploy jobs that hold production credentials.
  • Short-lived credentials: OIDC federation or scoped tokens instead of long-lived secrets stored on the host.
  • A hardened host: SSH keys only, a default-deny firewall and automatic security updates; our server hardening guide covers the basics.

Keep runner hosts reproducible. With the REST API and the Terraform provider you can reinstall a runner from a clean image on a schedule, and the KVM console gets you back in if a bad change locks you out.

Your stack

Runs what you already use.

Full root access and one-click images for Ubuntu, Debian, AlmaLinux, Rocky Linux, Windows Server and Proxmox VE, or your own ISO through the KVM console.

  • GitHub Actions runner
  • GitLab Runner
  • Buildkite Agent
  • Jenkins
  • actions-runner-controller
  • Docker BuildKit
  • Harbor
  • sccache
  • Bazel
  • Firecracker

FAQ

CI/CD & dev, answered.

Can I use these servers as GitHub Actions or GitLab runners?

Yes. You get full root access, so you can install the GitHub Actions runner, GitLab Runner, Buildkite Agent or Jenkins agents directly or in containers. For clean builds, use ephemeral runners that start fresh for each job.

Core 16X or Pro for CI?

Choose the Core 16X when pipelines are dominated by single-threaded steps such as linking, type-checking or serial test suites, since it boosts to 5.7 GHz. Choose a Pro 48 or Pro 64 when you run many jobs in parallel or compile large C++, Rust or Android projects. A mixed fleet works well too.

Is bandwidth for image pulls and artifacts billed?

No. Traffic is unmetered on every server, inbound and outbound, with no egress or overage fees. Pulling base images, pushing artifacts and syncing caches between locations doesn't change your monthly price.

How quickly can I add more runners?

Core and Pro servers marked Ready in minutes are usually delivered within 15 minutes of payment, with your OS installed. You can order through the REST API or the Terraform provider and register the new runner from your configuration management.

Does a monthly server make sense if my CI load is uneven?

It depends on utilization. A dedicated server has a flat monthly price, so the more hours your runners are busy, the lower your cost per build. Billing is monthly with no long-term contract, so you can resize the fleet as your load changes.

Still have a question?Tickets for customers, written quotes for projects.How to reach us

Start with Pro 48.

Our top pick for CI/CD & dev costs $999/mo with unmetered traffic and DDoS protection included. Or let an engineer size the whole setup with you.

  • No setup fees
  • Unmetered traffic
  • Cancel anytime