Skip to content

App Management

The following functionality is available in the UI for managing applications:

  • App creation and deletion, with a typed confirmation before an app is destroyed. Deleting an app returns you to the app list right away and shows a toast, marking the app as "deleting" in the list until the background destroy finishes and it drops out
  • Renaming an app from the Settings tab, with a typed confirmation and an option to skip the rebuild that would otherwise run afterwards. The rename runs as a queued background job, and the app's team access, webhook configuration, and activity history follow it to the new name
  • Deploy locking and unlocking
  • Maintenance mode, serving a maintenance page to all visitors
  • Starting, stopping, restarting, and rebuilding an app from the Actions menu in the app header, and starting or stopping and restarting from the status row on the Overview tab, with stopping always confirmed and the available actions reflecting whether the app is not deployed, running, stopped, or deploy locked
  • Domain management with inline editing and a DNS hint for routing new domains
  • TLS certificate management on a unified tab that switches between Let's Encrypt and a manual certificate. Let's Encrypt is enabled with a registration email and a production or staging ACME server, runs as a queued background job while the certificate is issued, and shows the issued certificate's status, expiry, and covered hostnames with a disable action. A manual certificate can be uploaded when Let's Encrypt is not managing the certificate, and admins can toggle the server-wide auto-renewal cron job
  • Managing environment variables through batched staging: edits, additions, and unsets accumulate in a client-side draft instead of deploying one at a time. A Rows view offers masked values with reveal and mask controls, copy buttons, inline editing, per-variable staging chips, and a composer for staging new vars, while a .env view edits the whole config as text and previews the delta before applying it back to the draft. A commit bar summarizes the pending changes and deploys them together in a single config:set when saved, requiring an explicit acknowledgement before any variable is unset, or discards the draft entirely
  • Scaling process counts and setting memory limits, memory reserves, and CPU limits per process type
  • Buildpack management, including ordering
  • Builder selection and build directory configuration
  • Scheduler management
  • HTTP basic authentication, including allowed users and allowed IP addresses that bypass authentication
  • Viewing live logs with a source selector that switches the stream between application (container stdout/stderr), nginx access, and nginx error logs, plus process filtering for application logs and pause and follow controls. Logs stream over a WebSocket, so when a proxy or CDN blocks the connection the tab shows a connection-error banner with a Retry action and a link to the WebSocket requirements
  • An Activity tab listing the app's recent commands in a master-detail layout: selecting a command shows its context, status, timing, exit code, links to the related user and services, and its lineage, and live-tails its logs while it runs or shows the full log once complete. Viewing job logs requires the job:read permission; without it the tab shows an access-denied message
  • Datastore linking with credential reveal

Changes that trigger a rebuild (environment variables, buildpacks, scaling, resource limits, rebuilds) are queued as background jobs. The UI surfaces each queued job as a toast notification with a link to view it on the Activity tab, and reports when the job completes or fails.