This page states only what has been directly verified against Halcyra's actual production configuration — nothing here is inferred, assumed, or a general statement about typical practice. It's intended to support a procurement or security review alongside the rest of the Trust Centre.
1. Hosting & infrastructure
- Application hosting: managed cloud infrastructure.
- Hosting region: Germany.
- Web service: production-configured managed service.
2. Database & backup/recovery
- Database engine: PostgreSQL.
- Database plan: Basic-256mb.
- Point-in-Time Recovery: Enabled, with a 3-day recovery window — the database can be restored to any point within the preceding 3 days.
3. Production security configuration
NODE_ENV=production is set in the live production environment.
- Session cookies are issued according to
secure: process.env.NODE_ENV === "production" in the application code. With NODE_ENV=production set, production session cookies receive the Secure attribute, meaning browsers will only ever transmit them over an HTTPS connection.
4. Security-related operational controls
Verified directly in the application's source code:
- Password storage: passwords are hashed with bcrypt before storage; plain-text passwords are never stored.
- Session expiry: authenticated sessions use a signed token with a sliding inactivity window — 7 days for firm accounts, 24 hours for platform-owner accounts — refreshed on genuine activity and expiring otherwise.
- Login protection: login and password-reset requests are rate-limited (5 attempts per email address, 20 per IP address, within a 15-minute window).
- Database queries: all database queries use parameterised statements; no query is built by concatenating user input into SQL.
- Tenant data isolation: every query touching a firm's data is scoped to that firm's own identifier, derived from the authenticated session rather than from any user-supplied input.
- Inbound messaging requests: inbound message webhooks and message-status callbacks are authenticated before being processed.
- Messaging number assignment: a database-level uniqueness constraint prevents the same service number from being assigned to more than one firm.
- HTTP security headers: every response includes a Content-Security-Policy, Strict-Transport-Security (in production), X-Content-Type-Options, X-Frame-Options, and Referrer-Policy header — verified directly against live HTTP responses, not inferred from configuration alone.
Related documents
- Security Overview — access control, encryption, and where the AI's role starts and stops.
- Data Retention — how long tenant, booking, and message data is kept, and how it's removed.
- Subprocessor list — the service categories involved in processing tenant data; detailed supplier information is held privately.