Skip to content

Rollback

There is no hidden “instant alias” besides promote. Rolling back production means promoting a previous version that still exists.

Decision table

What you seeWhat to do
New Worker is live on prod HostConfirm prod_version_id
Previous version is still readyRe-promote it (fastest)
Previous version is archivedWake, wait for ready, promote
Previous version is destroyedCannot roll back. Redeploy from artifact

Fast path (still ready)

bash
curl -sS -X POST \
  -H "Authorization: Bearer $ADMIN_TOKEN" \
  "$CELLP_URL/v1/projects/$PROJECT/versions/$OLD_VERSION/promote"

CELLP_URL must include /v1. Promote returns 202 while the saga runs; poll project or version state until prod_version_id updates.

Verify production Host routing (not deprecated path URLs):

bash
curl -sS -H "Host: ${PROJECT}.ingress.local" "http://127.0.0.1:8787/" | head
# or GET /v1/projects/$PROJECT → prod_version_id, prod_url

See Preview & production for Host patterns in your environment.

Archived previous prod

bash
curl -sS -X POST -H "Authorization: Bearer $ADMIN_TOKEN" \
  "$CELLP_URL/v1/projects/$PROJECT/versions/$OLD_VERSION/wake"

# poll GET …/versions/$OLD_VERSION until status=ready

curl -sS -X POST -H "Authorization: Bearer $ADMIN_TOKEN" \
  "$CELLP_URL/v1/projects/$PROJECT/versions/$OLD_VERSION/promote"

Practice

After a risky promote, keep the previous production pinned for a window (POST …/pin or CELLP_ROLLBACK_KEEP on cellpd) so wake is unnecessary. See Archive.

Do not destroy versions you might need to roll back to.

Self-hosted Workers control plane. Not affiliated with Cloudflare or Vercel.