Flask Celery Dashboard
Run Celery inside a Flask app and you have working background jobs. Run Celery with z4j and you also have a dashboard, persistent history, the task controls this adapter can execute safely, scheduler integration, RBAC with invitations, and a tamper-evident audit log. z4j is one container or one Python process; the agent is one pip extra in your existing Flask venv.
Flask + Celery is the textbook combination for adding background work to a sync-heavy Python service. z4j-flask follows the standard Flask extension shape (Z4J(app)), reads its config from app.config (or env via from_prefixed_env), and discovers Celery tasks from your extensions/ layout. No monkey-patching, no init-order tricks.
Install z4j alongside Flask + Celery
1. Install the brain
pip install z4j && z4j serve First boot prints a setup URL to stderr. Open it, create the first admin, and mint a token + HMAC secret for this agent.
2. Add the agent to your Flask venv
pip install z4j-flask[celery] 3. Wire it into Flask
from flask import Flask
from z4j_flask import Z4J
app = Flask(__name__)
app.config.from_prefixed_env("Z4J_")
z4j = Z4J(app) What you get
- Persistent Celery task history in Postgres or SQLite
- Adapter-advertised controls: submit_task, retry_task, cancel_task, bulk_retry, purge_queue, restart_worker, pool_grow / pool_shrink, add_consumer / cancel_consumer, rate_limit
- Scheduler integration via celery beat; available controls depend on that scheduler adapter
- RBAC with invitations and password reset
- HMAC-chained tamper-evident audit log
- Notifications: email, Slack, Telegram, webhook
z4j-flask and z4j-celery are Apache 2.0. Importing them into your Flask app does not affect your application's licensing. z4j is AGPL-3.0-or-later, isolated in its own process.
What the dashboard can actually do
Native actions
-
submit_task -
retry_task -
cancel_task -
bulk_retry -
purge_queue -
restart_worker -
pool_grow / pool_shrink -
add_consumer / cancel_consumer -
rate_limit
Event capture
Signals (in-process) + broker-events monitoring (fanout). Auto-switches based on worker pool type.
Reconciliation
celery.result.AsyncResult, authoritative; covers every backend (redis, rpc, db, etc.).
Flask with a different engine
Flask RQ Dashboard
Lightweight Redis queue, fully instrumented.
Flask Dramatiq Dashboard
Middleware-driven Dramatiq observability.
Flask Huey Dashboard
Lightweight Redis/SQLite queue, first-class.
Flask arq Dashboard
Async Redis queue for FastAPI-era Python.
Flask taskiq Dashboard
Broker-agnostic async task framework.
Same engine, different framework
Start using Flask Celery Dashboard
Self-hosted, open source, no SaaS, no telemetry. z4j runs anywhere Python or Docker runs.