Skip to main content

Self-Hosted Deployment

Deploy Align on your own infrastructure for complete data sovereignty.

Why Self-Host?

  • Data Sovereignty - All data stays in your infrastructure
  • Air-Gapped Environments - Works without internet access
  • Custom LLMs - Use your own models (Ollama, vLLM, etc.)
  • Compliance - Meet regulatory requirements
  • Integration - Deep integration with internal systems

Architecture

┌──────────────────────────────────────────────────────────────────────┐
│ Your Kubernetes Cluster │
├──────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────────────┐ │
│ │ UI │ │ Gateway │ │ Brain │ │ Connectors │ │
│ │ SvelteKit│ │ Fastify │ │ FastAPI │ │ Slack/Teams/Jira/… │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └─────────┬──────────┘ │
│ │ │ │ │ │
│ └─────────────┴─────────────┴───────────────────┘ │
│ │ │ │
│ ┌───────┴───────┐ ┌───────┴───────┐ │
│ │ PostgreSQL │ │ Redis (opt.) │ │
│ │ (Managed/ │ │ Job state & │ │
│ │ Self-hosted)│ │ pub/sub │ │
│ └───────────────┘ └───────────────┘ │
│ │
└──────────────────────────────────────────────────────────────────────┘

Components

ComponentPurposePortRequired?
UISvelteKit frontend3000Yes
GatewayAPI server (Fastify)8080Yes
BrainAI/ML service (FastAPI)8090Yes
ConnectorsIntegration services808xYes
PostgreSQLDatabase5432Yes
RedisJob state & real-time events6379Yes (K8s)

Prerequisites

  • Kubernetes 1.25+
  • Helm 3.10+
  • PostgreSQL 15+ (self-managed or managed like RDS)
  • 4GB+ RAM available for Align pods
  • Redis 6+ for Kubernetes deployments (any Redis-compatible service: ElastiCache, Memorystore, Dragonfly, KeyDB). Required for Discover scan progress tracking.
  • (Optional) GPU for local LLM inference

Quick Start

# Add the Align Helm repository
helm repo add align https://charts.align.tech
helm repo update

# Install with default values
helm install align align/align \
--namespace align \
--create-namespace \
--set database.secretName=your-db-secret

# Check status
kubectl get pods -n align

See Installation for detailed instructions.

Deployment Options

Minimal (Development/POC)

  • Single replica per service
  • Local PostgreSQL
  • No HA, minimal resources
helm install align align/align -f values-minimal.yaml

Production

  • Multiple replicas with HPA
  • External PostgreSQL (RDS)
  • TLS, proper ingress
  • Secrets management
helm install align align/align -f values-production.yaml

Scaling Considerations

DeploymentGateway PodsRedis Required?Notes
Kubernetes1+YesRequired for Discover scan progress
Local dev1NoUses in-memory fallbacks

Why Redis?

The Discover feature uses async job processing for bulk operations. Redis provides:

  • Job state storage - Track progress of long-running scans and approvals
  • Pub/Sub - Real-time progress streaming (SSE) across pods

In Kubernetes deployments, the gateway requires REDIS_URL and will fail to start without it. For local development (non-Kubernetes), the gateway automatically falls back to in-memory storage.

For Kubernetes deployments: Configure Redis (any Redis-compatible service works):

gateway:
replicaCount: 2
redis:
url: "redis://your-redis:6379"

Redis options by cloud:

CloudManaged ServiceNotes
AWSElastiCache RedisUse IRSA for auth
GCPMemorystore for RedisUse Workload Identity
AzureAzure Cache for RedisUse Managed Identity
Self-hostedRedis, Dragonfly, KeyDBAny Redis-compatible server

Optional: Message queues for high-volume deployments

For very high-volume deployments (1000s of decisions/day), you can optionally add a message queue for distributed job processing. The gateway supports pluggable queue backends:

ProviderBest ForConfig
memory (default)Single-pod, dev, low-volumeNo config needed
sqsAWS deploymentsRequires SQS queue URLs
# AWS SQS (for AWS deployments)
gateway:
sqs:
importJobQueueUrl: "https://sqs.region.amazonaws.com/account/import-queue"
bulkApprovalQueueUrl: "https://sqs.region.amazonaws.com/account/approval-queue"
bulkDeleteQueueUrl: "https://sqs.region.amazonaws.com/account/delete-queue"

Without queue URLs configured, the gateway uses an in-memory queue (which works fine for most deployments and single-pod setups).

What's Included

The Helm chart deploys:

  • All Align services (UI, Gateway, Brain)
  • Connectors (Slack, Teams, Jira, GitHub)
  • Database migrations (as pre-install hook)
  • Ingress configuration
  • HPA and PDB for availability
  • Service accounts and RBAC

What You Provide

  • Kubernetes cluster
  • PostgreSQL database
  • Secrets (OAuth credentials, API keys)
  • Ingress controller (Traefik, nginx, etc.)
  • TLS certificates (cert-manager recommended)
  • (Optional) Custom LLM server

Documentation

GuideDescription
InstallationStep-by-step install guide
ConfigurationHelm values reference
SecretsSecrets management options
OAuth AppsRegister your own OAuth apps
LLM SetupConfigure custom LLM providers
UpgradesUpgrade and migration guide

Support

For self-hosted support: