Projects

Environment Variables

Define and manage environment variables at the project level to share configuration across multiple apps, or scope variables to a single app for service-specific settings.

Skytells supports environment variables at two levels: project-level (shared across all apps in the project) and app-level (scoped to a single service). The Environment Variables page under a project manages the shared layer.

Two Levels of Environment Variables

Project-Level Variables

Defined once and available to every app in the project. Ideal for secrets or configuration shared by multiple services — API keys, external service URLs, region identifiers, and similar cross-service values.

App-Level Variables

Scoped to a single app. Managed from the individual app's environment settings. App-level values override project-level values of the same name for that specific app.

The project-level Environment Variables page is your one-stop location for values that multiple apps in the project need. If a value is only relevant to one app, define it at the app level instead.

When to Use Project-Level Variables

Use the project-level environment page when:

  • Multiple apps share a secret — for example, all services in a project use the same external analytics API key.
  • A configuration value should be consistent — all apps in the project should point to the same staging environment flag or feature toggle.
  • You want one place to rotate a secret — update the value once at the project level, and every app in the project picks it up on the next restart or redeploy.

Do not use project-level variables when:

  • The value is specific to one app only. Define it in that app's environment settings.
  • The value is a database connection string that Skytells auto-injects. These are managed automatically.

Auto-Injected Database Credentials

When you provision a database inside a project, Skytells automatically injects the connection details as environment variables into the apps in the same project. You do not need to copy or paste connection strings manually.

The injected variables typically follow a consistent naming pattern and are available to all apps in the project that have internal network access to the database.

Auto-injected database credentials are read-only from the Environment Variables page. To rotate database credentials, manage them from the database's own settings page.

Setting Project-Level Variables

Open the Project

Open the project in the Console.

Navigate to Project > Environment Variables.

Add a Variable

Select Add Variable.

Enter the Variable Name and Value

Enter the variable name (typically SCREAMING_SNAKE_CASE) and its value.

Save the Variable

Save. The variable is now available to all apps in the project.

Restart Affected Apps

Restart or redeploy affected apps so they pick up the new value at runtime.

Updating a project-level variable does not automatically restart running apps. Changes take effect only after each app is restarted or redeployed.

Variable Inheritance and Override

The resolution order for a running app is:

  1. App-level variable — if an app defines a variable with the same name as a project-level variable, the app-level value wins for that app.
  2. Project-level variable — used by default if no app-level override exists.
  3. Auto-injected system value — for database credentials and platform-managed values; these are layered in at deployment time.

This lets you define sensible defaults at the project level while allowing individual apps to override specific values without affecting siblings.

Security Considerations

  • All variable values are encrypted at rest. They are never stored in plain text.
  • Variable values are not exposed in build logs or deployment output.
  • Never commit secrets to source control. Use environment variables for credentials, API keys, and tokens — regardless of your language or framework.
  • Rotate secrets periodically, especially after a team member leaves the project. Update the variable value and redeploy affected apps.
  • Project Overview — how environment variables fit into the full project resource model.
  • Apps Overview — manage app-level variables and redeploy after changes.
  • Databases Overview — understand how database credentials are auto-injected into apps.
  • Integrations — connect source control and other external services that may produce secrets to manage here.

How is this guide?

On this page