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