Hardware
CodeFloe provides the following servers to process CI/CD jobs:
| Name | Type | Architecture | CPU | Memory | Job Capacity | CPU/Job | Mem/Job |
|---|---|---|---|---|---|---|---|
| artemis | Hetzner AX42 (dedicated) | amd64 | 16 | 64 GB | 8 | 4 | 7 GiB |
| ci-1 | devxy PVE cluster (zeus) | amd64 | 8 | 22 GB | 9 | 4 | 7 GiB |
| ci-2 | devxy PVE cluster (hera) | amd64 | 8 | 16 GB | 6 | 2 | 7 GiB |
| ci-3 | devxy PVE cluster (poseidon) | amd64 | 16 | 32 GB | 13 | 4 | 7 GiB |
| ci-arm1 | Hetzner CAX41 (cloud) | arm64 | 16 | 32 GB | 6 | 4 | 7 GiB |
| gaia | Apple Mac Mini M4 | arm64 | 10 | 32 GB | 5 | 4 | 7 GiB |
The ci-1, ci-2 and ci-3 runners are virtual machines on a self-managed Proxmox VE cluster, which itself runs on rented Hetzner bare metal.
They sit on desktop-class CPUs (an AMD Ryzen 9 7950X3D for ci-1, an Intel Core i9-13900 for ci-2 and ci-3), which buys a noticeably higher single-core clock than the cloud instances.
Each VM carries a share of its host’s rental, listed on the infrastructure hardware page.
Because they have no public address, they reach the Crow server and Forgejo through a Headscale tailnet.
Capacity Split
Section titled “Capacity Split”The total job capacity of all runners is split 50/50 between Crow CI and Forgejo Actions:
| Name | Crow CI | Forgejo Actions |
|---|---|---|
| artemis | 5 | 3 |
| ci-1 | 5 | 4 |
| ci-2 | 3 | 3 |
| ci-3 | 5 | 8 |
| ci-arm1 | 3 | 3 |
| Sum | 21 | 21 |
gaia is not part of this split and is scheduled independently.
Its listed capacity and resource limits refer to its Crow Docker agent.
Per-Job Resources
Section titled “Per-Job Resources”The hosted runners listed above configure a memory limit of 7 GiB and a CPU quota of 4 cores per container.
The only CPU exception is ci-2, which limits containers to 2 cores because it has the smallest CPU allocation.
Limits apply to Crow step containers and Forgejo Actions job containers, rather than an entire pipeline. Parallel containers each have their own limits, while sharing the host’s available resources. These limits are configured in the IaC repository.