my-appengineer Docs

Bring an existing app

Not everything starts from a prompt. If your business already runs somewhere, the Cluster tab offers a setup for where it runs today.

Last updated 2026-09-05

Where does it run today?

A VPS or serverDocker containers, or plain Linux services (systemd + nginx). Both are recognised. Pair the machine and get a migration plan for what is on it.
Your own k3s / k8s clusterYou run the control plane yourself. Bring the whole thing; it lands in a dedicated cluster we manage for you.

A third path — managed cloud clusters such as EKS, AKS or GKE — is not offered yet. The pieces exist but have not been proven against a real managed cluster, so the dashboard says so instead of pretending.

From a VPS

  1. Pair the server. Connect it over your Tailscale private link, the same way you would add a node.
  2. Review what was found. The platform lists the containers and services it sees on the machine.
  3. Get a migration plan. Each app becomes a deployment in your namespace, with its data volumes and environment. You approve before anything moves.

From a docker-compose file

An app described as a compose file — one service or several — can be deployed into your namespace as-is. Services become Deployments, exposed ports become Services and an Ingress, volumes become persistent volumes. Frontends that need a build step are built inside the cluster.

Custom domains

Every app answers on <app>.<your-username>.my-app.engineer. To use your own domain:

  1. Add a CNAME at your DNS host pointing your hostname at the target shown in the app's domain dialog (an A record to the shown address also works).
  2. Connect it in the app's domain dialog on the dashboard.
  3. Wait about a minute. A TLS certificate is issued automatically and the domain goes live over HTTPS.

Serving hostnames yourself

If you would rather not depend on the platform for the edge at all, install the Ingress (Traefik) and cert-manager tools into your cluster and terminate TLS there. See Cluster tools.

← Cluster toolsPlans and billing →