Django RQ Dashboard
Run RQ inside a Django app and you have working background jobs. Run RQ 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 Django venv.
Django + RQ via django-rq is a clean, focused stack. z4j layers on Postgres-backed history (RQ's Redis-resident records have a TTL), bulk requeue actions, RBAC across multiple Django projects, and full schedule CRUD if you also run rq-scheduler. The z4j-django adapter handles registration; z4j-rq instruments the worker without monkey-patching.
Install z4j alongside Django + RQ
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 Django venv
pip install z4j-django[rq] 3. Wire it into Django
# settings.py
INSTALLED_APPS += ["z4j_django"]
Z4J = {
"brain_url": env("Z4J_BRAIN_URL"),
"token": env("Z4J_TOKEN"),
"hmac_secret": env("Z4J_HMAC_SECRET"),
"project_id": env("Z4J_PROJECT_ID"),
"agent_name": env("Z4J_AGENT_NAME", default=None),
}
# That's it. No CELERY_APP, no Z4J_DEV_MODE, no dev_mode kwarg.
# Auto-detect checks the documented candidate layouts. Add CELERY_APP when
# none of those candidates resolves your application. What you get
- Persistent RQ task history in Postgres or SQLite
- Adapter-advertised controls: submit_task, retry_task, cancel_task, bulk_retry, purge_queue, requeue_dead_letter
- Scheduler integration via rq scheduler; 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-django and z4j-rq are Apache 2.0. Importing them into your Django 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 -
requeue_dead_letter
Event capture
Worker-wrap monkey-patch plus per-job callbacks. No code changes required in your jobs.
Reconciliation
rq.job.Job: status + ended_at + exc_info from the Redis hash.
Django with a different engine
Django Celery Dashboard
The industry standard, covered end-to-end.
Django Dramatiq Dashboard
Middleware-driven Dramatiq observability.
Django Huey Dashboard
Lightweight Redis/SQLite queue, first-class.
Django arq Dashboard
Async Redis queue for FastAPI-era Python.
Django taskiq Dashboard
Broker-agnostic async task framework.
Same engine, different framework
Start using Django RQ Dashboard
Self-hosted, open source, no SaaS, no telemetry. z4j runs anywhere Python or Docker runs.