Self-hosted Setup
For teams with strict data-residency or air-gapped requirements.
What you'll deploy
| Component | Role | Notes |
|---|---|---|
| Vibecontrols backend | The API your agents, CLI, and web app talk to | Container image, 3+ replicas behind a load balancer |
| Database | Durable storage for vibes, sessions, agents, notes, prompts, webhooks | Supported engines and versions are pinned in the release package; replication recommended |
| Cache / event service | Caching and the internal event stream | Version pinned in the release package |
| Vibecontrols web app | The browser UI | Static build → your object storage + CDN |
| Plannotator portal (optional) | Plan review UI | Only if you use the plan plugin |
frps (optional) | Tunnel server | Only if you use VibeTunnels (frp) tunnels |
Prerequisites
- A container runtime or orchestrator you already operate
- The database and cache services listed in the release package
- A TLS-terminating reverse proxy (nginx, Caddy, an ingress controller — your choice)
- Object storage + CDN (or any static host) for the web app
- A self-hosted licence, which includes the container images and the deployment package
High-level steps
- Provision the database and cache services
- Apply backend migrations (single command on the backend container; see your release notes for the exact invocation)
- Pull the backend image from the licence registry and push it to your own registry
- Deploy the backend (3+ replicas) behind your load balancer
- Deploy the web app — upload the prebuilt static bundle to your object storage / static host
- Point the web app, CLI, and agents at your backend URL
- Configure required Configuration entries (see below)
- Smoke-test with a fresh install of the agent
Required Configuration entries
After backend is up, set these via vibecontrols config set --scope GLOBAL:
| Key | Example |
|---|---|
platform.web.publicUrl | https://app.your-vibecontrols.example.com |
platform.graphql.publicUrl | https://api.your-vibecontrols.example.com/graphql |
tunnel.provider | cloudflare or vibetunnels |
tunnel.vibetunnels.frpsUrl | (if using VibeTunnels) |
tunnel.vibetunnels.frpsAuth | (if using VibeTunnels — mark isSecret) |
agent.updates.installScriptUrl | Optional — for self-hosted agent updates |
Detailed runbook
The full deployment runbook — exact component versions, sizing guidance, upgrade and rollback procedure — ships with the self-hosted licence. Contact contact@vibecontrols.com to request it.