Skip to content

DigitalOcean App Platform, from your iPhone

DigitalOcean App Platform is a fully managed platform as a service that deploys applications from Git repositories or container images. Duskwatch is an independent iPhone app for DigitalOcean, in development; it shows which version of each app is live, why a deploy failed and what changed, streams the logs, and lets you roll back, redeploy or restart behind Face ID.

Updated

What's live right now

The first question after a failed release is whether users are affected. Each app opens on a deploy card that answers it: the commit that is serving traffic, since when, and whether a newer deployment is building, failed or was cancelled. Below it sit the components, so you can see that the api service is healthy while a worker keeps restarting.

The deploy card for api-prod, with synthetic values

Still live: 3f2a91c · since 22:40

Latest deploy failed · Likely cause: api didn't pass its health check

Failed the same way 3 times in a row

When a deploy fails

If you turn on alerts, a failed deploy sends a push that says the important part first: the previous version is still live. Opening it shows the step that failed and a likely cause read from DigitalOcean's failure reason, the app spec and any logs you have opened. The cause is labelled as likely, never stated as fact. When the same reason repeats, the screen says how many deploys in a row failed that way, and a spec diff with a compare link to your Git host shows what changed.

Likely causes the app can name for a failed deploy, with synthetic component names
Likely causeWhat it usually means
api ran out of memoryThe instance size is too small for the new build or a leak appeared
api didn't pass its health checkThe app started but did not answer on its health check in time
Build failed in webThe build step failed; nothing new reached users
Pre-deploy job migrate failedNothing was deployed; the live version is unchanged
worker crashed on startThe new version exits as soon as it runs
The push, with synthetic names

"api-prod: deploy failed" · acme-prod · The previous version is still live.

Logs and live tail

Logs open on the type that best explains the app's state: the build log after a build failure, the deploy log after a failed rollout, and the runtime log when the app is up. You can switch to crash logs, follow the runtime log live, and share a short excerpt instead of the whole log. Logs travel only between your iPhone and DigitalOcean. More on the logs page.

Roll back, redeploy, restart or cancel

App actions follow the same rule as every write: a sheet names the action, the app and the team, and Face ID confirms it. Rolling back and reverting a rollback are armed with a swipe ("Swipe to roll back api-prod"); the rest are a tap.

App Platform actions and how each is confirmed
ActionConfirmed withWhen to use it
Roll backSwipe, then Face IDA release broke something and the previous one worked
Commit the rollbackTap, then Face IDThe older version is the one to keep; deploys resume
Revert the rollbackSwipe, then Face IDGo back to the app spec from before the rollback
RedeployTap, then Face IDBuild and deploy the latest commit on its branch, optionally with a forced rebuild
RestartTap, then Face IDComponents are stuck but the code is fine
Cancel deploymentTap, then Face IDStop a deployment that should not go out

Because a pinned app ignores your pushes, the app keeps a finding on it until you decide: "Pinned to a rollback: pushes won't deploy".

Health, workers and jobs

  • "api isn't serving" or "api is unhealthy" when components stop passing health checks; with alerts on, this is a push, followed by one when it is healthy again.
  • "worker keeps restarting" when a component restarts again and again.
  • "Job nightly-report failed its last run" for scheduled jobs; a failed pre-deploy job shows as the deploy's likely cause instead.
  • "Last deploy took 3× longer than usual", measured against the app's own recent deploys.
  • Failed domains, so a custom domain that stopped serving is not a surprise.

What Duskwatch doesn't do here

  • No creating, scaling or deleting apps.
  • No editing the app spec or environment variables; their values are never read.
  • No log storage: logs are fetched from DigitalOcean when you open them.
  • No alerts on log lines or log patterns.
  • No Functions or container registry views.

Questions

  • Does App Platform tell me when a deploy fails?

    Yes, by email by default, and you can add Slack. Duskwatch adds a push on your iPhone that says whether the previous version is still live.

  • Is the previous version still live after a failed deploy?

    Usually yes: a failed deployment does not replace the one serving traffic. The deploy card shows which commit is live and since when, for example "Still live: 3f2a91c · since 22:40".

  • How do I roll back an App Platform app from my phone?

    Open the app, choose Roll back, swipe to arm it and confirm with Face ID. Afterwards, commit the rollback to resume deploys, or revert it.

  • Can I see what changed in a failed deploy?

    Yes. The deployment shows a spec diff and a compare link to your Git host, next to the step that failed and its likely cause.

  • What about workers and jobs?

    Workers that keep restarting and jobs that failed their last run appear as findings on the app. Their logs are one tap away.

Duskwatch is in development. Join the waitlist to hear when it's on the App Store.

We'll email you once when Duskwatch is on the App Store. One-click unsubscribe. How we handle your data

Basic monitoring is free; alerts, most actions and advanced features are part of Duskwatch Pro.