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.
Step 1: Check The Current App State
Section titled “Step 1: Check The Current App State”Run:
beamup --app hello-gleam statusCheck:
- 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.runStep 2: Open Recent Runtime Logs
Section titled “Step 2: Open Recent Runtime Logs”Fetch recent runtime logs once:
beamup --app hello-gleam logs --no-followUse follow mode while exercising the app:
beamup --app hello-gleam logsWhen 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:
beamup --json --app hello-gleam logs --no-followReview logs before sharing them. Runtime logs are private app data and may contain application output.
Step 3: Inspect The Cockpit
Section titled “Step 3: Inspect The Cockpit”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.
Step 4: Set A Runtime Env Var
Section titled “Step 4: Set A Runtime Env Var”Set a normal env var:
beamup --app hello-gleam env set FEATURE_FLAG=enabledList env var keys:
beamup --app hello-gleam env listList output shows metadata only. It does not return plaintext values.
Step 5: Set A Secret
Section titled “Step 5: Set A Secret”Set a secret:
beamup --app hello-gleam env set DATABASE_URL=<database-url> --secretList secret keys:
beamup --app hello-gleam env list --secretSecrets 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:
beamup deployBeamUp starts a candidate runtime with the new configuration and activates it only after health checks pass.
Step 7: Watch Replacement And Drain
Section titled “Step 7: Watch Replacement And Drain”After a healthy replacement, BeamUp keeps one steady-state runtime per app, with a temporary second runtime during activation and drain.
Check status:
beamup --app hello-gleam statusIn the cockpit, look for:
- New active deployment.
- Previous deployment entering drain or cleanup.
- Runtime state such as
draining,stopping, orstopped. - Shutdown outcome when available:
graceful,forced, orfailed.
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.
Step 8: Confirm Logs After Redeploy
Section titled “Step 8: Confirm Logs After Redeploy”Fetch runtime logs again:
beamup --app hello-gleam logs --no-followIf the redeploy fails, fetch build logs for the latest deployment:
beamup --app hello-gleam logs --build --deployment <deployment-id> --no-followThen check runtime logs for that deployment:
beamup --app hello-gleam logs --deployment <deployment-id> --no-followStep 9: Roll Back
Section titled “Step 9: Roll Back”If a healthy replacement should be reverted, run:
beamup --app hello-gleam rollbackWithout --to, BeamUp selects the latest eligible previous deployment.
To choose a specific target:
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.
Step 10: Delete Test Configuration
Section titled “Step 10: Delete Test Configuration”If you created a temporary env var:
beamup --app hello-gleam env delete FEATURE_FLAGIf you created a temporary secret:
beamup --app hello-gleam env delete DATABASE_URL --secretRedeploy if the running app must start without those values.
What To Record For Private Beta
Section titled “What To Record For Private Beta”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.
