Environment Variables
Manage build-time and runtime environment variables for a Skytells app — add, edit, and scope variables to control how your app builds and runs.
The Environment page lets you manage all environment variables for a single app. Variables defined here are injected at both build time (available during the build command) and runtime (available to the running container).
Variable scopes
| Scope | When it applies |
|---|---|
| Build-time | Injected during the build step (e.g. npm run build). Use for things like NEXT_PUBLIC_* variables in Next.js or API endpoints embedded at compile time. |
| Runtime | Injected into the running container process. Use for secrets, database URLs, API keys, and any other configuration the app reads at startup or request time. |
Most variables apply to both scopes unless marked otherwise.
Managing variables
Add a variable
Open the Environment Page
Open Environment from the app sidebar.
Add a Variable
Select Add Variable (or the + button).
Enter the Key and Value
Enter the Key name (e.g. DATABASE_URL) and the Value.
Save the Variable
Select Save. A redeploy is required for runtime variables to take effect in the running container.
Edit a variable
Select the value field of any existing variable, update the value, and save.
Delete a variable
Select the trash icon next to the variable row, confirm the deletion, and save. Deleted variables take effect on the next deploy.
Sensitive values
Skytells masks variable values after saving. Once a value is saved, it is not displayed in plain text — only a bullet placeholder is shown. You can overwrite the value at any time but you cannot read it back from the Console.
Do not commit secrets to your Git repository. Use environment variables for all credentials, API keys, database URLs, and tokens. Anyone with access to your repository history could otherwise read them.
Project-level vs app-level variables
Variables defined on this page apply only to this app. If you have a variable that should be shared across all apps in the project (e.g. a shared REDIS_URL or a common API base URL), define it at the Project → Environment level instead.
App-level variables take precedence over project-level variables when the same key is defined in both places.
Variables injected automatically
Skytells automatically injects certain variables into every app container:
| Variable | Value |
|---|---|
PORT | The port Skytells expects your app to listen on (default: 3000). |
NODE_ENV | Set to production for production deployments. |
DATABASE_URL | Auto-injected when a database in the same project is linked to this app. |
When you create a database in the same project, its Internal Connection URL is available as an environment variable (typically DATABASE_URL). Check the database Overview for the exact variable name.
Example: .env to Console
If you have a local .env file, translate each KEY=value line to a Console variable:
# .env
DATABASE_URL=postgresql://user:pass@host:5432/db
REDIS_URL=redis://localhost:6379
API_SECRET=my-secret-token
NEXT_PUBLIC_API_URL=https://api.example.comAdd each line as a separate variable in the Console. Do not add the actual production secrets to .env.production in your repository.
After updating variables
- Changes to runtime variables require a Redeploy to take effect in the running container. Select Redeploy from the App Overview or push a new commit.
- Changes to build-time variables require a full re-build. Select Redeploy from the App Overview.
Related
- Project Environment Variables — shared variables across all apps in a project.
- Settings — Build — build command, install command, and output directory.
- Deployments — trigger and review builds after updating variables.
How is this guide?