Skip to main content
Live. This area is documented as current, user-reliable behavior.

Goal

Run a frontend, APIs, workers, and databases as one application where only the services you choose are exposed to the internet.

Prerequisites

  • A StackShift account
  • A GitHub repository (monorepo or one repo per service)

Workflow

1
Create an application from Dashboard -> Applications. The name sets the internal domain every service shares.
2
Add each service with its repository, root directory, port, and type (web service, background worker, or scheduled job).
3
Mark services public or private. Public services get a URL on the internet; private services are only reachable by their siblings.
4
Attach managed databases to the application so services can connect to them.
5
Deploy services individually — a push to a monorepo only rebuilds the services whose directories changed.

What an application gives you

  • One private network per application — services in different applications cannot reach each other, even by IP.
  • A stable internal hostname per service that survives redeploys and always points at healthy instances.
  • Independent builds and deploys per service, each with its own repository, branch, root directory, logs, and environment.
  • A dependency map in the dashboard showing which services talk to each other and why.

Import everything from one file

Instead of adding services one by one, paste a stackshift.yaml in the Import tab. Preview first to see exactly what would be created.

Expected result

Every service has a stable internal hostname like api.myapp-1a2b3c4d.stackshift.internal, and only the services you marked public answer on the internet.

Common failures

  • service has no port: internal URLs need a port — set one on the service and redeploy.
  • two services share an internal name: service names must be unique inside an application.
  • a private service is unreachable from another app: this is by design — applications are isolated from each other.

Private networking and connections

Connect one service to another so StackShift injects the internal URL as an environment variable — no IPs or hostnames to copy, and private services never touch the public internet.

Deploy from GitHub

Use the repository-backed project flow when you want StackShift to detect the app, build from source, and let you override runtime behavior before the first deploy.

Worker and background processes

Run a project as a background process type (worker, queue, scheduler, reverb) instead of a public web service.