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.
CI/CD & build farms
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.
$999/mo
DeployReady in minutes · 8 locations
Builds get every core and every cache line, with no noisy neighbors, so job times stay consistent from run to run.
Keep Docker layers, dependency caches and compiler caches on local NVMe instead of downloading them again for every job.
Pull base images, push artifacts and mirror registries without per-GB charges, on ports from 10 Gbps to 2 × 25 Gbps.
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
Prices per month in USD, excluding taxes, with unmetered traffic and DDoS protection included.
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.
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.
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.
Architecture and sizing
Think in job slots: decide how many threads a typical job needs, then divide the server. As an estimate, assuming 8 threads per job:
| Server | Threads | Job slots | RAM per slot |
|---|---|---|---|
| Core 16X | 32 | 3 to 4 | about 48 GB |
| Pro 48 | 96 | 11 to 12 | about 48 GB |
| Pro 64 | 128 | 15 to 16 | about 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.
On a dedicated runner, the biggest wins usually come from never downloading or rebuilding the same thing twice:
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.
A self-hosted runner executes whatever code a pipeline hands it, so treat it as exposed infrastructure:
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
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.
FAQ
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.
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.
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.
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.
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.
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.