Public-beta documentation

Supported repositories

Repository support is defined by versioned deployment profiles returned by the live backend. An exact framework signature must match an enabled profile; a framework name on its own is not sufficient.

This matrix comes from the same backend registry that admits or rejects a deployment.

Source shape

  • One GitHub repository and one selected branch or commit.
  • One detected deployable application root. It may be nested only when its complete source shape matches an enabled profile.
  • The detected framework signature, component kind, build strategy, runtime mode, and resource shape must all fit the same enabled profile.
  • Environment values are accepted only in the phases listed by that profile. Public build inputs and runtime secrets are separate; repository-controlled builds never receive customer or provider secrets.
  • Under docker-spa-v4, Dockerfile or Compose build service are source evidence, not an arbitrary container runtime. The source is normalized to railpack and railpack-caddy-2.11.4-spa-v4; filtering uses railpack-dockerignore-v1. Public build arguments are supported.
  • Enabled static builds use only the contracts published above: railpack-static-npm-v4 (npm; package-lock.json)railpack-static-bun-v4 (bun; bun.lock)railpack-static-pnpm-v4 (pnpm; pnpm-lock.yaml).

Available now

Static SPA

Availablestatic-spa-v4

Railpack-built static sites served by the platform Caddy v4 runtime.

Runtime mode
static
Framework signatures
react + vite, svelte + vite, vite + vue
Components
static
Build
railpack
Build contracts
railpack-static-npm-v4 (npm): npm ci; npm run buildrailpack-static-bun-v4 (bun): bun install --frozen-lockfile; bun run buildrailpack-static-pnpm-v4 (pnpm): pnpm add -g [email protected]; pnpm install --frozen-lockfile --prefer-offline; pnpm run build
Source normalization
docker-spa-v4: detect Dockerfile or Compose build service, then build with railpack and run on railpack-caddy-2.11.4-spa-v4. Source filtering uses railpack-dockerignore-v1. Public build arguments are supported.
Environment phases
build

Exact repository requirements

  • Build contract is railpack-static-npm-v4.
  • Build strategy is railpack with provider node.
  • Package manager is npm.
  • Required root files: package.json.
  • Required root lockfile: package-lock.json.
  • Install command is npm ci.
  • Build command is npm run build.
  • Start command is caddy run --config /Caddyfile --adapter caddyfile 2>&1.
  • Output contract is dist.
  • Runtime contract is railpack-runtime-mise-2026.7.11.
  • Caddy contract is railpack-caddy-2.11.4-spa-v4.
  • Railpack plan contract is railpack-v0.33-vite-npm-dist-v4.
  • Railpack plan digest is sha256:6f4e258583dea7dd267e90cade6050e0b326d05bad883d5d9b81bc7456183428.
  • Build contract is railpack-static-bun-v4.
  • Package manager is bun.
  • Required root lockfile: bun.lock.
  • Install command is bun install --frozen-lockfile.
  • Build command is bun run build.
  • Railpack plan contract is railpack-v0.33-vite-bun-1.3.14-dist-v4.
  • Railpack plan digest is sha256:fbe03f56c1f16f4aade28ae8e529f345bef501f7616fb3dc152cc2629dd35502.
  • Build contract is railpack-static-pnpm-v4.
  • Package manager is pnpm.
  • Required root lockfile: pnpm-lock.yaml.
  • Pre-install command is pnpm add -g [email protected].
  • Install command is pnpm install --frozen-lockfile --prefer-offline.
  • Build command is pnpm run build.
  • Railpack plan contract is railpack-v0.33-vite-pnpm-9.15.9-dist-v4.
  • Railpack plan digest is sha256:62cf86798b420aba0ec5c676d165c333a8c0971bdefd3b27f5c80b875ea58e61.
  • Source normalization contract is docker-spa-v4.
  • Recognized source infrastructure: Dockerfile, Compose build service.
  • Normalized build strategy is railpack.
  • Normalized runtime contract is railpack-caddy-2.11.4-spa-v4.
  • Source filter contract is railpack-dockerignore-v1.
  • Only Vite React, Vue, and Svelte projects matching a published npm, Bun, or pnpm build contract with the default dist output are supported.
  • A Vite start script that masks static detection receives one pinned dist prepare retry before admission.
  • Prepare-v5 may select npm through a private source shadow when package-lock.json conflicts with only legacy bun.lockb, or when the reviewed root npm Docker SPA contract conflicts with both Bun locks. Explicit npm@..., pnpm@..., and bun@... declarations remain authoritative; mixed or ambiguous evidence is rejected.
  • Custom Caddyfile, Caddyfile.template, railpack.json, custom start commands, and custom Vite output directories are unsupported.
  • Dockerfile and Compose web-server stages are normalized to the platform Caddy runtime; repository nginx, Caddy, Apache, and other final server images are not executed.
  • Public VITE_* variables are accepted only for the build phase, must be declared non-secret, and are bound write-only into the build execution and its cache identity.
  • SvelteKit, SSR, and server adapters are unsupported by this static deployment profile.
  • Crawler metadata and sensitive hidden paths return real 404 responses when absent; arbitrary dotted client routes retain the SPA fallback.
  • Railpack 0.33.0, Node 22.23.2, pnpm 9.15.9, Caddy 2.11.4, the mise-2026.7.11 builder and runtime, and Bun 1.3.14 are pinned by the build contract.

Express HTTP

Availablenode-http-v1

Single-process stateless Express HTTP applications.

Runtime mode
http
Framework signatures
express
Components
api, web
Build
railpack
Build contracts
railpack-express-npm-v1 (npm): npm ci
Source normalization
Not applicable
Environment phases
runtime

Exact repository requirements

  • Build contract is railpack-express-npm-v1.
  • Build strategy is railpack with provider node.
  • Package manager is npm.
  • Required root files: package.json.
  • Required root lockfile: package-lock.json.
  • Install command is npm ci.
  • Start command is npm run start.
  • Output contract is application-image.
  • Runtime contract is application-process.
  • Caddy contract is none.
  • Railpack plan contract is railpack-v0.33-express-npm-v1.

Node application runtime

Availablenode-ssr-v1

Single-service Node web applications with SSR, hybrid rendering, or server handlers.

Read the human-readable Next.js deployment guide.

Runtime mode
node
Framework signatures
nextjs + react, nitro + react + tanstack-start + vite, react + tanstack-start + vite
Components
web
Build
railpack
Build contracts
railpack-node-ssr-npm-v1 (npm): npm ci; npm run buildrailpack-node-ssr-bun-v1 (bun): bun install --frozen-lockfile; bun run buildrailpack-node-ssr-pnpm-v1 (pnpm): pnpm add -g [email protected]; pnpm install --frozen-lockfile --prefer-offline; pnpm run build
Source normalization
Not applicable
Environment phases
build, runtime, both

Exact repository requirements

  • Build contract is railpack-node-ssr-npm-v1.
  • Build strategy is railpack with provider node.
  • Package manager is npm.
  • Required root files: package.json.
  • Required root lockfile: package-lock.json.
  • Install command is npm ci.
  • Build command is npm run build.
  • Start command is npm run start.
  • Output contract is application-image.
  • Runtime contract is single-replica-node-process-v1.
  • Caddy contract is none.
  • Railpack plan contract is railpack-v0.33-node-ssr-npm-v1.
  • Build contract is railpack-node-ssr-bun-v1.
  • Package manager is bun.
  • Required root lockfile: bun.lock.
  • Install command is bun install --frozen-lockfile.
  • Build command is bun run build.
  • Start command is bun run start.
  • Railpack plan contract is railpack-v0.33-node-ssr-bun-v1.
  • Build contract is railpack-node-ssr-pnpm-v1.
  • Package manager is pnpm.
  • Required root lockfile: pnpm-lock.yaml.
  • Pre-install command is pnpm add -g [email protected].
  • Install command is pnpm install --frozen-lockfile --prefer-offline.
  • Build command is pnpm run build.
  • Start command is pnpm run start.
  • Railpack plan contract is railpack-v0.33-node-ssr-pnpm-v1.
  • Only one web process and one replica are supported.
  • Cloudflare adapter-only TanStack Start applications are rebuilt from source for Node; Cloudflare bindings remain unsupported.
  • Framework verification opens only the runtime TCP socket and does not invoke application routes or server functions.
  • Secret build-time variables are rejected; runtime secrets use separate preview and production bindings.
  • Only declared non-secret VITE_* and NEXT_PUBLIC_* build/both variables are admitted; every other public prefix is rejected.
  • Next.js uses one replica: in-memory cache and ISR state are not shared, restarts lose ephemeral cache, and rolling revisions are not enabled.
  • A selected nested application root is rebased to /app in the image, so the writable Next.js cache remains /app/.next.
  • Old tabs can reference a previous Next.js revision; Server Actions must handle stale revision/action keys by refresh or explicit error.

FastAPI HTTP

Availablepython-http-v2

Single-process stateless FastAPI HTTP applications with an evidence-bound module entrypoint.

Runtime mode
http
Framework signatures
fastapi
Components
api, web
Build
dockerfile, railpack
Build contracts
railpack-fastapi-requirements-v2 (pip): pip install -r requirements.txtdockerfile-fastapi-v1 (pip): no install command
Source normalization
Not applicable
Environment phases
runtime

Exact repository requirements

  • Build contract is railpack-fastapi-requirements-v2.
  • Build strategy is railpack with provider python.
  • Package manager is pip.
  • Required root files: requirements.txt.
  • Install command is pip install -r requirements.txt.
  • Start command is uvicorn <detected-module>:<detected-name> --host 0.0.0.0 --port ${PORT:-8000}.
  • Output contract is application-image.
  • Runtime contract is evidence-bound-application-process-v1.
  • Caddy contract is none.
  • Railpack plan contract is railpack-v0.33-fastapi-requirements-v2.
  • Build contract is dockerfile-fastapi-v1.
  • Build strategy is dockerfile with provider dockerfile.
  • Required root files: Dockerfile, requirements.txt, main.py.
  • Start command is hypercorn main:app --bind 0.0.0.0:<container-port>.
  • Runtime contract is application-process.
  • Railpack plan contract is none.

Planned profiles

These profiles are published for visibility, but the backend will reject them until their status changes to enabled.

Additional Node SSR frameworks

Plannednode-ssr-frameworks-v1

Nuxt, SvelteKit, and Astro server applications pending isolated build and runtime fixture qualification.

Runtime mode
node
Framework signatures
nitro + nuxt + vite + vue, nuxt + vite + vue, svelte + sveltekit + vite, astro + vite, astro + react + vite, astro + svelte + vite, astro + vite + vue
Components
web
Build
Not applicable
Build contracts
Not published
Source normalization
Not applicable
Environment phases
build, runtime, both

Exact repository requirements

  • Source analysis is available, but deployment remains outside V1a.

External PostgreSQL

Plannedexternal-postgres-v1

Credential-bound PostgreSQL supplied outside the platform.

Runtime mode
resource
Framework signatures
Not applicable to this resource profile
Components
None
Build
Not applicable
Build contracts
Not published
Source normalization
Not applicable
Environment phases
runtime
Resources
postgresql

Exact repository requirements

  • PostgreSQL credentials are supplied by an external provider.
  • TLS, secret binding, egress, and connectivity checks are required.

Retired profiles

These historical contracts remain visible for compatibility and replay. They are retired, not planned, and cannot admit a new deployment.

Static SPA (retired runtime)

Retiredstatic-spa-v1

Frozen Railpack/Caddy v1 contract retained for immutable replay.

Runtime mode
static
Framework signatures
react + vite, svelte + vite, vite + vue
Components
static
Build
railpack
Build contracts
railpack-static-npm-v1 (npm): npm ci; npm run buildrailpack-static-bun-v1 (bun): bun install --frozen-lockfile; bun run build
Source normalization
docker-spa-v1: detect Dockerfile or Compose build service, then build with railpack and run on railpack-caddy-2.11.4-spa-v1. Source filtering uses railpack-dockerignore-v1. Public build arguments are not supported.
Environment phases
None

Exact repository requirements

  • Build contract is railpack-static-npm-v1.
  • Build strategy is railpack with provider node.
  • Package manager is npm.
  • Required root files: package.json.
  • Required root lockfile: package-lock.json.
  • Install command is npm ci.
  • Build command is npm run build.
  • Start command is caddy run --config /Caddyfile --adapter caddyfile 2>&1.
  • Output contract is dist.
  • Runtime contract is railpack-runtime-mise-2026.7.11.
  • Caddy contract is railpack-caddy-2.11.4-spa-v1.
  • Railpack plan contract is railpack-v0.33-vite-npm-dist-v1.
  • Railpack plan digest is sha256:8c8163149420937daeb5df98eddc360baff8c4311cbb236f7d6f462d2f4ecd7c.
  • Build contract is railpack-static-bun-v1.
  • Package manager is bun.
  • Required root lockfile: bun.lock.
  • Install command is bun install --frozen-lockfile.
  • Build command is bun run build.
  • Railpack plan contract is railpack-v0.33-vite-bun-1.3.14-dist-v1.
  • Railpack plan digest is sha256:8a929201b0413b827f8f59fa5808a74be951108e5c02c55dca479b632715d30e.
  • Application environment variables are not supported.
  • Source normalization contract is docker-spa-v1.
  • Recognized source infrastructure: Dockerfile, Compose build service.
  • Normalized build strategy is railpack.
  • Normalized runtime contract is railpack-caddy-2.11.4-spa-v1.
  • Source filter contract is railpack-dockerignore-v1.
  • Required Dockerfile and Compose build arguments are unsupported.
  • Retired: new deployments use the latest enabled static SPA profile.

Static SPA

Retiredstatic-spa-v2

Railpack-built static sites served by the platform Caddy v2 runtime.

Runtime mode
static
Framework signatures
react + vite, svelte + vite, vite + vue
Components
static
Build
railpack
Build contracts
railpack-static-npm-v2 (npm): npm ci; npm run buildrailpack-static-bun-v2 (bun): bun install --frozen-lockfile; bun run buildrailpack-static-pnpm-v2 (pnpm): pnpm add -g [email protected]; pnpm install --frozen-lockfile --prefer-offline; pnpm run build
Source normalization
docker-spa-v2: detect Dockerfile or Compose build service, then build with railpack and run on railpack-caddy-2.11.4-spa-v2. Source filtering uses railpack-dockerignore-v1. Public build arguments are supported.
Environment phases
build

Exact repository requirements

  • Build contract is railpack-static-npm-v2.
  • Build strategy is railpack with provider node.
  • Package manager is npm.
  • Required root files: package.json.
  • Required root lockfile: package-lock.json.
  • Install command is npm ci.
  • Build command is npm run build.
  • Start command is caddy run --config /Caddyfile --adapter caddyfile 2>&1.
  • Output contract is dist.
  • Runtime contract is railpack-runtime-mise-2026.7.11.
  • Caddy contract is railpack-caddy-2.11.4-spa-v2.
  • Railpack plan contract is railpack-v0.33-vite-npm-dist-v2.
  • Railpack plan digest is sha256:b2f96d4881b944e6fa5f9ce481113d9e9ffb823edd9c0fbca369e658dd0faa38.
  • Build contract is railpack-static-bun-v2.
  • Package manager is bun.
  • Required root lockfile: bun.lock.
  • Install command is bun install --frozen-lockfile.
  • Build command is bun run build.
  • Railpack plan contract is railpack-v0.33-vite-bun-1.3.14-dist-v2.
  • Railpack plan digest is sha256:2dbff05ce77643729e4718ac0671a7114b84a078977dbc22889d5bec4ff02eda.
  • Build contract is railpack-static-pnpm-v2.
  • Package manager is pnpm.
  • Required root lockfile: pnpm-lock.yaml.
  • Pre-install command is pnpm add -g [email protected].
  • Install command is pnpm install --frozen-lockfile --prefer-offline.
  • Build command is pnpm run build.
  • Railpack plan contract is railpack-v0.33-vite-pnpm-9.15.9-dist-v2.
  • Railpack plan digest is sha256:c8edfc4e0449de4a5a9677319e5b6272fbbb9e11149744767edc3883d903498c.
  • Source normalization contract is docker-spa-v2.
  • Recognized source infrastructure: Dockerfile, Compose build service.
  • Normalized build strategy is railpack.
  • Normalized runtime contract is railpack-caddy-2.11.4-spa-v2.
  • Source filter contract is railpack-dockerignore-v1.
  • Only Vite React, Vue, and Svelte projects matching a published npm, Bun, or pnpm build contract with the default dist output are supported.
  • A Vite start script that masks static detection receives one pinned dist prepare retry before admission.
  • Prepare-v2 may select npm through a private source shadow when package-lock.json conflicts with only legacy bun.lockb, or when the reviewed root npm Docker SPA contract conflicts with both Bun locks. Explicit npm@..., pnpm@..., and bun@... declarations remain authoritative; mixed or ambiguous evidence is rejected.
  • Custom Caddyfile, Caddyfile.template, railpack.json, custom start commands, and custom Vite output directories are unsupported.
  • Dockerfile and Compose web-server stages are normalized to the platform Caddy runtime; repository nginx, Caddy, Apache, and other final server images are not executed.
  • Public VITE_* variables are accepted only for the build phase, must be declared non-secret, and are bound write-only into the build execution and its cache identity.
  • SvelteKit, SSR, and server adapters are unsupported by this static deployment profile.
  • Railpack 0.33.0, the mise-2026.7.11 builder and runtime, and Caddy 2.11.4 are pinned by the build contract.

Static SPA

Retiredstatic-spa-v3

Railpack-built static sites served by the platform Caddy v3 runtime.

Runtime mode
static
Framework signatures
react + vite, svelte + vite, vite + vue
Components
static
Build
railpack
Build contracts
railpack-static-npm-v3 (npm): npm ci; npm run buildrailpack-static-bun-v3 (bun): bun install --frozen-lockfile; bun run buildrailpack-static-pnpm-v3 (pnpm): pnpm add -g [email protected]; pnpm install --frozen-lockfile --prefer-offline; pnpm run build
Source normalization
docker-spa-v3: detect Dockerfile or Compose build service, then build with railpack and run on railpack-caddy-2.11.4-spa-v3. Source filtering uses railpack-dockerignore-v1. Public build arguments are supported.
Environment phases
build

Exact repository requirements

  • Build contract is railpack-static-npm-v3.
  • Build strategy is railpack with provider node.
  • Package manager is npm.
  • Required root files: package.json.
  • Required root lockfile: package-lock.json.
  • Install command is npm ci.
  • Build command is npm run build.
  • Start command is caddy run --config /Caddyfile --adapter caddyfile 2>&1.
  • Output contract is dist.
  • Runtime contract is railpack-runtime-mise-2026.7.11.
  • Caddy contract is railpack-caddy-2.11.4-spa-v3.
  • Railpack plan contract is railpack-v0.33-vite-npm-dist-v3.
  • Railpack plan digest is sha256:55b70634712444de7e5bd3ae32bff2b9554c712ecb75ec20be2383fcfca8ab30.
  • Build contract is railpack-static-bun-v3.
  • Package manager is bun.
  • Required root lockfile: bun.lock.
  • Install command is bun install --frozen-lockfile.
  • Build command is bun run build.
  • Railpack plan contract is railpack-v0.33-vite-bun-1.3.14-dist-v3.
  • Railpack plan digest is sha256:7cef62107fb8ceb9d5a27075a0f1c094230c1611fd651e3e12f20cd8a7f55bb6.
  • Build contract is railpack-static-pnpm-v3.
  • Package manager is pnpm.
  • Required root lockfile: pnpm-lock.yaml.
  • Pre-install command is pnpm add -g [email protected].
  • Install command is pnpm install --frozen-lockfile --prefer-offline.
  • Build command is pnpm run build.
  • Railpack plan contract is railpack-v0.33-vite-pnpm-9.15.9-dist-v3.
  • Railpack plan digest is sha256:b105a79c381dbdbc9efa82cc5516f1a92a3b9b192fedafa1ef227290a3743db6.
  • Source normalization contract is docker-spa-v3.
  • Recognized source infrastructure: Dockerfile, Compose build service.
  • Normalized build strategy is railpack.
  • Normalized runtime contract is railpack-caddy-2.11.4-spa-v3.
  • Source filter contract is railpack-dockerignore-v1.
  • Only Vite React, Vue, and Svelte projects matching a published npm, Bun, or pnpm build contract with the default dist output are supported.
  • A Vite start script that masks static detection receives one pinned dist prepare retry before admission.
  • Prepare-v4 may select npm through a private source shadow when package-lock.json conflicts with only legacy bun.lockb, or when the reviewed root npm Docker SPA contract conflicts with both Bun locks. Explicit npm@..., pnpm@..., and bun@... declarations remain authoritative; mixed or ambiguous evidence is rejected.
  • Custom Caddyfile, Caddyfile.template, railpack.json, custom start commands, and custom Vite output directories are unsupported.
  • Dockerfile and Compose web-server stages are normalized to the platform Caddy runtime; repository nginx, Caddy, Apache, and other final server images are not executed.
  • Public VITE_* variables are accepted only for the build phase, must be declared non-secret, and are bound write-only into the build execution and its cache identity.
  • SvelteKit, SSR, and server adapters are unsupported by this static deployment profile.
  • Crawler metadata and sensitive hidden paths return real 404 responses when absent; arbitrary dotted client routes retain the SPA fallback.
  • Railpack 0.33.0, the mise-2026.7.11 builder and runtime, and Caddy 2.11.4 are pinned by the build contract.

FastAPI HTTP

Retiredpython-http-v1

Single-process stateless FastAPI HTTP applications.

Runtime mode
http
Framework signatures
fastapi
Components
api, web
Build
dockerfile, railpack
Build contracts
railpack-fastapi-requirements-v1 (pip): pip install -r requirements.txtdockerfile-fastapi-v1 (pip): no install command
Source normalization
Not applicable
Environment phases
runtime

Exact repository requirements

  • Build contract is railpack-fastapi-requirements-v1.
  • Build strategy is railpack with provider python.
  • Package manager is pip.
  • Required root files: requirements.txt, main.py.
  • Install command is pip install -r requirements.txt.
  • Start command is uvicorn main:app --host 0.0.0.0 --port ${PORT:-8000}.
  • Output contract is application-image.
  • Runtime contract is application-process.
  • Caddy contract is none.
  • Railpack plan contract is railpack-v0.33-fastapi-requirements-v1.
  • Build contract is dockerfile-fastapi-v1.
  • Build strategy is dockerfile with provider dockerfile.
  • Required root files: Dockerfile, requirements.txt, main.py.
  • Start command is hypercorn main:app --bind 0.0.0.0:<container-port>.
  • Railpack plan contract is none.

Existing Supabase backends

Supabase is an external-service integration, not a deployment profile or a RunYour.App-managed PostgreSQL resource. It is available only when the application otherwise matches an enabled deployment profile and repository analysis detects Supabase requirements.

  • Connect an existing project through Supabase OAuth or the manual setup path; RunYour.App does not create or replace it.
  • Detected requirements can include Database, Auth, Storage, Realtime, Edge Functions, migrations, and RLS.
  • Public client settings and explicitly approved server-runtime credentials remain separate.
  • Provider readiness is reported independently from app deployment verification. Migrations and RLS changes remain manual.

Read the existing Supabase integration boundary.

Build and runtime

  • RunYour.App records a build plan and executes it with rootless BuildKit.
  • Supported infrastructure-marked static sources are normalized to their enabled profile's published build and runtime contracts; repository web-server images are not executed.
  • The private image is published to a per-project package in your personal GHCR namespace.
  • Deployment uses the immutable image digest, not a mutable tag.
  • A successful result requires a ready workload, admitted HTTPS route, valid certificate, and matching source revision.

Outside the contract

A repository is unsupported when no enabled profile matches its complete detected shape. Arbitrary container images, multi-service or runtime-only Compose projects, Cloudflare service bindings, additional required processes, RunYour.App-managed databases, persistent volumes, previews, automatic deploys, custom domains, and repair automation remain outside the current public-beta contract unless an enabled profile explicitly says otherwise.

Supported repositories | RunYour.App