Architecture and data flow
Package Ninja separates governance control from local command execution.
Control plane components
- dashboard web app (workspace operations UI)
- backend functions (auth bridge, policy APIs, billing/event handling)
- firestore data model (orgs, teams, policies, memberships, events, sessions)
Data plane components
- CLI/runtime (
package-ninjacanonical command name) - local runtime process and session manager
- package-manager passthrough (
npm,pnpm,yarn)
Command data flow
- developer runs command in local terminal
- CLI resolves local auth session and active workspace identity
- CLI requests effective policy
- CLI evaluates preflight and produces verdict
- audit event is emitted
- command executes or blocks based on verdict
Security design principles
- do not trust client-provided org/team identifiers
- derive effective org/team from verified auth context server-side
- enforce deny-first semantics for ambiguous policy conflicts
- rotate and revoke tokens aggressively for stolen-device resilience