Infrastructure

Running Bosca locally with Docker Compose, deploying to Kubernetes with the CLI, and understanding the downstream systems.

Local Development (Docker Compose)

The full dependency stack runs via Docker Compose. The root docker-compose.yaml includes server/services/docker-compose.yaml, which defines every backing service.

bash

Services

ServiceImagePortPurpose
PostgreSQLpostgres:18.1-alpine5433Primary database
PostgreSQL (Warehouse)postgres:18.1-alpine5434Analytics warehouse
NATSnats4222Messaging, pub/sub, job queues
Redis-compatibledragonflydb/dragonfly6380Cache, distributed locks
Meilisearchgetmeili/meilisearch:v1.39.07701Full-text search
S3Proxyandrewgaul/s3proxy:3.0.08000S3-compatible local object storage
Trinotrinodb/trino:4798089Distributed SQL / Iceberg analytics
Jaegerjaegertracing/jaeger:2.13.016686Distributed tracing (OTEL)
Text ExtractorText extraction service8083Document text extraction (PDF, DOCX, etc.)

Then start the server and runner:

bash

Downstream Systems

Required

SystemRoleConfig
PostgreSQLPrimary database — all models, permissions, workflow stateDATABASE_URL, DATABASE_USER, DATABASE_PASSWORD
Redis-compatibleCache, distributed locks, job queues (when configured)REDIS_HOST, REDIS_PORT
NATSMessaging, pub/sub, job queues, distributed locks, cache (when configured)NATS_HOST, NATS_TOKEN
S3 / GCSObject storage for content files, Git pack files, LFS objectsSTORAGE_TYPE, STORAGE_BUCKET, STORAGE_ENDPOINT, STORAGE_ACCESS_KEY_ID, STORAGE_ACCESS_KEY_SECRET
MeilisearchFull-text search for content and codeMEILISEARCH_URL, MEILISEARCH_API_KEY

Optional / Analytics

SystemRole
TrinoDistributed SQL for analytics queries over Iceberg/warehouse data
JaegerDistributed tracing via OpenTelemetry (OTLP on 4317/4318)
Text ExtractorExtracts text from PDFs, DOCX, and other document formats

Integrations

SystemRole
MuxVideo upload, transcoding, and streaming
HubSpotCRM contact sync
SendGridTransactional email
CrowdinLocalization / translation management
Google OAuth2 / TTS / GenAIAuthentication, text-to-speech, AI features
OpenAI / AnthropicAI model providers for chat, agents, and tools
PostHogProduct analytics and experimentation

Configurable Backends

Several infrastructure services are swappable at startup via environment variables:

ConcernEnv VarOptions
CacheCACHE_TYPEredis (default), nats
Pub/SubPUBSUB_TYPEnats (default), redis
Job QueueJOB_QUEUE_FACTORYredis (default), nats
Distributed LocksDISTRIBUTED_LOCK_TYPEnats (default), redis
Object StorageSTORAGE_TYPEs3 (default), gcs

Kubernetes Deployment

Bosca deploys to Kubernetes via the official Helm charts. See Helm for the chart catalog, install and upgrade flows, and values reference.

Key Environment Variables

Configuration is loaded from application.yaml with $VAR:default substitution. The names below are read directly by the server and runner:

Essential variables