Version and change management
- Pin deployments to a specific image tag or source revision instead of relying on an unbounded latest version.
- Read the changelog and release notes before updating.
- Back up the database before migrations.
- Test updates in a staging environment that uses the same database and job-backend topology as production.
- Keep the previous image or revision available for rollback.
Database backups
Back up PostgreSQL on a schedule appropriate for your recovery-point objective. Include:- Automated database snapshots or
pg_dumpbackups - Encryption at rest and in transit
- A retention policy with more than one restore point
- Copies stored outside the application host
- Regular restore tests into an isolated database
Secrets
Store production secrets in a secret manager or protected deployment environment. Restrict access to database credentials, OAuth client secrets, encryption keys, AI-provider keys, webhook secrets, andCRON_SECRET.
Before rotating encryption material, verify whether existing encrypted mailbox credentials depend on it. Replacing encryption secrets without a migration can make stored credentials unreadable and force account reconnection.
Monitoring
Monitor at least:- Application and worker availability
/api/healthaccording to your configured health-check policy- PostgreSQL and Redis connectivity
- Queue depth and failed jobs
- Scheduled-task execution
- OAuth or webhook failures from Google and Microsoft
- Transactional email delivery
- AI-provider errors, latency, and spend
- Disk, memory, CPU, and database capacity
Scheduled tasks and workers
The web process alone does not run every background workflow. Ensure the deployment runs the scheduler described in Docker/VPS Deployment and any selected queue worker. After deployment, verify each enabled job at least once: watch renewal, scheduled actions, automation jobs, digests, meeting briefs, follow-up reminders, Meeting Recorder scheduling, reasoning retention, and unused AI draft cleanup when configured.Updating
- Take and verify a fresh database backup.
- Record the currently deployed image or commit.
- Pull the new image or source revision.
- Run the documented migration/deployment process.
- Check health, logs, mailbox processing, and scheduled jobs.
- Keep the previous version available until the observation window passes.
Recovery
Maintain a written recovery procedure covering:- Recreating the application and worker infrastructure
- Restoring PostgreSQL to a known point
- Restoring or rebuilding Redis-backed transient state
- Reapplying secrets and OAuth configuration
- Reconnecting provider webhooks and watches
- Validating email processing without sending unintended messages