Skip to main content

Self-hosted Setup

For teams with strict data-residency or air-gapped requirements.

What you'll deploy

ComponentRoleNotes
Vibecontrols backendThe API your agents, CLI, and web app talk toContainer image, 3+ replicas behind a load balancer
DatabaseDurable storage for vibes, sessions, agents, notes, prompts, webhooksSupported engines and versions are pinned in the release package; replication recommended
Cache / event serviceCaching and the internal event streamVersion pinned in the release package
Vibecontrols web appThe browser UIStatic build → your object storage + CDN
Plannotator portal (optional)Plan review UIOnly if you use the plan plugin
frps (optional)Tunnel serverOnly 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

  1. Provision the database and cache services
  2. Apply backend migrations (single command on the backend container; see your release notes for the exact invocation)
  3. Pull the backend image from the licence registry and push it to your own registry
  4. Deploy the backend (3+ replicas) behind your load balancer
  5. Deploy the web app — upload the prebuilt static bundle to your object storage / static host
  6. Point the web app, CLI, and agents at your backend URL
  7. Configure required Configuration entries (see below)
  8. Smoke-test with a fresh install of the agent

Required Configuration entries

After backend is up, set these via vibecontrols config set --scope GLOBAL:

KeyExample
platform.web.publicUrlhttps://app.your-vibecontrols.example.com
platform.graphql.publicUrlhttps://api.your-vibecontrols.example.com/graphql
tunnel.providercloudflare or vibetunnels
tunnel.vibetunnels.frpsUrl(if using VibeTunnels)
tunnel.vibetunnels.frpsAuth(if using VibeTunnels — mark isSecret)
agent.updates.installScriptUrlOptional — 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.

Next steps