Self-Hosting

Deploy Sim on your own infrastructure with Docker or Kubernetes.

Requirements

ResourceSmallStandardProduction
CPU2 cores4 cores8+ cores
RAM12 GB16 GB32+ GB
Storage20 GB SSD50 GB SSD100+ GB SSD
Docker20.10+20.10+Latest

Small: Development, testing, single user (1-5 users) Standard: Teams (5-50 users), moderate workloads Production: Large teams (50+ users), high availability, heavy workflow execution

Resource requirements are driven by workflow execution (isolated-vm sandboxing), file processing (in-memory document parsing), and vector operations (pgvector). Memory is typically the constraining factor rather than CPU. The Helm chart requests 4 Gi for the app and caps it at 8 Gi; docker-compose.prod.yml sets only an 8 GB limit, with no reservation.

Quick Start

git clone https://github.com/simstudioai/sim.git && cd sim

cat > .env << EOF
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
ENCRYPTION_KEY=$(openssl rand -hex 32)
INTERNAL_API_SECRET=$(openssl rand -hex 32)
API_ENCRYPTION_KEY=$(openssl rand -hex 32)
CRON_SECRET=$(openssl rand -hex 32)
EOF

docker compose -f docker-compose.prod.yml up -d

Open http://localhost:3000

The .env step is not optional — the compose file refuses to start without the first three rather than booting with empty values. CRON_SECRET is what the scheduler uses; without it the cron service exits with instructions and everything else still runs. See Docker for the full production setup.

Deployment Options

Which one to pick

Docker Compose and Kubernetes run the same application; what differs is the operational envelope around it, which the table below sets out. Cloud Platforms covers provider-specific notes for either. Docker Compose is the fastest way to evaluate Sim and is fine for a single-node team install; Kubernetes is the path for high availability and managed secrets.

CapabilityDocker ComposeKubernetes (Helm)
App, realtime, migrations, Postgres, RedisYesYes
Scheduled workflows and polling triggersYes — cron serviceYes — CronJobs
Horizontal scaling / HANo (single node)Yes (replicaCount, HPA, PDB)
Managed secrets (Vault, ESO, cloud KMS)Manual .envYes
Network policy, Pod Security StandardsHost-level onlyYes
PII redaction, OpenTelemetry collectorNot bundledOptional components

The remaining differences are inherent to the platform — Compose has no analogue of a HorizontalPodAutoscaler or a PodDisruptionBudget. Application behavior is the same on both.

Where to go next

The sidebar covers the rest: architecture, email, Redis, authentication, background jobs, networking, security, scaling, observability, and upgrades.

Enterprise Features

Organizations, SSO, permission groups, audit logs, whitelabeling, session policies, data retention, and data drains all run on a self-hosted deployment with no billing or subscription. Turn the set on with:

ENTERPRISE_ENABLED=true
NEXT_PUBLIC_ENTERPRISE_ENABLED=true

Your deployment also needs an organization model for most of them to apply. The self-hosted enterprise guide covers both patterns, the per-feature flags, and troubleshooting.

External dependencies to plan for

Sim is self-contained for the core editor and execution engine. A few features reach outside the deployment:

FeatureRequiresNotes
Knowledge basesAn OpenAI, Azure OpenAI, or Gemini API key, or an Ollama serverEmbeddings are generated by the model named in KB_EMBEDDING_MODEL (text-embedding-3-small by default). Set it to ollama/<model> with OLLAMA_URL to embed locally instead. EMBEDDING_OUTPUT_DIMS sets the vector width.
Agent blocksAn API key for at least one model providerOr a self-hosted OpenAI-compatible endpoint: Ollama, vLLM, LM Studio, or LiteLLM.
Chat moduleCOPILOT_API_KEY from sim.aiSet NEXT_PUBLIC_CHAT_DISABLED=true to hide the module instead.
OAuth integrationsYour own OAuth app per serviceSee Integrations & OAuth.
Remote Function / Pi executionOptional E2B or Daytona key, plus a Function base imagePlain JavaScript — no import or require — runs in the in-process isolated VM with nothing configured. Everything else needs both a provider key and an immutable Function base image: Python, Shell, imported JavaScript, custom Function Sandboxes, and any block that selects a sandbox or references a file path. Pi uses a separate image again, pinned with E2B_PI_TEMPLATE_ID or DAYTONA_PI_SNAPSHOT_ID. See Sandboxes.