Documentation

Deployment

Deploy anywhere

Swifbit is a standard Docker container plus PostgreSQL. It runs on any Linux VM or container platform and is not tied to Google Cloud or any single provider.

What Swifbit needs

  • A container runtime (or Node 20 for bare metal)
  • PostgreSQL 16 with the pgvector extension
  • One writable volume for the data directory
  • Environment variables: DATABASE_URL, SWIFBIT_SECRET, SWIFBIT_ENCRYPTION_KEY
  • An AI provider — local Ollama, any OpenAI-compatible endpoint, or Vertex AI
Google Cloud is fully optional. The only Google-specific feature is the Vertex AI provider, which you can ignore in favor of Ollama or an OpenAI-compatible endpoint. Swifbit is designed to run correctly across stateless hosts and multiple replicas: connector packages are stored in the database and rehydrated on startup, and migrations are safe under concurrency.
The Swifbit repository is private — cloning requires the repository access granted with your license or evaluation. See Access & licensing or contact [email protected].

Any Linux VM

On AWS EC2, DigitalOcean, Hetzner, Azure, or bare metal, use the installer or Docker Compose.

shell
git clone https://github.com/Swifbit/swifbit.git && cd swifbit
cp .env.example .env      # set DATABASE_URL, SWIFBIT_SECRET, SWIFBIT_ENCRYPTION_KEY
docker compose --profile app up -d

Any container platform

Build the image from the included Dockerfile and run it on Cloud Run, ECS, Fly.io, Render, or Kubernetes. Point DATABASE_URL at a managed PostgreSQL with pgvector and mount a volume for SWIFBIT_DATA_DIR.

shell
docker build -t swifbit:1.0.0 .
docker run -p 4000:4000 \
  -e DATABASE_URL=postgres://user:pass@host:5432/swifbit \
  -e SWIFBIT_SECRET=... \
  -e SWIFBIT_ENCRYPTION_KEY=... \
  swifbit:1.0.0

Notes for stateless platforms

  • Connector packages persist in PostgreSQL, so they survive restarts and scale-out.
  • Migrations run under an advisory lock, so concurrent instances start safely.
  • Set production secrets via the platform’s secret manager, not baked into the image.

TLS and reverse proxy

Terminate TLS at your load balancer or reverse proxy (nginx, Caddy, or the platform’s ingress) and forward to port 4000. Swifbit sets security headers and enforces same-origin for state-changing requests in production, and trusts a single proxy hop.