Pier ships Railpack — Railway's open-source builder and successor to Nixpacks. Push code to Git, Pier detects the language, compiles with BuildKit and runs the resulting image. Supports 24+ languages and frameworks out of the box.
24+ languages out of the box
Node, Bun, Deno, Python, Go, Rust, PHP, Java, Ruby, Elixir, plus first-class Vite, Astro and Create React App static sites. Detection is by marker file (package.json, go.mod, Cargo.toml, requirements.txt, …), so a fresh repo usually needs zero configuration.
1.5–4× smaller images than Nixpacks
Railpack is built on BuildKit's parallel graph instead of layered Dockerfiles, so Node images shrink ~38% and Python ~77% versus Nixpacks. Faster pulls, less disk, smaller attack surface.
Successor to Nixpacks by the Railway team
Railway moved to Railpack in March 2025 after running Nixpacks for years on 14M+ user builds. Active development; Nixpacks is in maintenance mode. Pier integrates Railpack directly so you get the same builder that powers Railway production.
Sane defaults, opt-in overrides
Pier auto-detects the start command and exposed port, but you can override them in the Deploy form. For deeper control drop a railpack.json into the repo root — Railpack picks it up automatically without any Pier-side glue.
Deploy a source repository with Auto-build
01
Open Pier → New Application → Auto-build (Railpack)
Pick the new card next to Dockerfile / Docker Image / Docker Compose. The form opens with a Git URL field.
02
Paste your Git repository URL and branch
Public repos work directly; private ones use the same deploy-key or GitHub App flow as the other Git sources.
03
(Optional) override start command or build-time env
Leave both empty for Railpack auto-detection. The form shows hints under each field when this matters.
04
Deploy
Pier clones, hands the working tree to railpack build, then runs the resulting image like any other service — Traefik labels, auto-SSL and a generated subdomain included.
Common questions
Why Railpack and not Nixpacks?
Railpack is the active successor — Railway moved to it in March 2025 after running Nixpacks across 14M+ builds. Nixpacks still works but only gets bug fixes. Railpack produces smaller images and a faster build graph thanks to BuildKit-native LLB.
Does it run on ARM / aarch64?
Yes — both the railpack CLI and the moby/buildkit container ship linux/arm64 builds. install.sh picks the right architecture automatically; the user-facing flow is identical to x86_64.
What are the resource requirements?
At least 4 GB RAM (8 GB if you build Rust projects) and 40+ GB free disk for the BuildKit cache. The smaller VPS sizes that work fine for Dockerfile / Docker Image deploys are not suitable for Auto-build — the UI shows a hard warning when host RAM is below 4 GB.
Can I cap how many builds run at once?
Yes — Settings → Auto-build (Railpack) exposes the parallel-builds slot, or set PIER_RAILPACK_MAX_PARALLEL_BUILDS in the systemd unit. Default is 1, which keeps a 4 GB host safe even when several users deploy at once.