What is z4j?
z4j is a control plane for Python task infrastructure. It gives Django, Flask, FastAPI, and bare-Python applications a modern dashboard for Celery, RQ, Dramatiq, Huey, arq, and taskiq - with persistent history, unified actions (retry / cancel / bulk-retry / restart), schedule CRUD, HMAC-chained audit logging, and secure-by-default redaction - without touching your existing task code.
It is not a new task queue
Section titled “It is not a new task queue”z4j integrates with the queue you already run. If you’re on Celery today, stay on Celery. Install one pip package. The dashboard populates within seconds.
It is not a pitch to replace Flower
Section titled “It is not a pitch to replace Flower”Flower is a Celery viewer. z4j is a control plane:
- Observation - task events, worker state, schedule runs, error rates.
- Action - retry, cancel, bulk-retry, restart, purge - on every engine.
- Schedule CRUD - create/update/delete periodic tasks from the UI (on supported schedulers).
- Persistent history - PostgreSQL-backed audit trail, survives broker restarts.
- Multi-engine - run Celery + RQ in the same org without switching tools.
Mental model
Section titled “Mental model”┌──────────────────────────────┐│ z4j-brain │ FastAPI + React dashboard│ (Postgres persistence + │ + WebSocket server for agents│ unified action surface) │ AGPL v3└──────────────▲───────────────┘ │ WebSocket (outbound from your app) │┌──────────────┴───────────────┐│ z4j-<framework> │ thin pip package you install in│ + z4j-<engine> adapters │ your app (Django/Flask/FastAPI/bare)│ │ Apache 2.0└──────────────────────────────┘ │ ▼ Celery / RQ / Dramatiq / … your existing task code, unchangedOne sentence per feature
Section titled “One sentence per feature”| Feature | What it does |
|---|---|
| Task list | Every enqueue/start/success/retry/fail event across every engine, one timeline |
| Unified actions | Retry/cancel/bulk-retry behave the same on every engine - brain polyfills what the native API lacks |
| Schedule CRUD | Create, update, pause, delete periodic tasks (supported schedulers) |
| Audit log | HMAC-chained, tamper-evident. Every admin action, every auth event |
| RBAC | Project-scoped roles (owner / admin / operator / viewer) + multi-user invitations |
| Rate limits | Per-endpoint on every unauthenticated path |
| Reconciliation | Background worker reconciles “running forever” tasks against real engine state |
| Redaction | Secrets never leak to events - pattern-based + field-name heuristics |
How do I install it?
Section titled “How do I install it?”Three paths, three audiences. Pick the one that matches what you are doing:
| If you are… | Run |
|---|---|
| Evaluating (one-venv demo) | pip install z4j — gets brain + core in one command. AGPL-3.0. |
| Instrumenting a production app | pip install z4j-<framework> z4j-<engine> — agents only, Apache 2.0. |
| Running the brain in production | docker run z4jdev/z4j for the brain; agents via pip in the app. |
See the install guide for the full breakdown of each path and their licence implications.
What to read next
Section titled “What to read next”- Why z4j? - the “why now”
- Comparison - vs. Flower / Django-RQ / rq-dashboard
- Install - get it running