Security
Sober by design
Agents that touch the outside world require explicit operator approval. Credentials are encrypted. Tenants are isolated. Outreach is verified-email-only.
Tenant isolation
Every query scopes to networkId and tenantId from JWT claims. Agents cannot read or write across tenant boundaries.
Credentials vault
API keys and OAuth tokens stored with AES-256-GCM encryption at rest. Decrypted only at job runtime inside the agent worker.
JWT scoping
Dashboard sessions carry role, networkId, tenantId, and active product context. Reporting and data endpoints enforce scope on every request.
Approval gates
Risk tier approval is enforced in the runtime — capped and approval-tier agents cannot send, create accounts, or publish without a PENDING ticket cleared by an operator.
Verified email only
No unverified email address ever enters an outreach sequence. Enricher & Verifier runs MillionVerifier (or equivalent) before any draft is queued.
Data handling
Outcome events retained with TTL. Raw logs scoped per tenant. No customer data used to train shared models — each deployment is isolated.