z4j -- open-source control plane for Python task infrastructure
Project description
z4j
The all-in-one z4j umbrella package. Open-source control plane for Python task queues.
One pip install z4j brings z4j (dashboard + API)
into your environment. Use extras to pull the agent packages your
workers need: framework adapters (Django, Flask, FastAPI), engine
adapters (Celery, RQ, Dramatiq, Huey, arq, TaskIQ), and their
schedule companions. Every adapter cross-versions to the same z4j
release line, so the floors stay in sync without manual pinning.
What is z4j
z4j is one product split into 20 PyPI packages so each piece can be
installed only where it's needed. The umbrella z4j is the
operator-friendly entry point that wires the right combination
together for you.
The architecture is straightforward:
- One brain process per environment. Dashboard, API, audit log. Persistent storage in SQLite or Postgres.
- One agent per worker / app process. A thin pip package that imports inside your Django / Flask / FastAPI app or your Celery / RQ / Dramatiq worker, opens an authenticated WebSocket to the brain, and streams every task / worker / queue / schedule event.
- Operator actions flow back the same channel. Retry, cancel, bulk retry, purge, restart, schedule CRUD, manual trigger.
z4j is AGPL v3 and isolated in its own process. The agent packages your application imports are Apache-2.0 each, so your application code is never AGPL-tainted.
What's in the box
- Brain (
z4j). Server, dashboard, API, RBAC, HMAC-chained audit log, notifications, reconciliation worker. - Engine-agnostic dynamic scheduler
(
z4j-scheduler). Optional companion process for projects that want one canonical scheduler across mixed engines, with live editing from the dashboard, HA leader election, and audited schedule mutations. - Framework adapters.
z4j-django,z4j-flask,z4j-fastapi, plus the framework-freez4j-barefor plain Celery / RQ / Dramatiq workers. - Engine adapters.
z4j-celery,z4j-rq,z4j-dramatiq,z4j-huey,z4j-arq,z4j-taskiq. - Scheduler adapters.
z4j-celerybeat,z4j-rqscheduler,z4j-apscheduler,z4j-arqcron,z4j-hueyperiodic,z4j-taskiqscheduler.
Try the live demo (no install)
demo.z4j.dev is the dashboard SPA running in your browser against pre-baked fake data. One click on the pre-filled login lands you in a populated control plane with four sample projects: Celery + celery-beat (small healthy starter), FastAPI + arq + arq-cron, Django + Celery + django-celery-beat with a current incident scenario (failing schedule, alert firing, worker offline), and a mixed-engine z4j-scheduler showcase driving Celery + RQ + Dramatiq workers from one place.
It is a navigable preview, not a sandbox: every Create / Update /
Delete button toast-blocks (This is a demo. Refresh to reset; install z4j to make changes for real.), no real backend is
connected, refresh resets to a clean state. Useful before you
commit to pip install.
Install
The minimum useful install is z4j plus the framework + engine your stack actually uses. Use the extras instead of pinning each package by hand:
pip install z4j # brain only
pip install 'z4j[django,celery]' # Django + Celery + celery-beat
pip install 'z4j[fastapi,arq]' # FastAPI + arq + arq-cron
pip install 'z4j[flask,rq]' # Flask + RQ + rq-scheduler
pip install 'z4j[django,celery,scheduler]' # add z4j-scheduler too
Each extra pulls the matching engine adapter and its schedule
companion (e.g. [celery] pulls z4j-celery + z4j-celerybeat).
The [scheduler] extra adds z4j-scheduler for operators who want
the engine-agnostic dynamic scheduler.
Then start z4j:
z4j serve
First boot mints HMAC secrets, runs Alembic migrations, creates a
SQLite database at ~/.z4j/z4j.db, and prints a one-time setup URL
to stderr that creates the first admin user. Set
Z4J_DATABASE_URL=postgresql+asyncpg://... to use Postgres.
Why use z4j
z4j exists because every Python task queue ships its own viewer-grade tool (Flower for Celery, rq-dashboard for RQ, Dramatiq has none) and they all stop at viewer-grade. None of them give you:
- One dashboard across mixed engines (Celery + RQ + arq side by side, common operator workflow).
- An action surface (retry, cancel, bulk retry, purge, restart) that's safe to put in front of operations and compliance teams.
- A real audit log that an auditor can walk linearly.
- Live schedule editing across engines without per-daemon restarts.
- Self-hosted with no telemetry. z4j phones home only when an admin clicks Check for updates in Settings, and that URL is configurable.
z4j is the boring, self-hosted, audit-friendly choice. Built for homelab operators who want one place to look, and for compliance-sensitive teams who need to answer "who did what when" at quarter-end.
Documentation
Full docs at z4j.dev. The install guide at z4j.dev/getting-started/install/ covers all three paths (pip-SQLite, Docker-SQLite, Docker-Postgres).
License
AGPL-3.0-or-later, see LICENSE. Note: only z4j is AGPL. Every agent package your application imports is Apache-2.0, so your application code is never AGPL-tainted. Commercial licenses available; contact licensing@z4j.com.
Links
- Homepage: https://z4j.com
- Documentation: https://z4j.dev
- PyPI: https://pypi.org/project/z4j/
- Issues: https://github.com/z4jdev/z4j/issues
- Changelog: CHANGELOG.md
- Security: security@z4j.com (see SECURITY.md)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file z4j-1.6.0.tar.gz.
File metadata
- Download URL: z4j-1.6.0.tar.gz
- Upload date:
- Size: 2.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
687e33f4b502618fb9d984e3e75c6af1f04420c0df3fb12a5e7b3fdeeb395dae
|
|
| MD5 |
a46327280ebe3f5be979efcc3cdcba3f
|
|
| BLAKE2b-256 |
8cc9a9a88384e707bb7a89dd792a0878ad87b22d4bb92108b7eb5aad45d5c7e7
|
File details
Details for the file z4j-1.6.0-py3-none-any.whl.
File metadata
- Download URL: z4j-1.6.0-py3-none-any.whl
- Upload date:
- Size: 2.2 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
88b00245df842536bb94e6f08f5994ec7d5bd99ce4ec954736b1996505d5ff04
|
|
| MD5 |
038b821d541194e11f58c4b8645756eb
|
|
| BLAKE2b-256 |
dc5638ed8917d9f659476a205536eba9fef32f4bc4bbcd028a82e263ba03aafc
|