Architecture

Architecture

Control plane vs data plane — how Bytstack builds, runs, and routes Node apps.

Bytstack splits into two planes:

  1. Control plane — NestJS API, auth, billing, webhooks, deploy scheduling, domain records, encrypted secrets (apps/api).
  2. Data plane — Kubernetes workloads for your apps, ingress/edge, static assets, and managed databases.

High-level flow

GitHub / CLI / Dashboard


   Control plane API ──► Redis queues
        │                     │
        │              ┌──────┴──────┐
        │              ▼             ▼
        │           Builder      Provisioner
        │              │             │
        │              ▼             ▼
        │         Registry      User Postgres
        │              │
        └──────────────┼──► Runtime cluster

              Ingress → Web / Worker / Cron
WorkerRole
BuilderClone, install, build, push images / upload static assets (deploy queue)
ProvisionerDatabases, credentials, backups, deprovision (provision, backup, …). Sole holder of PG_ADMIN_URL.

Hierarchy

WorkspaceProject → web / static / worker / cron services + databases.

Networking

SurfaceExample
Platform ingress*.bytstack.app
Customer hostsCNAME / ALIAS → project edge
External PostgresTLS hostname + allowlist
Internal DBPrivate DNS inside the cluster

Isolation

Customer apps and databases run in isolated networking. Managed data is reachable from your services on a private network by default — not from the public internet unless you opt into external access.