Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.withnubo.com/llms.txt

Use this file to discover all available pages before exploring further.

Environment variables are how you feed config into your app - API keys, database URLs, feature flags, anything that shouldn’t be hardcoded. Nubo encrypts variables at rest and injects them into both the build and runtime environments.

Where variables live

Variables are scoped to either a Project or a Frame:
  • Project variables apply to every Frame in the Project. Good for things shared across apps (SENTRY_DSN, DATABASE_URL).
  • Frame variables apply to one Frame only. Good for app-specific settings (PORT, NODE_ENV).
If the same key exists at both levels, the Frame value wins.

Add variables

From the dashboard, open the Project or Frame and go to the Variables tab. Keys must start with a letter or underscore and contain only letters, numbers, and underscores ([A-Za-z_][A-Za-z0-9_]*). Via the API (note: the body is a JSON array, so you can add multiple at once):
# project-scoped
curl -X POST https://shuttle.withnubo.com/v2/projects/<project_id>/variables \
  -H "Authorization: Bearer <your-token>" \
  -H "Content-Type: application/json" \
  -d '[{"key": "DATABASE_URL", "value": "postgres://..."}]'

# frame-scoped
curl -X POST https://shuttle.withnubo.com/v2/projects/<project_id>/spaces/<space_id>/frames/<frame_id>/variables \
  -H "Authorization: Bearer <your-token>" \
  -H "Content-Type: application/json" \
  -d '[{"key": "LOG_LEVEL", "value": "debug"}, {"key": "API_KEY", "value": "..."}]'

Using variables in your app

Variables are available exactly like any other env var - no special SDK or prefix.
// Node.js
const dbUrl = process.env.DATABASE_URL;
# Python
import os
db_url = os.environ["DATABASE_URL"]
// Go
import "os"
dbURL := os.Getenv("DATABASE_URL")
They’re available at both build time and runtime. Build-time values let you use things like npm install against a private registry; runtime values handle the usual connection strings and secrets.

Update or remove

Changing a variable doesn’t automatically redeploy - trigger a new deploy from the dashboard or push a commit to apply the change. To delete:
curl -X DELETE https://shuttle.withnubo.com/v2/variables/<variable_id> \
  -H "Authorization: Bearer <your-token>"

Secrets

Values are encrypted at rest. Listing variables on a Project or Frame returns the keys and metadata only. To see a single value, use the reveal endpoint (or click the Reveal button next to a variable in the dashboard):
curl https://shuttle.withnubo.com/v2/variables/<variable_id> \
  -H "Authorization: Bearer <your-token>"
Rotate a secret by setting a new value; the old one is overwritten.
Avoid logging environment variables in your app. Runtime logs stream to the dashboard, and accidental secret leakage there is easy to do and hard to undo.

The port your app should listen on

Nubo doesn’t set PORT for you. Pick a port in your Frame’s config and have your app listen on that port explicitly, or set a PORT variable yourself and read it from your app.