PostgreSQL schemas
Create and migrate each schema explicitly:search_path. A schema-specific hashed LISTEN channel prevents one installation’s
enqueue from waking another.
Run every migration operation with --schema, including validate, adopt, and down.
MySQL databases
MySQL’s boundary is the selected database. Give each installation a separate database:DATABASE(), validation filters that database, and all runtime
SQL resolves inside the connection’s selected database. Headgate deliberately has no
table-prefix mode that could leave duties or migration history ambiguous.
Redis prefixes
Redis uses one explicit key prefix as the complete boundary:FLUSHDB for cleanup; test helpers scan
and remove only keys owned by their generated prefix.
Security boundary
Separate schemas, databases, or prefixes prevent accidental queue-state collision. They are not a hostile-tenant security boundary when the same credential can read all installations. Use distinct least-privilege credentials when cross-installation reads must remain impossible after an application compromise.Schema migrations
Apply and validate each installation through the same backend boundary.