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.8 (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.8.tar.gz (26.8 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.8-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: z4j-1.0.8.tar.gz
  • Upload date:
  • Size: 26.8 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.8.tar.gz
Algorithm Hash digest
SHA256 a100c63155e814f0efe5213d173c89fbdf83ac3bbe20693cf1c8f18a07c98e81
MD5 ef3942526a37f63762ea0b5fe07295fa
BLAKE2b-256 1e566fd684d201ec05b9c71bf4cfdeef84151395c22623546cc43e3baa70ae0b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: z4j-1.0.8-py3-none-any.whl
  • Upload date:
  • Size: 16.9 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.8-py3-none-any.whl
Algorithm Hash digest
SHA256 8b6b1f4ccc3446994118bca646b3a94945c124d7d6105eccd8c0a39798bd9236
MD5 95463eafbae28b5851ddaace3bac7346
BLAKE2b-256 62099770f9c3e52d324dbe0e9d1491633170241587780041d5037c05612a9f05

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