Deployment & security
One process, one database, one instance — a deliberately boring shape with sharp edges you should know about, and a security model where deny-by-default is the default that's actually enforced.
The deployment shape
The web server, the background scheduler and the dev-session subprocesses all live in one process. That is a deliberate choice: there is no queue service, no worker fleet and no cron host to operate — and it is a real constraint: serverless hosting is out, because mail sync, the run queue, the reapers and every sweep stop when the process does.
Why exactly one instance
Access control
Secrets & the audit trail
Mail credentials, AI provider keys and connection secrets are encrypted with TALON_CONTROL_ENCRYPTION_KEY before they touch the database. Every commercially meaningful action lands in the append-only event log through a single writer — the audit trail is a property of the system, not a logging convention.
Backups
Two things hold state: the Postgres database and the dev-session disk. Back up the database like the book of record it is; treat the dev-session checkouts as reproducible (they are git clones) unless you keep long-running session state you care about.
The encryption key is the third thing, and it is not in the backup — see Backups for the nightly dump, the off-box copy and the restore drill that turns all of this from a hypothesis into a backup.