Skip to content

Operate After Deploy

This tutorial starts after you already have an active deployment. It walks through the operating loop BeamUp SLC v1 supports: inspect, configure, redeploy, watch replacement state, and recover with rollback.

Use this tutorial with a real or representative app when possible. The point is to decide whether BeamUp gives enough production confidence after the first live URL.

Run:

Terminal window
beamup --app hello-gleam status

Check:

  • App URL.
  • Active deployment ID.
  • Latest deployment ID.
  • Latest deployment state.
  • Runtime snapshot availability.
  • Drain or shutdown metadata if a replacement recently happened.

Open the app URL:

https://<app>.beamup.run

Fetch recent runtime logs once:

Terminal window
beamup --app hello-gleam logs --no-follow

Use follow mode while exercising the app:

Terminal window
beamup --app hello-gleam logs

When stdout and stderr are attached to a terminal, follow mode opens the TUI. In non-TTY plain output, follow mode polls every 500 ms.

JSON mode performs one fetch and never opens the TUI:

Terminal window
beamup --json --app hello-gleam logs --no-follow

Review logs before sharing them. Runtime logs are private app data and may contain application output.

Open the dashboard URL from your invitation and select the app.

Use the cockpit to answer:

  • Which deployment is active?
  • Was the latest deploy successful?
  • Are build logs visible?
  • Are runtime logs visible?
  • Is a safe BEAM runtime snapshot available?
  • Which process labels have the largest mailbox queues?
  • Are there snapshot warnings?
  • Are rollback targets available?

The cockpit should help you understand whether the app is running and whether the BEAM runtime looks pressured, without exposing unsafe internals.

Set a normal env var:

Terminal window
beamup --app hello-gleam env set FEATURE_FLAG=enabled

List env var keys:

Terminal window
beamup --app hello-gleam env list

List output shows metadata only. It does not return plaintext values.

Set a secret:

Terminal window
beamup --app hello-gleam env set DATABASE_URL=<database-url> --secret

List secret keys:

Terminal window
beamup --app hello-gleam env list --secret

Secrets are write-only after submit. The CLI and dashboard list only metadata. Plaintext, ciphertext, nonces, tags, and encryption key IDs are not returned.

If shell history is a concern, use the dashboard secret form for manual entry. Do not place secrets in beamup.toml, .env files committed with source, screenshots, chats, issue comments, or logs.

Step 6: Redeploy To Pick Up Runtime Config

Section titled “Step 6: Redeploy To Pick Up Runtime Config”

Runtime env vars and secrets are injected when a runtime starts. Updating or deleting a key does not mutate an already-running process.

Redeploy:

Terminal window
beamup deploy

BeamUp starts a candidate runtime with the new configuration and activates it only after health checks pass.

After a healthy replacement, BeamUp keeps one steady-state runtime per app, with a temporary second runtime during activation and drain.

Check status:

Terminal window
beamup --app hello-gleam status

In the cockpit, look for:

  • New active deployment.
  • Previous deployment entering drain or cleanup.
  • Runtime state such as draining, stopping, or stopped.
  • Shutdown outcome when available: graceful, forced, or failed.

The private SLC drain path deregisters the previous target from new traffic, waits the documented drain point, sends SIGTERM, allows bounded OTP shutdown, and force terminates only after the grace period.

BeamUp does not promise transparent connection migration or no reconnects. Clients with WebSocket or SSE connections should reconnect with normal backoff.

Fetch runtime logs again:

Terminal window
beamup --app hello-gleam logs --no-follow

If the redeploy fails, fetch build logs for the latest deployment:

Terminal window
beamup --app hello-gleam logs --build --deployment <deployment-id> --no-follow

Then check runtime logs for that deployment:

Terminal window
beamup --app hello-gleam logs --deployment <deployment-id> --no-follow

If a healthy replacement should be reverted, run:

Terminal window
beamup --app hello-gleam rollback

Without --to, BeamUp selects the latest eligible previous deployment.

To choose a specific target:

Terminal window
beamup --app hello-gleam rollback --to <deployment-id>

The CLI polls for up to 60 seconds and exits successfully only after the target deployment is active. If it times out, run beamup status before retrying.

If you created a temporary env var:

Terminal window
beamup --app hello-gleam env delete FEATURE_FLAG

If you created a temporary secret:

Terminal window
beamup --app hello-gleam env delete DATABASE_URL --secret

Redeploy if the running app must start without those values.

After the operating loop, record:

  • Whether logs were enough to understand the app.
  • Whether env/secret metadata made sense without plaintext readback.
  • Whether redeploy behavior was clear.
  • Whether drain and shutdown state changed your trust.
  • Whether rollback completed without founder help.
  • Whether the cockpit showed a signal you would not expect from a generic PaaS.
  • Whether you would keep the cockpit open while developing or operating the app.
  • Whether you would pay for the current beta for this app.

For reference details, see Env Vars And Secrets, Deploy Lifecycle And Long-Lived Connections, and Rollback.