Deployment overview
Self-hosted on your infrastructure. A Helm chart for OpenShift, a Compose stack for a single host, CPU servers, PostgreSQL and Redis.
What you stand up
| Component | You provide | Salus provides |
|---|---|---|
| Cluster | OpenShift 4.x (tested on 4.22), Helm 3.8 or newer, the CloudNativePG operator | The salus-app Helm chart |
| Database | PostgreSQL 16 through CloudNativePG, or an external PostgreSQL 16 | Schema, migrations, audit retention |
| Cache | Redis 7, deployed by the chart | Rate limiting, detection cache, FPE ledger |
| Images | A pull secret for ghcr.io/salusapp-ai, or a mirror |
Seven service images, models baked in; OCR images optional |
| Keys | Five secrets you generate with openssl rand -hex 32 |
Nothing; keys never leave your cluster |
| TLS | An OpenShift route with edge termination, or your ingress and certificates |
Sizing
Default resource requests in the chart add up to about 6.5 CPU and 9 GiB of memory with the default replica counts, of which the entity model service is the largest at 2 CPU and 2 GiB per replica. The database volume is 50 GiB by default. Throughput guidance is in the order of tens of requests per second per entity-model replica; measure on your own traffic during the pilot.
The architecture is AMD64 only. The ONNX models run on CPU. The optional OCR engine requests one GPU by default and has a CPU variant.
Topology
One public route to the console service, which serves the management console and proxies the API to the gateway. The gateway authenticates and signs every call to the main service. Detection services, PostgreSQL and Redis are cluster-internal. Nothing else is exposed, and the chart creates no route for the main service.
Isolated networks
Mirror the chart and the images into your registry, mirror the CloudNativePG and Redis images alongside them, then install with global.imageRegistry and global.imagePullSecrets pointing at the mirror. No step of the installation or of normal operation reaches the internet.
High availability
The default chart runs one PostgreSQL instance with backups off, two replicas of the entity model and the verifier, and one of everything else. For production, enable the chart’s scheduled backups to object storage, size the database storage class for your retention, and raise replicas on the detection services. Keep the main service at one replica while the LiteLLM guardrail is in use.
A rollout, in three steps
- Install the chart, create the first administrator, a tenant and a key. OpenShift install.
- Validate detection in the console playground on your own samples, then integrate one workflow.
- Operate with the audit store, security events and metrics feeding your existing tooling. Audit and logging.
All example values in this documentation are synthetic.