The classic Celery viewer. Built in 2011.
- Scope
- Celery only
- Positioning
- Read-only viewer
- License
- BSD-3, open source
Credit where it's due
z4j vs. Flower, feature by feature
| Capability | Flower | z4j |
|---|---|---|
| Engine coverage | Celery only | Celery, RQ, Dramatiq, Huey, arq, taskiq |
| Persistent history | In-memory only, lost on restart | Postgres-backed, every task ever seen |
| Actions (retry, cancel, bulk) | None, strictly a viewer | Universal across every engine |
| Bulk operations | None | bulk_retry, purge_queue with filters |
| Schedule management | Read-only via Celery Beat viewer | Full CRUD: create, edit, delete, enable/disable, trigger-now |
| RBAC / multi-user | Single basic-auth user | Owner / Admin / Operator / Viewer per project |
| Invitation flow | None | Admin mints links, SMTP auto-send, single-use tokens |
| Password reset | N/A (no user model) | Constant-time, single-use tokens, session revoke |
| Audit log | None | HMAC-chained, tamper-evident |
| Reconciliation worker | None - tasks stuck 'started' stay that way | Periodic probe closes the gap automatically |
| Historical trends | None | Built-in: success, failure, p50/p95/p99 over time |
| Visual DAG (chains/groups/chords) | Flat parent/child list | Tidy-tree SVG with runtime badges |
| Secret redaction | Raw args shown in UI | Recursive scrubber + per-task overrides |
| Notifications | None | Email / Slack / Telegram / webhook, SSRF-hardened |
| Real-time updates | Polling | WebSocket with HMAC-signed frames |
Cut over from Flower in a week (or a weekend)
- 1
Keep Flower running during the migration
z4j and Flower don't interfere. Leave Flower up; install z4j alongside; compare views during the cut-over week. Turn Flower off when you're confident.
- 2
Install the z4j-celery adapter in the same worker process
Flower subscribes to Celery's broker events via a separate process. z4j-celery uses the same events, plus worker signals, plus the result backend for reconciliation. Both can observe concurrently.
- 3
Point z4j at the same broker + result backend
z4j reads your existing CELERY_BROKER_URL + CELERY_RESULT_BACKEND. No data migration. Historical tasks that Flower forgot on its last restart won't appear in z4j, but every task after z4j install is persistent.
- 4
Mint per-operator users
Flower's single-user basic-auth was always a compromise. z4j has real RBAC: invite your team, give each person a login, make operators actual operators. Audit log shows who retried what and when.
- 5
Delete your Flower docker-compose entry
Keep the compose file in git. If you hit a z4j bug, you can re-enable Flower in one minute. You won't need to.
Where we don't win
Flower has been around since 2011. It is battle-tested on Celery in a way z4j will not be for another year.
Flower is a single-process deploy: one container, no database. z4j needs SQLite at minimum, Postgres for production. That is a real operational delta.
If your stack is pure Celery and you only need a viewer, Flower is fine.
Compared to other dashboards
Try z4j alongside Flower, no migration required
Run both for a week. Compare. Decide.