The control plane for
Python task queues
One dashboard for Celery, RQ, Dramatiq, Huey, arq, and taskiq. Retry, cancel, bulk-action, reconcile, and monitor across every engine. Built for Django, Flask, and FastAPI. Self-hosted. Open source.
# Agent: import next to your Celery / RQ / Dramatiq app
from z4j_django import install
install(brain_url="https://brain.example.com")
# Brain: self-hosted FastAPI + dashboard
docker run -p 7700:7700 z4jdev/z4j:1.0.0 Run it your way.
From a homelab Raspberry Pi to a production Kubernetes cluster. Same feature set in every tier.
Pure Python (pip)
Install from PyPI. Runs as a single Python process with a local SQLite file.
z4j
A single Docker image with SQLite baked in. docker compose up and you are done.
z4j + Postgres
The same Docker image pointed at PostgreSQL for central backups, partitioning, and horizontal replicas.
Every Python task queue that matters.
Each engine adapter is a separate Apache-2.0 pip package. Install only the ones you need. Mix them freely within a project.
Celery
The industry standard, covered end-to-end.
Learn more
RQ
Lightweight Redis queue, fully instrumented.
Learn more
Dramatiq
Middleware-driven Dramatiq observability.
Learn more
Huey
Lightweight Redis/SQLite queue, first-class.
Learn more
arq
Async Redis queue for FastAPI-era Python.
Learn more
taskiq
Broker-agnostic async task framework.
Learn moreThe same buttons. Every engine.
Other dashboards hide Retry on Huey, disable Bulk-Retry on arq, grey out Cancel on taskiq. z4j does not. One protocol primitive, one UI, every engine.
Engine adapters implement one universal primitive, submit_task(name, args, kwargs), that every task queue can satisfy.
When the brain is asked to retry a Huey task, it reads the original args from its own tasks table and lowers the action to submit_task. The user never knows the difference.
- Retry / Bulk-Retry / DLQ-Requeue polyfilled on every engine
- Cancel native on 5 engines
- Restart Worker native on Celery, graceful self-exit elsewhere
- Rate Limit Celery only (broker-side primitive)
# The one method every engine implements async def submit_task(
self,
name: str,
*,
args: tuple = (),
kwargs: dict | None = None,
queue: str | None = None,
eta: float | None = None,
priority: int | None = None,
) -> CommandResult:
...
What ships in v1.0
Everything below is included on day one. No hidden tiers, no enterprise-only gating.
Unified action surface
One button set. Every engine.
Learn moreStuck-task reconciliation
Tasks started forever. Fixed, automatically.
Learn moreHistorical trends
Success rate, failure rate, throughput over time.
Learn moreVisual task DAG
See your canvas: chains, groups, chords.
Learn moreRBAC built-in
Four roles. Every endpoint gated. UI mirrors server.
Learn moreMulti-user invitations
Mint a link. Email it automatically. Accept in one click.
Learn morePassword reset flow
Industry-standard, timing-safe, single-use.
Learn moreSecure-by-default redaction
Secrets never leave the agent.
Learn moreHMAC-chained audit log
Tamper-evident. Even against DBAs.
Learn moreInstall into your stack.
First-class adapters for the three major Python web frameworks. Each is a single pip install.
How z4j stacks up.
Most dashboards cover one engine and stop at 'view.' See how z4j compares to the tools you might already be running.
Flower
The classic Celery viewer. Built in 2011.
See full comparisonRQ Dashboard
The simple web view for RQ.
See full comparisonGrafana + Prometheus
The DIY metrics approach. Great for SRE, wrong tool for task ops.
See full comparisonBuilt for production from day one.
Two rounds of pre-release security audits. No open HIGH or CRITICAL findings.
HMAC-chained audit log
Per-row HMAC plus prev_row_hmac chain. Tamper-evident against DBA-level row deletions.
Defense-in-depth rate limits
IP buckets on login (20/min), invitations (30/min), password-reset (10/min). Inline pruning, bounded memory.
Argon2id password hashing
64 MiB memory, 3 iterations. Policy: 3-of-4 character classes plus ~1,500-entry denylist.
Redaction pipeline
Recursive scrubber at the agent, defense-in-depth re-scrub on the brain. Zero unredacted args on the wire.
Wire-protocol HMAC
Every frame signed (HMAC v2). Replay guard (+/-60s + nonce + monotonic seq). Session-bound.
SSRF-hardened
Private-IP block + DNS-rebinding resolve-before-dial + scheme allow-list for webhooks, SMTP hosts, and channel URLs.
Ready to get started?
One Docker command. No credit card. No telemetry. No commercial-only gates.