Self-Host Rivaro
Run Rivaro on your own infrastructure when you need full data residency, custom networking, or to keep request bodies inside your VPC. Self-hosting gives you the same proxy, detection pipeline, policy engine, and signed-receipt ledger as Rivaro Cloud — you just own the deployment.
For evaluation, Run Rivaro Locally on your laptop in two minutes, or Use Hosted Rivaro for a managed dashboard. Self-hosting is for production deployments that must run inside your own cloud.
Two deployment shapes are supported:
- Docker Compose — the end-to-end production path (proxy, dashboard, MySQL, RabbitMQ on one VM, behind a
rivaroCLI) - Helm chart — backend-only, for customers who want to run the governance engine on Kubernetes alongside their own MySQL and RabbitMQ
For multi-node Kubernetes deployments, reach out at sales@rivaro.com and we'll scope it with you.
What you get
- The full Rivaro stack (proxy, detection workers, dashboard, MySQL, RabbitMQ) running in Docker on a Linux VM you own
- A
rivaroCLI for install / upgrade / SSL / backup / logs - Pre-built images pulled from
ghcr.io/rivaro-ai, version-pinnable viaRIVARO_VERSION - WorkOS SSO for dashboard authentication
- Let's Encrypt automation for HTTPS
What you'll need
- A Linux VM — 2 CPU, 4 GB RAM minimum (8 GB recommended), 50 GB disk, Docker 20+ and Docker Compose v2+
- A domain name pointed at the VM (e.g.
compliance.yourcompany.com) - A WorkOS account for SSO (workos.com)
- AI provider credentials for at least one of: AWS Bedrock, OpenAI, Anthropic, or Azure OpenAI
- A Rivaro license key — contact sales@rivaro.com
Architecture
┌──────────────┐
Your Agents ─┤ nginx ├─▶ Rivaro Proxy ─▶ Detection ─▶ Policy ─▶ Provider
│ (TLS, Let's │ │
│ Encrypt) │ ▼
└──────────────┘ Signed Receipt
Ledger
│
▼
MySQL
The Compose stack runs the backend, frontend, MySQL, RabbitMQ, and an nginx fronting the whole thing on ports 80/443. All services live on a single Docker network on a single host.
Quick start (Docker Compose)
The full runbook lives in deployment/README.md in the repo. The short version:
# 1. Install the CLI and deployment files
# Download scripts/get-rivaro.sh from the repo, review it, then run:
bash get-rivaro.sh
# 2. Configure
rivaro config # opens /opt/rivaro/.env in your editor
# 3. Install
rivaro install
# 4. Get a Let's Encrypt cert (after DNS is pointing at the box)
rivaro ssl
Required .env values: DOMAIN_NAME, MYSQL_ROOT_PASSWORD, MYSQL_PASSWORD, WORKOS_API_KEY, WORKOS_CLIENT_ID, SECRETS_MASTER_KEY, JWT_SECRET, RABBITMQ_PASSWORD, SSL_EMAIL, plus credentials for one AI provider.
CLI reference
| Command | Description |
|---|---|
rivaro install | Run the full installation |
rivaro status | Show service status |
rivaro logs [service] | Stream logs (all services, or one like backend) |
rivaro start / stop / restart | Lifecycle control |
rivaro upgrade | Pull latest images and restart |
rivaro ssl | Set up Let's Encrypt |
rivaro backup [file] | Back up the database to a SQL file |
rivaro config | Open .env in your editor |
rivaro version | Show CLI and image versions |
Version pinning
By default the stack runs latest. Pin a specific build by adding to .env:
RIVARO_VERSION=1.0.0
Run rivaro upgrade after changing the value.
Production checklist
- Secrets — keep
.envoutside source control; consider mounting secrets from your platform's secret manager - Database backups — schedule
rivaro backup(or a managed snapshot if you swap in an external MySQL) - TLS —
rivaro sslhandles Let's Encrypt; for internal-only deployments, terminate TLS at your load balancer and skip the bundled cert flow - Network egress — the proxy needs outbound HTTPS to the model providers you govern and to
api.workos.com - Monitoring —
rivaro logsis fine for spot checks; for production wiredocker compose logsinto your log aggregator
Kubernetes (Helm chart, early access)
A Helm chart for the governance engine backend lives in the repo at helm/rivaro-governance/. Get in touch before using it in production so we can review your topology with you.
What the chart deploys
- The Rivaro governance engine (
ghcr.io/rivaro/governance-engine) - Kubernetes
Deployment,Service, optionalIngress,HPA,PodDisruptionBudget,ServiceMonitor, andPrometheusRule - A bundled Grafana dashboard JSON (
dashboards/governance-overview.json)
What the chart does not deploy
- The dashboard frontend
- MySQL — bring your own MySQL 8.0+ (e.g. RDS, Aurora, Cloud SQL, in-cluster operator)
- RabbitMQ — bring your own AMQP-compatible broker
- TLS — terminate at your ingress controller / LB
Install (from the repo today; no published Helm repo yet)
git clone https://github.com/rivaro-ai/ai-compliance
cd ai-compliance/helm/rivaro-governance
# Customize: database.host, rabbitmq.host, auth.workos.*, providers.*, ingress.*
helm install rivaro . -f my-values.yaml -n rivaro --create-namespace
Required values: database.host + credentials, rabbitmq.host + credentials, auth.jwt.secret, secrets.masterKey, WorkOS keys, and at least one AI provider. See values.yaml for the full set of overrides.
Tunables worth knowing about
replicaCount(default2) andautoscaling.enabledfor HAgovernance.failMode: closed(default) vsopen— block vs pass-through on failuregovernance.gateway.*— rate limits and quarantine/terminate thresholdsserviceMonitor.enabledandprometheusRule.enabledfor Prometheus Operator users
Next steps
- Configuration Guide — Configure detectors, policies, and integrations once the stack is up
- Security & Trust — Threat model, hardening guide, and compliance posture
- How Rivaro Works — Architecture deep-dive