ASTRODOCK Features Sign-inAccounts and passkeys, no password in your app Databases & storageIts own Postgres and bucket, or yours Deploys & runtimesPush, upload, or let an agent do it Secrets & configNames in the repo, values on the platform Domains & HTTPSSubdomains and certificates, handled Monitoring & backupsLogs, alerts and nightly dumps For agents Self-hosting Docs Install

Features · Secrets & config

Nothing sensitive
in the repository.

Your app names the variables it needs. The values live on the platform and arrive at deploy — which matters more than ever when something else is writing the code.

app.json names, no values your platform encrypted at rest running app env vars declares injects

What that buys you

01

No .env to leak

There's no secrets file in the working tree, so there's none to commit by accident or paste into a chat window.

02

Safe to hand to an agent

Your agent writes the manifest and commits it. It contains variable names and nothing else, so the repository stays clean by construction.

03

Never half-configured

A missing required value stops the deploy before it starts and says which one. Your users don't meet a broken app.

Two kinds of variable

Yours and
the platform's.

Everything the platform supplies carries a reserved prefix — the app's URL, the port to bind, the database connection string, the addresses it needs for sign-in. Your own variables can't use that prefix, so there's never a question about where a value came from.

Which means an app can read its own address instead of being told, and can be moved to a different domain without touching a line.

The full variable list →
You declare STRIPE_SECRET_KEY · required · secret
The platform injects ASTRODOCK_DATABASE_URL
ASTRODOCK_APP_URL · ASTRODOCK_PORT
Missing a value Deploy blocked — STRIPE_SECRET_KEY has no value

Give it a machine
and ten minutes.