Skip to main content

Milestones & roadmap

How the platform was built, in shipped increments. Full detail lives in docs/milestones.md in the repository.

M1 — Foundation

The core loop: upload → resolve → build → deploy. Config engine with five-layer template merging, Application/Release CRDs, the operator, the REST API, S3 platform configuration, PostgreSQL history/audit, the BuildKit builder, Helm chart, and tests.

M1.5 — Developer experience

Validate-before-deploy (/v1/validate), published JSON Schema, did you mean suggestions, build logs on failed releases, ?wait=true streaming, content-addressed build reuse, per-app BuildKit registry cache, config diffs on upload, preview environments with TTL garbage collection, auto-rollback, deploy notifications, reusable CI steps, and YAML shorthands.

M2 — Secrets, traffic, supply chain

External Secrets Operator integration with rotation, ingress-enforced OIDC/JWT/oauth2-proxy authentication from platform middleware definitions, Gateway API (HTTPRoute) support, and cosign-verified artifact uploads with per-tenant signing policies.

M3 — Scale and insight

Shared BuildKit pool with persistent layer cache, cluster-wide build queueing, cosign image signing plus SLSA provenance at push, release garbage collection with retention, KEDA autoscaling triggers, OpenTelemetry tracing across API → operator → build pod, and the web console.

M4 — Progressive delivery

Canary releases (staged edge-weighted traffic, promote/abort) and blue/green (color tracks with instant Service-selector cutover and instant rollback), built directly on the immutable-Release pointer model.

M5 — Metric-gated canaries

Prometheus analysis gates from the platform's S3 library judge every canary step on real error-rate/latency metrics; failing gates hold, exhausted budgets abort and revert with the failing gate named.

M6 — Python and Go runtimes

runtime: python and runtime: go join Node under the same explicit rules — mandatory start command and port, no manifest inspection. Runtime-specific Dockerfile generation, distroless Go images shipping only the compiled binary, and fastapi / go-api templates.

In the pipeline 🚧

Stuff we're actively cooking — not shipped yet, coming up:

  • pagifier CLI — for the folks who'd rather type pagifier deploy than remember a curl. A thin wrapper over the same API: deploy, watch, rollback, logs, validate. The API stays the source of truth; the CLI is sugar.
  • Everything on S3, goodbye Postgres — deploy history, the audit trail, and host-ownership claims stored as objects in the bucket you already have. One less database to babysit; the whole platform's state fits in object storage.
  • Zone-scoped token generation — mint a token for a DNS zone, and it can only ever deploy hosts inside that zone. Give team A a token for *.team-a.company.com and they physically cannot touch anyone else's domains. Self-serve from the console, expiring, rotatable, fully audited.
  • Multi-cluster deployment targets — one Pagifier, many clusters.
  • More metrics backends for canary gates (Datadog, CloudWatch) — same one-method interface Prometheus uses today.

Got opinions on any of these? Now's exactly the right time to shout.