Architecture
Security
How CRHQ protects your data — encryption, authentication, access control, and server isolation.
CRHQ is designed with security at every layer — from server isolation to credential encryption.
Server Isolation
Each CRHQ instance runs on a dedicated VPS. There's no shared infrastructure between customers:
- Separate server — Your instance runs on its own machine
- Separate database — Your data is in its own PostgreSQL database
- Separate file system — Files are isolated to your server
- Separate network — Each server has its own IP and SSL certificate
Authentication
User Authentication
- Session-based — Secure session cookies with httpOnly flag
- Password hashing — bcrypt with salt
- Two-factor authentication — TOTP-based 2FA with backup codes
- Session expiration — Configurable session timeout
API Authentication
- API keys — For agent-to-service communication
- Hub keys — For CRHQ Hub sync operations
- Session tokens — For authenticated API requests
Credential Encryption
Stored credentials (API keys, tokens, passwords) are encrypted using:
- Algorithm — AES-256-GCM
- Per-value encryption — Each credential is encrypted independently
- Server-side only — Decryption only happens on the server, never in the browser
- Audit logging — Every credential access is logged
Agent Isolation
Agents run as an isolated agent user on the server:
- Separate Linux user with limited permissions
- Process isolation from the main application
- No access to system-level configurations
- File system access scoped to the working directory
Network Security
- SSL/TLS — All traffic encrypted with HTTPS
- Nginx reverse proxy — No direct access to application ports
- Security headers — HSTS, X-Frame-Options, X-Content-Type-Options
- Firewall — Only necessary ports exposed (80, 443, SSH)
Data Protection
- No data sharing — Your data stays on your server
- No training data — Conversations are not used to train models
- Backup system — Regular automated backups
- Version history — All content changes are versioned and recoverable