Everything z4j ships, in one place.
Every capability below lands on day one. No hidden tiers. No enterprise-only gating. Security, observability, actions, and team collaboration, all in the open-source release.
Observability
Tasks, workers, queues, schedules. Real-time + historical.
Actions
Retry, cancel, bulk-retry, purge, requeue DLQ.
Security
RBAC, audit log, redaction, HMAC wire protocol.
Collaboration
Multi-user projects, invitations, password reset.
Feature catalog
Click any card for a deeper look with screenshots and config notes.
Observability
Tasks, workers, queues, schedules. Real-time + historical.
Actions
Retry, cancel, bulk-retry, purge, requeue DLQ.
Security
RBAC, audit log, redaction, HMAC wire protocol.
RBAC built-in
Four roles. Every endpoint gated. UI mirrors server.
Learn moreSecure-by-default redaction
Secrets never leave the agent.
Learn moreHMAC-chained audit log
Tamper-evident. Even against DBAs.
Learn moreDefense-in-depth rate limits
No brute-force vectors on public endpoints.
Learn moreCollaboration
Multi-user projects, invitations, password reset.
The control-plane architecture
z4j separates the brain (central server + dashboard) from agents (thin pip packages that run in your app). Agents push events over an outbound WebSocket. The brain dispatches commands back over the same channel.
What ships, where it lives, under which license
z4j is a monorepo. Each piece is installable as an independent pip package. Agents are Apache 2.0, the brain is AGPL 3.0, everything else is documented below.
| Package | Role | Runs in | License |
|---|---|---|---|
| z4j-core | Framework-free, engine-free domain core Protocol definitions, domain models, redaction engine, HMAC envelope, serialization. Knows nothing about Django, Celery, or Redis. | Inside every agent and the brain | Apache 2.0 |
| z4j-bare | Framework-free agent bootstrapper Connects to the brain, buffers events to local SQLite, manages lifecycle. Use directly when you have no web framework. | Inside your app process | Apache 2.0 |
| z4j-<framework> | Framework adapter (django, flask, fastapi) Reads your framework's settings, auto-registers adapters on app startup, hooks into the framework's lifecycle. | Inside your app process | Apache 2.0 |
| z4j-<engine> | Engine adapter (celery, rq, dramatiq, huey, arq, taskiq) Captures task events from the engine's signals, middleware, or hooks. Executes commands (retry, cancel, purge) against the engine. | Inside your app process | Apache 2.0 |
| z4j-<scheduler> | Scheduler adapter (celery-beat, apscheduler, ...) Surfaces periodic tasks on the Schedules page. Handles schedule CRUD where the scheduler supports runtime mutation. | Inside your app process | Apache 2.0 |
| z4j-brain | FastAPI backend + React dashboard Stores events in Postgres or SQLite, serves the dashboard, authenticates users, dispatches commands back to agents. One image, many agents. | Standalone container or pip install | AGPL v3 |
z4j-core Apache 2.0 Protocol definitions, domain models, redaction engine, HMAC envelope, serialization. Knows nothing about Django, Celery, or Redis.
z4j-bare Apache 2.0 Connects to the brain, buffers events to local SQLite, manages lifecycle. Use directly when you have no web framework.
z4j-<framework> Apache 2.0 Reads your framework's settings, auto-registers adapters on app startup, hooks into the framework's lifecycle.
z4j-<engine> Apache 2.0 Captures task events from the engine's signals, middleware, or hooks. Executes commands (retry, cancel, purge) against the engine.
z4j-<scheduler> Apache 2.0 Surfaces periodic tasks on the Schedules page. Handles schedule CRUD where the scheduler supports runtime mutation.
z4j-brain AGPL v3 Stores events in Postgres or SQLite, serves the dashboard, authenticates users, dispatches commands back to agents. One image, many agents.
How an event travels from your app to the dashboard
- 1
Your task runs
Celery or RQ or any engine dispatches a task. The engine adapter (z4j-celery, z4j-rq, ...) hooks into the engine's signal, middleware, or job lifecycle.
- 2
Redaction at capture
Before the event leaves your process, the z4j-core redaction engine scrubs args, kwargs, return values, and exceptions. API keys, tokens, and PII never cross the wire unredacted.
- 3
Buffered to local SQLite
The agent (z4j-bare) appends the event to a local SQLite buffer. If the brain is unreachable, events queue here safely and flush on reconnect. Your app keeps running regardless.
- 4
HMAC-signed over WebSocket
The agent batches events and sends them through a bearer-authenticated, HMAC-signed WebSocket. Replay guard (nonce + monotonic seq + timestamp window) prevents tampering.
- 5
Brain persists + broadcasts
The brain writes the event to Postgres or SQLite, applies a second-layer redaction pass, appends to the audit chain if it was a command, then broadcasts the state change to every connected dashboard via internal pub/sub.
- 6
Dashboard updates in real time
Browsers pick up the update over their own WebSocket. Typical end-to-end latency: agent event to UI under 200ms p50.
Ready to try it?
Install in under 5 minutes. The same features ship in every deployment tier.