Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.usetitan.app/llms.txt

Use this file to discover all available pages before exploring further.

The self-hosted edition of Titan gives you the same WhatsApp Business API capabilities as the managed SaaS platform, but deployed entirely on infrastructure you own and operate. Your data stays in your environment, you control when updates happen, and you choose the deployment model that fits your team.

How self-hosting differs from SaaS

SaaSSelf-hosted
TenancyMulti-tenantSingle-tenant — your data only
AuthenticationJWT + API keysMaster key + API keys
Admin APINot availableFull admin endpoints
LicensingSubscriptionOffline binary license
UpdatesAutomaticManual — you control the cadence
InfrastructureTitan-managed cloudYour servers or cloud account

License key

Self-hosting requires a license key. Contact Titan to obtain one before you deploy. Your license is an offline binary file signed with Ed25519 and encrypted with AES-256-GCM. It encodes:
  • Session limit — the maximum number of concurrent WhatsApp sessions your instance may run
  • Expiry date — after expiry, a configurable grace period keeps the instance running while you renew
  • Platform restriction — optionally locked to AWS, GCP, Azure, Docker, Kubernetes, or unrestricted
  • AWS account ID binding — optionally tied to a specific AWS account
The API validates your license at startup and then rechecks hourly. There is no phone-home: all checks happen locally against the signed claims embedded in the license file. Set the license by passing the key material in the LICENSE_KEY environment variable.

Authentication model

The self-hosted edition uses a two-layer authentication model:
  • API keys (titan_ prefix) — used for all standard API requests. You create and manage these through the Admin API. Keys are HMAC-SHA256 signed binary tokens that authenticate in zero database lookups.
  • Master key — a static bearer token you configure via the MASTER_KEY environment variable. It grants access to the Admin API and should never be exposed publicly.

Deployment options

Docker Compose

Deploy Titan on a single server or local development machine using Docker Compose. The fastest way to get a self-hosted instance running.

Kubernetes

Deploy with the official Helm chart on any Kubernetes cluster. Includes autoscaling, pod disruption budgets, and per-environment overlays.

AWS CloudFormation

One-click stack that provisions EKS, RDS, ElastiCache, and Amazon MQ automatically. Production-ready in approximately 15 minutes.

Terraform

Infrastructure-as-code modules for AWS (ECS, ECR, Amazon MQ) and Oracle Cloud (OKE, VCN, OCIR).

Service architecture

Every deployment — regardless of method — runs these three services:
ServiceRole
API serverHandles all HTTP requests, authentication, and webhook delivery. Fully stateless — scale horizontally without session affinity.
RunnerManages WhatsApp sessions. Monitors session health and automatically reassigns sessions if a runner pod fails.
Media workerDownloads and decrypts WhatsApp media, uploads to your S3-compatible storage bucket.
Each service is stateless and scales independently. A message broker handles async command routing between the API and the runner. A relational database stores session and media metadata. A cache layer handles rate limiting and session state coordination.

Docker Compose deployment

Step-by-step setup guide for Docker Compose.

Kubernetes deployment

Helm chart installation and cluster configuration.

Admin API

Manage API keys and instance settings with the master key.