Skip to Content
DocsProductionOverview

Production hardening

Everything here is opt-in: the framework’s defaults already work for single-tenant scripts and demos. The settings below are what you flip on when you’re putting the agent in front of real users on real infrastructure.

The whole section is organised around a single theme. Multi-tenancy without footguns. One shared Agent (and one Memory, one Budget, one AuditLog) backing N users requires more than just passing user_id= everywhere; it requires bounded state, per-user caps, scoped permissions, observable extraction, and pluggable secret resolution.

What you turn on, listed

ConcernOpt-in
Per-user quotaBudgetConfig(per_user_max_*)
Tenant-specific permissionsPerUserPermissions(policies=, default=)
Human-in-the-loop for destructive toolsAgent(approval_handler=...)
Bounded in-process stateDefaults active; tune max_users / user_idle_ttl_seconds
Vault-backed API keysAgent(tuning=Tuning(secrets=VaultSecrets(...)))
Auto-extract metricsAgent(telemetry=OTelTelemetry(...))
Per-user auditFileAuditLog(...) (attribution is automatic)
Load-test isolationbench/multi_tenant.py

Pair this with the production checklist for the broader operational concerns (durable runtime, persistent memory, sandbox, etc.).

Last updated on