Why we built Maxlayer
Every team rebuilds the same deployment pipeline. We got tired of watching it happen and built the layer underneath instead.
- company
There is a rite of passage in every growing engineering team. Somewhere between the first customer and the tenth engineer, someone volunteers to “sort out deploys properly.” They disappear for three weeks. They come back with a pipeline.
It is always roughly the same pipeline. A build step that produces a container. A registry to put it in. Something to run it. A proxy in front. Certificates from Let’s Encrypt, renewed by a cron job that nobody will remember exists until the morning it fails.
The work is real, but it is not yours
None of this is hard, exactly. It is documented, the pieces are mature, and a competent engineer can assemble them. That is precisely the problem — it is solved, and yet every company solves it again from scratch, slightly differently, with slightly different bugs.
The cost is not the three weeks. It is the years afterwards, when the person who built it has moved on and the pipeline has become load-bearing infrastructure that nobody fully understands. When a build starts failing, the investigation begins with archaeology.
What we wanted instead
We wanted the boring path to be the default:
- Connect a repository. Pushing to a branch deploys it.
- Set environment variables in one place, with secrets that stay secret.
- Point a domain at it and get a certificate without asking.
- Let a colleague do all of the above without handing over your password.
That is the entire product. There is no cluster to size, no manifest to write, and no operator to install. If your application builds into a container and listens on a port, it runs.
Deliberately unambitious
Maxlayer will not schedule across regions, run a service mesh, or give you fine-grained control over pod affinity. Teams that need those things need a platform team, and we would rather be honest about that than sell you a worse Kubernetes.
What we do cover is the enormous middle: applications that need to build reliably, run continuously, be reachable over HTTPS, and be operated by more than one person. Most software is in that category, including most of the software that pays the bills.
The exit is part of the design
Your application on Maxlayer is a container built from your repository. If you outgrow us — or simply change your mind — that container runs anywhere else that takes containers. Nothing about your build is specific to us.
We would rather earn the renewal than rely on the cost of leaving.