Skip to content

Multi-project

A project is the tenancy boundary in z4j. Agents, tasks, events, schedules, memberships - all scoped to a project.

Use one project per:

  • Environment (staging, production).
  • Business unit (marketing-queue, billing-queue).
  • Customer (if you’re running z4j for your customers).
  • First project is created automatically at first-boot setup.
  • Subsequent projects: API POST /api/v1/projects (requires org-level admin).
Terminal window
curl -X POST https://z4j.example.com/api/v1/projects \
-H "Authorization: Bearer $SESSION" \
-H "Content-Type: application/json" \
-d '{"name": "billing-prod"}'

When you mint an agent token, you pick the project. The token is bound - an agent authenticated with token_A can only write to project_A.

A user can belong to many projects with different roles per project:

Userproject: stagingproject: billing-prod
aliceadminadmin
boboperatorviewer
charlieviewernone

See RBAC.

The dashboard’s top-bar shows the active project. Switching reloads the tasks/events views with the new scope.

Audit rows carry project_id. Export is per-project (?project_id=... query).

Hard-delete is destructive and requires project-owner role + a typed confirmation. It cascades:

  • All agents → deleted
  • All tasks + events → deleted (audit log preserved)
  • Memberships → deleted
  • Audit log entries with project_id=Xpreserved (they’re the record of the deletion)

There is no undo.

Not supported in v1. Each project is isolated. If you need cross-project metrics, export audit and events via API and aggregate externally.