Feature Flags & Environment Gates
Decision matrix for production. Set in .env / deployment secrets.
Enabled for production (default on)
| Flag | Default (production) | Component | Notes |
ENABLE_TRUST_CHAT | true | Gateway + frontend | End-to-end encrypted chat |
VITE_ENABLE_TRUST_CHAT | true | Frontend | Must match gateway |
ENABLE_INTENT_PLANNER | true | Gateway + Python | ONNX + heuristic intent |
ANOOBOT_CONSTITUTION_ENABLED | true | Python | P0–P6 compliance evaluation |
ANOOBOT_PRINCIPLE_ENGINE_ENABLED | true | Python | PII/bias detectors |
ANOOBOT_USE_SQLCIPHER | true | Storage | Recommended for local tier |
ENABLE_AI_GATEWAY | true | Gateway | AI draft/summarize routes |
ENABLE_SWARM_RUNTIME | true | Gateway + agent-pool | Real agent registry (no mocks) |
EXPO_PUBLIC_ENABLE_BIOMETRIC | true | Mobile | Face ID / fingerprint via Expo |
Conditional (enable when infra ready)
| Flag | When to enable | Notes |
ANOOBOT_HSM_ENABLED | PKCS#11 library configured | See hsm.md |
ENABLE_DESKTOP_AUTO_UPDATE | Electron release channel + signing | Uses electron-updater |
ENABLE_MESH_SEND_LIMITS | true in production | Daily mesh send caps (lite=50, paid=500) — see product-plan-email-deliverability.md |
MESH_SEND_LIMIT_LITE | 50 | Free/lite slab daily mesh sends |
MESH_SEND_LIMIT_PAID | 500 | Paid slab daily mesh sends |
MANAGED_PROVISIONER_LIVE | false in production until Y2 soak | Real AWS EKS provisioning — requires MANAGED_BETA_ENABLED=true |
MANAGED_BETA_ENABLED | false in production pre-GA | Enables managed beta crons + live provisioner in staging |
VITE_ENABLE_MANAGED_CLOUD | false until Y2 beta | Managed cloud checkout UI |
DISABLE_MANAGED_LAPSE_CRON | Skip subscription lapse offboard |
MANAGED_LAPSE_CHECK_MS | 300000 | Lapse offboard scan interval |
ENABLE_OUTBOUND_MAIL | false until managed GA | Per-tenant outbound subdomain + webhooks — outbound-mail-ga.md |
OUTBOUND_WEBHOOK_SECRET | — | Postmark/SES webhook auth header |
OUTBOUND_COMPLAINT_SUSPEND_THRESHOLD | 3 | Auto-suspend admin after N complaints / 24h |
ENABLE_BLOCKLIST_MONITOR | true when outbound live | DNS RBL scan on OUTBOUND_SENDING_IP |
DISABLE_BLOCKLIST_CRON | Skip blocklist cron |
BLOCKLIST_CHECK_MS | 900000 | RBL scan interval |
Disabled — future / optional
| Flag | Reason |
ANOOBOT_KYBER_ENABLED | Post-quantum key encapsulation roadmap |
ANOOBOT_KYBER_TLS_ENABLED | Hybrid PQ-TLS not production-ready; ingress handles TLS |
ANOOBOT_WOPI_ENABLED | Collabora integration optional |
ANOOBOT_LEGAL_EXPORT_ENABLED | Legal counsel workflow not required for core GA |
ENABLE_INSIGHT_BROKER | Milvus embeddings experimental |
Operational toggles
| Flag | Purpose |
DISABLE_GATEWAY_CRONS | Skip cron jobs (dev) |
DISABLE_MANAGED_SLA_CRON | Skip SLA checker |
DISABLE_MANAGED_JOB_QUEUE | Inline sync instead of queue |
ANOOBOT_SKIP_DNS_VERIFY | Skip domain DNS verification (dev) |
ANOOBOT_SKIP_EXTERNAL_IMAP | Local relay fallback |
ANOOBOT_ALLOW_LEGACY_TOTP_DECRYPT | Legacy TOTP migration only |
CI production-like profile
ENABLE_AI_GATEWAY=true
ENABLE_SWARM_RUNTIME=true
ENABLE_TRUST_CHAT=true
ENABLE_INTENT_PLANNER=true
ANOOBOT_CONSTITUTION_ENABLED=true
ANOOBOT_PRINCIPLE_ENGINE_ENABLED=true
VITE_ENABLE_TRUST_CHAT=true
Run: pnpm run audit and pnpm test:e2e:gates with the above set.