Documentation / Build and deploy
Variables and configuration
Service variables, references, and the upferry.json format.
Service and shared variables
Open a service's Variables tab to add application settings and secrets. Shared variables belong to a project environment. They are included in a service through an explicit reference, not automatically injected everywhere.
DATABASE_URL=${{postgres.DATABASE_URL}}
API_KEY=${{shared.API_KEY}}
API_BASE=https://${{api.UPFERRY_PUBLIC_DOMAIN}}/v1
Here postgres and api are service names in the same environment. ${{PGHOST}} refers to a variable in the current service. References are resolved for the selected environment; missing variables and circular references fail validation.
Saving variables does not rewrite the environment of an already running process. Deploy again, then check the new deployment. Never put production secrets into a public repository, article, screenshot, or support log.
Configuration in the repository
Place upferry.json in the service root, or the repository root as a fallback. Fields from this file override the corresponding panel settings for that deployment. Unspecified fields retain the panel values.
{
"build": {
"buildCommand": "npm ci && npm run build",
"watchPatterns": ["apps/api/**", "packages/shared/**"]
},
"deploy": {
"startCommand": "npm start",
"healthcheckPath": "/health",
"healthcheckTimeout": 120,
"restartPolicyType": "ON_FAILURE",
"restartPolicyMaxRetries": 3
},
"resources": {
"memoryMb": 1024,
"cpus": 0.5,
"pids": 256
}
}
Use commands and watch patterns that match your project. Supported fields also include and . Restart policies are , , and . Health check timeouts are seconds; cron uses UTC. Unsupported keys are rejected instead of silently ignored.