Skip to main content

z4j - open-source control plane for Python task infrastructure

Project description

z4j

Open-source control plane for Python task infrastructure. License: AGPL v3 - commercial license available (contact licensing@z4j.com). Status: v1.0.10 (production-ready).

A modern, self-hosted alternative to Flower / Prometheus-only task monitoring. Monitor, manage, and control Celery / RQ / Dramatiq / Huey / arq / TaskIQ / APScheduler workers, tasks, schedules, and queues from a single dashboard.

This is the umbrella package. Installing z4j gets you the flagship experience (brain + dashboard + SQLite) plus a clean way to layer in adapter engines via extras.

Quick start - 30 seconds

pip install z4j
z4j serve

That's the entire setup. The first run automatically:

  1. Creates ~/.z4j/z4j.db (bundled SQLite, no Postgres needed for evaluation).
  2. Mints HMAC signing keys to ~/.z4j/secret.env (sessions + audit-log chaining survive restarts).
  3. Runs Alembic migrations to head.
  4. Boots the brain on http://localhost:7700.
  5. Prints a one-time setup URL like http://localhost:7700/setup?token=....

Open the URL in your browser, create the admin account, and you land on the dashboard. Everything self-contained in ~/.z4j/. To start fresh: delete that directory and re-run.

See z4j-brain for the complete configuration reference (defaults, retention, rate limits, Argon2 cost, etc.). For production, set Z4J_SECRET, Z4J_SESSION_SECRET, Z4J_DATABASE_URL, Z4J_PUBLIC_URL, and Z4J_ALLOWED_HOSTS explicitly via env vars and back up the secret store.

Install shapes

# Just the brain (dashboard + SQLite)
pip install z4j

# Brain + Celery adapter (pulls z4j-celery + z4j-celerybeat)
pip install "z4j[celery]"

# Brain + Django + Celery
pip install "z4j[django,celery]"

# Switch the brain to PostgreSQL
pip install "z4j[postgres]"

# Every adapter engine at once (useful for CI)
pip install "z4j[agents]"

# The kitchen sink
pip install "z4j[all]"

Which adapter extras exist

Extra Installs For
[celery] z4j-celery + z4j-celerybeat Celery workers + beat scheduler
[django] z4j-django Django task telemetry
[flask] z4j-flask Flask background tasks
[fastapi] z4j-fastapi FastAPI BackgroundTasks
[rq] z4j-rq + z4j-rqscheduler RQ workers + rq-scheduler
[dramatiq] z4j-dramatiq Dramatiq actors
[huey] z4j-huey + z4j-hueyperiodic Huey + periodic tasks
[arq] z4j-arq + z4j-arqcron arq workers + cron
[taskiq] z4j-taskiq + z4j-taskiqscheduler TaskIQ + scheduler
[apscheduler] z4j-apscheduler APScheduler jobs
[bare] z4j-bare Bare (no engine) agents

Which umbrella extras exist

Extra Installs For
[postgres] z4j-brain[postgres] (asyncpg) Production PostgreSQL backend
[agents] every engine adapter Full-stack dev / CI testing
[all] [agents,postgres] Kitchen sink

Agent-only installs (no AGPL in your app's venv)

If you're adding z4j to an existing Django / Celery / Flask application and you need Apache-2.0-only dependencies (no AGPL in your proprietary code's venv), skip the umbrella and install the standalone adapter packages directly:

pip install z4j-core z4j-django    # SDK + Django adapter
pip install z4j-celery             # SDK + Celery adapter
pip install z4j-rq                 # SDK + RQ adapter

Every adapter package is Apache 2.0 and depends only on z4j-core (also Apache 2.0). Point Z4J_BRAIN_URL at a running brain and the adapter will start streaming telemetry.

Docker Compose recipes

Prefer Docker to pip? This repo ships three ready-to-use compose files alongside the Python package:

git clone https://github.com/z4jdev/z4j.git
cd z4j
cp .env.example .env     # fill in Z4J_SECRET, Z4J_SESSION_SECRET, etc.

Then pick your mode:

# Evaluation / homelab (SQLite bundled in the image):
docker compose up -d

# Production self-host (adds PostgreSQL 18 sidecar):
docker compose -f docker-compose.postgres.yml up -d

# Add Caddy auto-HTTPS on top of either mode:
docker compose -f docker-compose.yml -f docker-compose.caddy.yml up -d
# or:
docker compose -f docker-compose.postgres.yml -f docker-compose.caddy.yml up -d

All three compose files reference the same z4jdev/z4j:latest image from Docker Hub - the mode switch happens at runtime via Z4J_DATABASE_URL, not at build time. Caddy is an optional overlay that layers auto-HTTPS on top.

Full deployment walkthrough, reverse-proxy alternatives (nginx, Traefik, Cloudflare Tunnel), and production hardening guide: https://z4j.dev.

Licensing

z4j (this umbrella package) is AGPL v3 because it installs z4j-brain by default. If that is incompatible with your policy, use the agent-only install recipe above.

  • Agent packages (z4j-core, z4j-celery, z4j-django, ...): Apache 2.0. Free for proprietary use.
  • Brain server (z4j-brain): AGPL v3. Commercial license available - contact licensing@z4j.com.

The split is deliberate. The brain is the network service operators run; the agents are the client libraries integrators embed. AGPL protects the server; Apache makes integration frictionless.

Documentation

Complete documentation, tutorials, API reference, deployment guides: https://z4j.dev.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

z4j-1.0.15.tar.gz (28.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

z4j-1.0.15-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

Details for the file z4j-1.0.15.tar.gz.

File metadata

  • Download URL: z4j-1.0.15.tar.gz
  • Upload date:
  • Size: 28.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for z4j-1.0.15.tar.gz
Algorithm Hash digest
SHA256 0c940054b4f7bb85a976c7906e862e15298c596d0dbf0f0c81a6151590902e54
MD5 72d1abe52ce0f25647ea21a31ac568cd
BLAKE2b-256 2ed72ba6ad761d299746dcb44647cfd02fdf2d8246f48595900f710d98829d23

See more details on using hashes here.

File details

Details for the file z4j-1.0.15-py3-none-any.whl.

File metadata

  • Download URL: z4j-1.0.15-py3-none-any.whl
  • Upload date:
  • Size: 16.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for z4j-1.0.15-py3-none-any.whl
Algorithm Hash digest
SHA256 b84ebbd915baf2c07e7a494b48b3d8ca254145c77d066c6f14d63988262ac8fb
MD5 a693250152df3f6083db30dedd70b1fe
BLAKE2b-256 1fb4cacee14dbe9fce82549fd1be34e727a0f2e6d59bc6170ae20b18dcc8ed41

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page