A declarative state machine
Provision, start, stop, scale and destroy are transitions on a state machine, so an instance has a state you can read instead of one you infer.
Provisions and manages per-tenant instances on whatever you already run: Docker, Kubernetes, ECS or Fly. Rolling, blue-green and canary strategies, health checks over HTTP, TCP, gRPC or a command, custom domains and certificates, per-tenant quotas, and an audit trail of every action.
Go packages you import. There is no binary to deploy and no runtime of its own to keep alive.
Kubernetes, Docker, AWS ECS, Fly.io and Nomad, or your own, without the calling code knowing which.
Every store query is scoped, every resource is quota-tracked and every action is audit-logged from the beginning.
Provisioning and lifecycle for tenant instances, as packages you import into your own binary.
Provision, start, stop, scale and destroy are transitions on a state machine, so an instance has a state you can read instead of one you infer.
Three strategies that ship without dropping a request, chosen per deployment.
Infrastructure sits behind one interface, so Docker in development and Kubernetes in production is a configuration change.
HTTP, TCP, gRPC and command checks, with automatic recovery and a status the rest of the system can read.
Custom domains with automatic TLS, route management and traffic splitting between versions.
A pluggable vault interface holds the values and the deploy injects them as environment variables, so nothing is baked into an image.
Publish and subscribe over in-memory, NATS or Redis, so other systems learn about an instance changing state without polling for it.
Lifecycle of a tenant’s running instance, start to teardown.
Where an instance runs and what it is allowed to reach.
Desired versus observed, reconciled continuously.
Ctrl Plane deploys and manages SaaS instances at scale. You bring a cloud provider and an auth system; it handles instance lifecycle, deployments, health monitoring, secrets, traffic routing and tenant isolation.
It is a library rather than a framework: Go packages configured with functional options and embedded in your own application, standalone or as a Forge extension.
Every multi-tenant product I have built eventually grew a home-made version of this: a table of instances, a deploy script, a health poller, and a page in the internal admin. Ctrl Plane is that, extracted and made provider-agnostic before it grew a fifth incompatible implementation.
Shipping something on Ctrlplane? Nobody is listed here yet. Tell me what you built and you will be the first.
Get listed →