Reversible.
Every deploy is reversible in seconds. Click Redeploy on the previous-known-good release and the same artifact ships again — no rebuild, no re-queue, no commit history shuffling. Rollback is a button, not a Slack thread.
Deploy Operations Platform — private beta
Pier is the deploy operations platform — versioned, reversible, audited. So shipping software feels like merging a pull request, not running a script and praying.
# pier.yml — committed to your repo
version: 1
build:
image: node:22-alpine
cache:
paths: [node_modules, .turbo]
steps:
- run: pnpm install --frozen-lockfile
- run: pnpm build
deploy:
- target: grid-web
branches: [main]
approval: required
steps:
- run: ./deploy/grid-web.sh
/ 01 · the three promises
Exciting deploys are a smell. We took the three properties an SRE actually wants from production releases and made them the product.
Every deploy is reversible in seconds. Click Redeploy on the previous-known-good release and the same artifact ships again — no rebuild, no re-queue, no commit history shuffling. Rollback is a button, not a Slack thread.
Every privileged action has provenance — who, when, against which artifact, under which approval. Append-only audit log, RBAC (admin / maintainer / deployer / viewer), out-of-order approval guard so nobody silently rolls forward past a pending release.
Flat $29/mo on Pro. No per-seat tax. No auto-refilling credit math. No surprise self-hosted-runner billing. The same pipeline behaves the same way every time — including the invoice.
/ 02 · how it works
Sign in, point Pier at your fleet, push. From there, every deploy is a row you can click into — not a workflow run you have to archeologise.
Sign in with GitHub, pick an org, select repos. Pier installs the webhook for you and starts watching for pushes. No personal access tokens, no copy-pasting webhook URLs into settings panels.
Power users keep YAML in the repo (version-controlled, reviewable). Everyone else configures from the dashboard. Either way Pier knows which branches go to which deploy targets, when approvals are required, and what env vars apply.
version: 1
build:
image: python:3.12-slim
steps:
- run: pip install -r requirements.txt
- run: pytest -q
deploy:
- target: prod-web-1
branches: [main]
steps:
- run: ./scripts/deploy.sh
Pushes trigger a containerised build. Logs stream live to your browser. On success, the deploy fires — or queues for approval. A bad release? Click Redeploy on the last green one. Same artifact, no rebuild, back in seconds. No retro, no Slack thread, no apologies.
/ 03 · honest comparison
CI is solved. Deploy ops isn't. We're not trying to replace anyone's build pipeline — we're picking up where they stop caring.
| Deploy operation | Π Pier | GitHub Actions | CircleCI | Vercel |
|---|---|---|---|---|
| One-click rollback to last known good | Redeploy button | re-run on older SHA | re-run on older SHA | instant rollback |
| Out-of-order approval guard | enforced | no | no | n/a |
| Append-only audit log + RBAC | included | workflow run history | workflow run history | deployment history |
| Deploys to your own servers (SSH / SSM) | first-class | DIY in YAML | DIY in YAML | their runtime only |
| Flat monthly pricing (no credit math) | $29/mo flat | per-minute meter | credit-based | per-seat + usage |
| Works alongside your existing CI | designed for it | is the CI | is the CI | build + deploy combined |
| Best when… | deploy ops are the problem | CI is the problem | CI is the problem | frontend on their runtime |
We like GitHub Actions and CircleCI for building. Pier picks up the deploy half — run both on the same repo and they don't argue.
/ 04 · pricing
No per-seat tax. No auto-refilling credit math. No surprise self-hosted-runner billing. Pro is $29/mo flat — the same number every month for the same team. If you hit overage, you pay $0.005/build-min and we tell you before the invoice.
$0 / forever
Genuinely useful for small teams & side projects.
$29 / mo flat
Everything you need to ship to production.
Contact
For teams with compliance, scale, or weird-shaped AWS.
/ 05 · faq
Repo secrets are encrypted at rest with Postgres pgcrypto; the encryption key lives in the host's env, not the database. Build containers don't have access to the Docker socket (only the worker does). Source code is cloned per-build into a workdir and wiped after — we don't keep your code on disk.
Not today. Pier runs builds on our shared, isolated build pool. That's the whole reason we can be cheaper — we don't make you operate a runner fleet. If you need dedicated runners for compliance reasons, that's an Enterprise conversation.
You create an IAM role in your AWS account that trusts Pier's deployer role, with permissions scoped to ssm:SendCommand on the instance tags you choose. Pier assumes that role per-deploy and runs your script via SSM. No long-lived keys, no agent to install. Cross-account / org-of-orgs setups work the same way — one role per account.
You don't get throttled or surprise-billed. Overage on Pro is $0.005 per build-minute — pay-as-you-go, itemised on the invoice. If you're consistently over 20k minutes a month, Enterprise will usually work out cheaper; we'll tell you when that crossover happens.
No — and we'd rather you didn't. The whole product is built around the idea that CI is solved and deploy ops isn't. Most teams keep GHA running their unit tests + Docker builds, and let Pier own everything from "build artifact ready" onward: deploy targets, approvals, rollback, audit log, env vars. The two run on the same repo without arguing.
Because exciting deploys are a smell. Every time a release surprises someone, a retro gets written. Pier exists to delete those retros. Reversible by default, auditable by default, predictable by default — including the bill.
Not today. The codebase is single-tenant-on-a-Linux-host friendly, and we may offer a licensed self-hosted build for Enterprise teams with strict data-residency requirements — talk to us if that's you.
Private beta. Early users help shape the roadmap and lock in legacy Pro pricing for life. No credit card. Three fields, one screen.