Shaman is a multi-tenant container job control-plane.
At a high level:
- Users register a job definition (Dockerfile + JSON spec describing inputs/outputs).
- Runs can be created via API/A2A or via email (Postfix forwards MIME + attachments).
- Shaman schedules runs and delegates execution to pluggable executor backends (local Docker, ECS, Cloudflare Containers, etc).
- Authentication is handled by Persona (JWT), and authorization by Permiso (tenant-scoped RBAC).
cp .env.example .env
npm install
./dev.sh startThis starts Persona + Permiso via Docker Compose and runs Shaman services directly via tsx watch.