Browse documentation

This page describes where deployment values enter the system and which process consumes them. For application behavior and Project Studio fallbacks, see the existing Environment reference.

Note

deploy/docker-compose.prod.yml uses an explicit environment block, not env_file. A variable supported by apps/server/config/env.ts is not available inside a production project unless that Compose file forwards it. Console-managed settings can override many application fallbacks without changing Compose.

Installer inputs

These are read directly by setup.sh.

NameConsumed byRequired?DefaultDescription
DOMAINsetup.shVPS: yesemptyBase suffix for Console-managed project domains; also selects VPS as the unattended default.
CONSOLE_DOMAINsetup.sh, Console ComposeVPS: yes after defaultingconsole.<DOMAIN>Public Console hostname.
ACME_EMAILsetup.sh, TraefikVPS: yesnoneACME registration email.
ADMIN_EMAILsetup.shnoadmin@example.comInitial Console owner email.
ADMIN_PASSWORDsetup.shrepair: conditionalgeneratedInitial owner password or credential used to repair a missing Console hash.
MOTHERBASE_IMAGE_TAGsetup.shno1.0.0Derives the default first-party image tags inside setup.
API_IMAGEsetup, Console, orchestrator, project Composenomotherbase-api:<tag>Shared project API image.
CONSOLE_IMAGEsetup and Console Composenomotherbase-console:<tag>Platform Console image.
POSTGRES_IMAGEsetup, orchestrator, project Composenomotherbase-postgres:<tag>Per-project PostgreSQL image.
ORCHESTRATION_IMAGEsetup and Console Composenomotherbase-orchestrator:<tag>Internal lifecycle daemon image.
MINIO_IMAGEsetup, orchestrator, project Composenopinned from setup defaultPer-project MinIO image; resolved to a digest on VPS.
MINIO_MC_IMAGEsetup, orchestrator, project Composenopinned from setup defaultMinIO client image; resolved to a digest on VPS.
TRAEFIK_IMAGEsetup and production TraefikVPS: yes after pinningpinned from traefik:v3.3Production reverse-proxy image.
TRAEFIK_DOCKER_PROXY_IMAGEsetup and production TraefikVPS: yes after pinningpinned from nginx:alpineDocker API proxy image.
DOCKER_CLI_IMAGEsetup and orchestrator buildproduction: yespinned from docker:27-cliSource image for Docker CLI and Compose plugin.
GODADDY_API_KEYsetup and TraefikDNS-01: yesemptyGoDaddy DNS challenge key.
GODADDY_API_SECRETsetup and TraefikDNS-01: yesemptyGoDaddy DNS challenge secret.
PLATFORM_DOMAIN_SUFFIXsetup and ConsolenoDOMAIN in VPS modeSuffix used when pre-filling project domains.
USERDocker installation branchnoshell valueUser added to the Docker group after Linux installation.

Platform Console and orchestrator

Generated values live in deploy/console/.env; Compose also supports the optional values below.

NameConsumed byRequired?DefaultDescription
CONSOLE_MODEConsole confignoprod; Compose sets dev locallySelects scheme, project directory, and project Compose file.
CONSOLE_PORTConsoleno5500Console HTTP listen port.
CONSOLE_JWT_SECRETConsoleprod: yes, min 32 charsdev-only constant in dev modeSigns owner sessions; generated by setup.
CONSOLE_ADMIN_EMAILConsoleCompose: yesadmin@example.com in codeInitial owner email.
CONSOLE_ADMIN_PASSWORD_HASH_B64Consoleshipped Compose: yesnoneBase64 bcrypt hash, used to avoid Compose dollar interpolation.
PREVIEW_ENABLEDConsolenofalseTurns on preview projects per pull request. Has no effect without PREVIEW_GITHUB_SECRET.
PREVIEW_GITHUB_SECRETConsolerequired for previewsnoneWebhook secret. The receiver verifies an HMAC over the raw body with it; without one, nothing is accepted.
PREVIEW_REPO_ALLOWLISTConsolerequired for previewsemptyComma-separated owner/repo. Empty means no repository may provision — the receiver fails closed.
PREVIEW_GITHUB_TOKENConsolenononeOnly used to post the "preview ready" comment back on the pull request.
PREVIEW_TTL_HOURSConsoleno72Preview stacks older than this are swept hourly. 0 disables the sweep.
CONSOLE_ADMIN_PASSWORD_HASHbare-node ConsolenoemptyLegacy raw bcrypt fallback; setup can migrate it.
CONSOLE_ADMIN_PASSWORD_TEMPORARYConsolenofalseRequires replacement of a generated bootstrap password.
ORCHESTRATION_SECRETConsole and orchestratorshipped Compose: yesnoneGenerated internal bearer shared by the two services.
ORCHESTRATION_URLConsolenohttp://orchestrator:5501Internal daemon URL.
ORCHESTRATION_PORTorchestratorno5501Internal daemon listen port.
PROJECTS_DIRConsole and orchestratornodev .dev-projects; prod /srv/projectsProject manifest and environment directory.
COMPOSE_FILEConsole and orchestratornomode-specific project Compose fileCompose definition used for project lifecycle actions.
TRAEFIK_NETWORKConsole and orchestratornotraefik_proxyShared routing network.
PLATFORM_DOMAIN_SUFFIXConsolenolocalhost in dev mode, otherwise empty; setup writes DOMAINDefault project-domain suffix.
CERT_RESOLVERConsole and project manifestnoletsencryptResolver written into newly generated project environments.
UPDATE_CHECK_URLConsolenoemptyRead-only release-channel endpoint.
TRUST_PROXYConsolenoCompose defaults to 1 in productionExpress trusted proxy setting.
CONSOLE_BASE_URLConsole authno<scheme>://localhost:<port>Better Auth public base URL outside standard Compose wiring.
CONSOLE_TRUSTED_ORIGINSConsole authnoemptyExtra comma-separated auth origins.
CONSOLE_RATE_LIMIT_WINDOW_MINConsole login limiterno15Credential-attempt window in minutes.
CONSOLE_RATE_LIMIT_AUTH_MAXConsole login limiterno20Credential attempts per window.
CONSOLE_AUDIT_MAX_ENTRIESConsole audit storeno10000Maximum audit entries, clamped to [1, 1000000].
CONSOLE_STACK_COMPOSEConsole update servicenodeploy/console/docker-compose.ymlConsole stack path reported by update plans.
CONSOLE_STACK_SERVICESConsole update servicenoconsole orchestratorSpace-separated services reported by update plans.
CONSOLE_BILLING_ENABLEDConsole feature flagsnofalseEnables the optional billing surface.
POSTGRES_IMAGEorchestratornomotherbase-postgres:1.0.0Passed to project Compose commands.
MINIO_IMAGEorchestratorproduction: yeslocal tag in devPassed to project Compose commands.
MINIO_MC_IMAGEorchestratorproduction: yeslocal tag in devPassed to project Compose commands.
DOCKER_CLI_IMAGEConsole Compose buildproduction: yesdocker:27-cli in devOrchestrator build argument.

The standard production Console Compose does not pass CONSOLE_BASE_URL, CONSOLE_TRUSTED_ORIGINS, Console rate-limit overrides, audit size, stack-report overrides, or CONSOLE_BILLING_ENABLED.

Traefik

Values live in deploy/traefik/.env; the generated file starts the dashboard fields empty.

NameConsumed byRequired?DefaultDescription
ACME_EMAILboth ACME resolversyesnoneACME account email.
TRAEFIK_IMAGETraefik Composeproduction: yesnone in ComposeDigest-pinned Traefik image.
TRAEFIK_DOCKER_PROXY_IMAGETraefik Composeproduction: yesnone in ComposeDigest-pinned Nginx proxy image.
TRAEFIK_DASHBOARD_HOSTdashboard routernotraefik.invalidHost rule; empty leaves the dashboard effectively disabled.
TRAEFIK_DASHBOARD_AUTHbasic-auth middlewarenoinvalid credentialCompose-escaped htpasswd entry.
DNS_CHALLENGE_PROVIDERDNS-01 resolvernogodaddy in ComposeTraefik DNS challenge provider name.
GODADDY_API_KEYTraefik processDNS-01: conditionalemptyProvider credential.
GODADDY_API_SECRETTraefik processDNS-01: conditionalemptyProvider credential.

Generated project environment

apps/server/console/lib/manifest.ts writes these values to /srv/projects/<name>/.env.prod.

NameConsumed byRequired?Generated defaultDescription
COMPOSE_PROJECT_NAMEComposeyesproject nameNamespaces containers, networks, and volumes.
PROJECT_DOMAINAPI and Traefik labelsyes<name>.<suffix>Public project host.
STORAGE_DOMAINMinIO and Traefik labelsyes<name>-storage.<suffix>Public object-storage host.
MINIO_CONSOLE_DOMAINMinIO and Traefik labelsno<name>-minio.<suffix>MinIO admin host.
CORS_ORIGINSAPInoproject origin plus supplied originsComma-separated browser origins.
API_IMAGEComposenoConsole's configured API imageAPI runtime image.
POSTGRES_PASSWORDPostgreSQL and API URLyes24 random bytes as hexPer-project database password.
DB_PORTCompose and APInoallocated from 54320-54419Host port the project's PostgreSQL is published on. Stable for the life of the project, so a saved connection string survives a recreate. Absent on projects created before this existed, which falls back to a random loopback port.
DB_BINDComposeno127.0.0.1Interface that port binds to. Loopback means the database is an SSH tunnel away and not an internet service. 0.0.0.0 publishes it — firewall it first.
JWT_SECRETAPIyes32 random bytes as hexProject JWT secret.
CONFIG_ENCRYPTION_KEYAPIno to boot32 random bytes, base64Encrypts Studio-managed secrets.
PLATFORM_SERVICE_TOKENConsole proxy and APIyes in multi-project mode32 random bytes as hexConsole-to-project admin bearer.
MINIO_ROOT_USERMinIO and APIyesadminPer-project object-storage user.
MINIO_ROOT_PASSWORDMinIO and APIyes24 random bytes as hexPer-project object-storage password.
S3_BUCKETMinIO init and APInouploadsPrivate physical bucket.
S3_REGIONAPInous-east-1S3 region.
CERT_RESOLVERTraefik labelsnoConsole resolver or letsencryptCertificate resolver for project routers.
CONSOLE_SQL_ENABLEDAPInotrueEnables Project Studio SQL.
API_CPUSComposeno0.5API CPU limit.
API_MEMComposeno512MAPI memory limit.
DB_CPUSComposeno0.5PostgreSQL CPU limit.
DB_MEMComposeno512MPostgreSQL memory limit.
MINIO_CPUSComposeno0.25MinIO CPU limit.
MINIO_MEMComposeno256MMinIO memory limit.

deploy/docker-compose.prod.yml also accepts the following project values:

NameConsumed byRequired?DefaultDescription
POSTGRES_IMAGEdb servicenomotherbase-postgres:1.0.0PostgreSQL image.
MINIO_IMAGEminio serviceprod: yesnone in ComposeDigest-pinned MinIO image.
MINIO_MC_IMAGEminio-initprod: yesnone in ComposeDigest-pinned MinIO client image.
S3_PUBLIC_BUCKETinit and APInopublicPublic-download physical bucket.
ACCESS_TOKEN_EXP_MINAPIno15Access-token minutes.
REFRESH_TOKEN_EXP_DAYSAPIno30Refresh-token days.
EMAIL_SMTP_HOSTAPInoemptySMTP host fallback.
EMAIL_SMTP_USERNAMEAPInoemptySMTP username fallback.
EMAIL_SMTP_PASSWORDAPInoemptySMTP password fallback.
FIREBASE_PROJECT_IDAPInoemptyFirebase project.
FIREBASE_CLIENT_EMAILAPInoemptyFirebase service-account email.
FIREBASE_PRIVATE_KEYAPInoemptyFirebase private key.
APNS_KEYAPInoemptyAPNs private key.
APNS_KEY_IDAPInoemptyAPNs key ID.
APNS_TEAM_IDAPInoemptyAPNs team ID.
APNS_BUNDLE_IDAPInoemptyAPNs bundle ID.
APNS_PRODUCTIONAPInotrue in production ComposeAPNs production gateway toggle.
CONSOLE_LOG_BUFFER_SIZEAPIno500In-memory Project Studio log lines.
DATABASE_ACCESS_MANAGEDAPInotrue in production ComposeDeclares that this Postgres is the stack's own, so the Database Access screen may rewrite its pg_hba.conf and reload it. Anywhere else the settings are stored and reported as not applied, because the database may be shared with a dev machine, CI or a managed provider.
LOG_PERSISTENCE_ENABLEDAPInotrue in production ComposeStore log lines in the database instead of the in-memory buffer only.
LOG_RETENTION_DAYSAPIno7Days of stored log history.
LOG_MAX_ROWSAPIno2000000Ceiling on stored log lines regardless of age; 0 disables it.
EDGE_RUNTIME_URLAPInohttp://edge-runtime:9000Where the API reaches the edge runtime sidecar.
EDGE_RUNTIME_TOKENAPI and edge-runtimeprod: yesnoneShared secret between the two. The sidecar refuses to start without it and answers 401 to a request without it.
EDGE_RUNTIME_CALLBACK_URLAPInohttp://api:5001This API as the sidecar reaches it, for a function's sendMail().

The edge-runtime service

deploy/docker-compose.prod.yml runs the Deno sidecar as its own service on its own network, with no route to Postgres or MinIO — the first of the two barriers that keep a function away from the stack's internals.

NameConsumed byRequired?DefaultDescription
EDGE_RUNTIME_PORTedge-runtimeno9000Port the sidecar listens on.
EDGE_RUNTIME_TOKENedge-runtimeprod: yesnoneMust match the API's.
EDGE_ALLOWED_INTERNAL_ORIGINSedge-runtimenohttp://api:5001 in production ComposeExact origins a function's fetch may call despite resolving to a private address.
DENO_DIRedge-runtimeno/tmp/deno-dirModule cache for the worker processes.
EDGE_RUNTIME_IMAGEedge-runtime servicenomotherbase-edge-runtime:1.0.0Sidecar image.
EDGE_RUNTIME_CPUSComposeno0.5Sidecar CPU limit.
EDGE_RUNTIME_MEMComposeno768MSidecar memory limit.

Worker-pool tuning (EDGE_MAX_WORKERS, EDGE_WORKER_IDLE_TTL_MS, EDGE_WORKER_MAX_INVOCATIONS, EDGE_WORKER_BASE_RSS_MB) is read by the sidecar too and documented in the environment reference.

Local root stack and generated-only values

The local .env written by setup.sh is consumed by the root docker-compose.yml and, for server values, by the API.

NameConsumed byRequired?DefaultDescription
POSTGRES_PORTroot Composeno55432Host PostgreSQL port.
MINIO_PORTroot Composeno59000Host MinIO API port.
MINIO_CONSOLE_PORTroot Composeno59001Host MinIO Console port.
S3_ACCESS_KEY_IDroot MinIO and APInominioadmin in root Compose/setupS3 access key.
S3_SECRET_ACCESS_KEYroot MinIO and APInominioadmin in root Compose/setupS3 secret.
S3_ENDPOINTAPInoempty in codeS3-compatible endpoint.
S3_PUBLIC_URLAPInoempty in codePublic object base URL.
SEED_ADMIN_EMAILseed scriptnononeLocal seed administrator email.
SEED_ADMIN_PASSWORDseed scriptnononeLocal seed administrator password.
EMAIL_SMTP_PORTgenerated local .env onlynoprompt 587Written by setup.sh, but not declared in apps/server/config/env.ts.
EMAIL_FROMgenerated local .env onlynoprompt valueWritten by setup.sh, but not declared in apps/server/config/env.ts.

Project API runtime variables

These are validated by apps/server/config/env.ts. Rows already defined in the project tables above are not repeated here. The standard production Compose file forwards only the values it explicitly names.

NameConsumed byRequired?Code defaultProduction Compose
APP_NAMEauth emails, TOTP issuernoMotherbasenot forwarded
NODE_ENVAPInodevelopmentforced to production
PORTAPIno5001forced to 5001
DATABASE_URLAPI/Prismayesnoneconstructed from POSTGRES_PASSWORD
BASE_HOSTAPI URL generationnolocalhost:5001set from PROJECT_DOMAIN
STATIC_PATHlocal storagenouploadsnot forwarded
USER_PATHlegacy local user pathnousersnot forwarded
MAX_UPLOAD_MBupload ceilingno25not forwarded
STORAGE_DRIVERstorage servicenolocalforced to s3
S3_ENDPOINTS3 drivernoemptyforced to http://minio:9000
S3_ACCESS_KEY_IDS3 drivernoemptyset from MINIO_ROOT_USER
S3_SECRET_ACCESS_KEYS3 drivernoemptyset from MINIO_ROOT_PASSWORD
S3_PUBLIC_URLS3 drivernoemptyderived from STORAGE_DOMAIN and public bucket
RATE_LIMIT_WINDOW_MINAPI limiterno15not forwarded
RATE_LIMIT_GLOBAL_MAXAPI limiter/settings fallbackno1000not forwarded
RATE_LIMIT_AUTH_MAXAPI limiter/settings fallbackno20not forwarded
RATE_LIMIT_REST_READ_MAXAPI limiter/settings fallbackno300not forwarded
RATE_LIMIT_REST_WRITE_MAXAPI limiter/settings fallbackno120not forwarded
RATE_LIMIT_EDGE_MAXAPI limiter/settings fallbackno60not forwarded
EDGE_PUBLIC_INVOKE_ENABLEDedge invoke guardnofalsenot forwarded
EDGE_INVOKE_TOKENedge invoke guardnoemptynot forwarded
EDGE_SECRETS_ENABLEDedge function servicenotruenot forwarded
BACKUP_DIRbackup/import servicenobackupsnot forwarded; volume is mounted at /app/backups
AI_DATA_DIRassistant thread storenodatanot forwarded; volume is mounted at /app/data
PG_BIN_DIRpg_dump/psql launchernoPATH lookupnot forwarded
BACKUP_ENABLEDbackup settings fallbacknofalsenot forwarded
BACKUP_CRONbackup settings fallbackno0 3 * * *not forwarded
BACKUP_RETENTIONbackup settings fallbackno7not forwarded
BACKUP_OFFSITEbackup settings fallbacknofalsenot forwarded
BACKUP_BUCKEToffsite backup clientnobackupsnot forwarded
BACKUP_S3_ENDPOINToffsite backup clientnomain S3 endpointnot forwarded
BACKUP_S3_REGIONoffsite backup clientnomain S3 regionnot forwarded
BACKUP_S3_ACCESS_KEY_IDoffsite backup clientnomain S3 access keynot forwarded
BACKUP_S3_SECRET_ACCESS_KEYoffsite backup clientnomain S3 secretnot forwarded

TRUST_PROXY defaults to empty (false) in code, but deploy/docker-compose.prod.yml forwards it as ${TRUST_PROXY:-1}: a project stack behind Traefik trusts exactly the one hop in front unless you override it. Leaving it unset in a stack with no proxy is the correct choice — trusting X-Forwarded-For there lets any client forge its IP.

Project setting fallbacks

The settings registry under apps/server/config/settings/ reads these process variables only as initial fallbacks. Persisted AppSetting values take precedence.

NameConsumed byRequired?DefaultDescription
GOOGLE_CLIENT_IDauth.social fallbacknoemptyEnables/configures Google when present.
GOOGLE_CLIENT_SECRETauth.social fallbacknoemptyGoogle client secret.
APPLE_CLIENT_IDauth.social fallbacknoemptyEnables/configures Apple when present.
APPLE_CLIENT_SECRETauth.social fallbacknoemptyApple client secret.
APPLE_BUNDLE_IDauth.social fallbacknoemptyApple audience/bundle ID.
AUTH_ALLOW_SIGNUPauth policy fallbacknoenabled unless falseAllows new users.
AUTH_REQUIRE_EMAIL_VERIFICATIONauth policy fallbacknofalseRequires verified email.
AUTH_AUTO_SIGNINauth policy fallbacknoenabled unless falseSigns in after verification.
AUTH_MIN_PASSWORD_LENGTHauth policy fallbackno8Minimum password length.
AUTH_MAX_PASSWORD_LENGTHauth policy fallbackno128Maximum password length.
TWILIO_ACCOUNT_SIDSMS fallbacknoemptyTwilio account SID.
TWILIO_AUTH_TOKENSMS fallbacknoemptyTwilio auth token.
TWILIO_FROM_NUMBERSMS fallbacknoemptyTwilio sender used by messaging settings.
EMAIL_VERIFICATION_SUBJECTemail template fallbacknobuilt-in templateVerification subject.
EMAIL_VERIFICATION_BODYemail template fallbacknobuilt-in templateVerification body.
EMAIL_RECOVERY_SUBJECTemail template fallbacknobuilt-in templateRecovery subject.
EMAIL_RECOVERY_BODYemail template fallbacknobuilt-in templateRecovery body.
DATA_RETENTION_ENABLEDdata retention settingsnoenabled unless falseEnables operational-log pruning.
DATA_RETENTION_CRONdata retention settingsno15 4 * * *Pruning schedule.
WEBHOOK_DELIVERY_RETENTION_DAYSdata retention settingsno30Webhook delivery retention.
EDGE_FUNCTION_LOG_RETENTION_DAYSdata retention settingsno30Edge log retention.
DATA_RETENTION_BATCH_SIZEdata retention settingsno500Rows removed per batch.
DATA_RETENTION_MAX_BATCHESdata retention settingsno20Maximum batches per run.
REALTIME_RETENTION_ENABLEDrealtime retention settingsnoenabled unless falseEnables terminal outbox pruning.
REALTIME_OUTBOX_COMPLETED_DAYSrealtime retention settingsno7Delivered-event retention.
REALTIME_OUTBOX_FAILED_DAYSrealtime retention settingsno30Failed-event retention.
REST_MAX_ROWSREST settings fallbackno1000Maximum rows per REST read, capped at 1000.

These fallback variables are not forwarded by the current production project Compose file. Configure their corresponding groups through Project Studio unless you maintain a Compose override that passes them.

Integration secrets

The uppercase names in apps/server/config/integrations-registry.ts are Project Studio edge-function secrets, not host or Compose process variables. They are injected into an edge sandbox only when edge secrets are enabled.

NameConsumed byRequired?DefaultDescription
STRIPE_SECRET_KEYStripe edge templateintegration: yesnoneStripe API key.
CALENDLY_TOKENCalendly edge templateintegration: yesnoneCalendly access token.
AIRTABLE_TOKENAirtable edge templateintegration: yesnoneAirtable token.
AIRTABLE_BASE_IDAirtable edge templateintegration: yesnoneAirtable base.
AIRTABLE_TABLEAirtable edge templateintegration: yesnoneAirtable table.
SLACK_WEBHOOK_URLSlack edge templateintegration: yesnoneIncoming webhook.
DISCORD_WEBHOOK_URLDiscord edge templateintegration: yesnoneDiscord webhook.
RESEND_API_KEYResend edge templateintegration: yesnoneResend key.
RESEND_FROMResend edge templateintegration: yesnoneSender address.
OPENAI_API_KEYOpenAI edge templateintegration: yesnoneOpenAI API key.
TWILIO_ACCOUNT_SIDTwilio edge templateintegration: yesnoneTwilio SID.
TWILIO_AUTH_TOKENTwilio edge templateintegration: yesnoneTwilio token.
TWILIO_FROMTwilio edge templateintegration: yesnoneTwilio sender used by the integration template.
GITHUB_TOKENGitHub edge templateintegration: yesnoneGitHub token.
GITHUB_REPOGitHub edge templateintegration: yesnoneRepository identifier.
NOTION_TOKENNotion edge templateintegration: yesnoneNotion token.
NOTION_DATABASE_IDNotion edge templateintegration: yesnoneNotion database.

Optional GitHub VPS workflow

The deploy-vps job in .github/workflows/ci.yml uses:

NameRequired?DefaultUse
VPS_HOSTdeployment: yesnoneSSH host; empty skips deployment.
VPS_SSH_KEYdeployment: yesnoneSSH private key; empty skips deployment.
VPS_KNOWN_HOSTSnogenerated with ssh-keyscanPinned SSH host keys.
VPS_USERyesmotherbaseDedicated non-root deploy account; root is rejected.
VPS_SSH_PORTno22SSH port.
VPS_REMOTE_DIRnoboilerplate-backend under the user's homeRemote checkout.
CONSOLE_URLsmoke test: yesnoneEnables the VPS smoke test when present.
ADMIN_EMAILsmoke test: conditionalnoneConsole smoke-test login.
ADMIN_PASSWORDsmoke test: conditionalnoneConsole smoke-test password.
PROJECTnotestSmoke-test project.
PROJECT_URLcritical flows: yesnoneProject API URL.
PROJECT_EMAILcritical flows: yesnoneProject test user.
PROJECT_PASSWORDcritical flows: yesnoneProject test password.
RLS_MODELcritical flows: yesnoneModel used by the RLS smoke flow.
PRIVATE_EDGE_ROUTEcritical flows: yesnonePrivate edge route used by the smoke flow.

The workflow pulls with --ff-only and runs ./setup.sh --yes --skip-dns-check on the VPS. It does not pass --prod; the existing non-local BASE_HOST makes setup recover VPS mode.