Self-Hosting
Deploy Sim on your own infrastructure with Docker or Kubernetes.
Requirements
| Resource | Small | Standard | Production |
|---|---|---|---|
| CPU | 2 cores | 4 cores | 8+ cores |
| RAM | 12 GB | 16 GB | 32+ GB |
| Storage | 20 GB SSD | 50 GB SSD | 100+ GB SSD |
| Docker | 20.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 — both the Helm chart and the compose file request 4 Gi for the app and cap it at 8 Gi.
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)
CRON_SECRET=$(openssl rand -hex 32)
EOF
docker compose -f docker-compose.prod.yml up -dThe .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
Docker
Deploy with Docker Compose on any server
Kubernetes
Deploy with Helm on Kubernetes clusters
Cloud Platforms
Railway, DigitalOcean, AWS, Azure, GCP guides
Which one to pick
Both deploy the same feature set. 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.
| Capability | Docker Compose | Kubernetes (Helm) |
|---|---|---|
| App, realtime, migrations, Postgres, Redis | Yes | Yes |
| Scheduled workflows and polling triggers | Yes — cron service | Yes — 18 CronJobs |
| Horizontal scaling / HA | No (single node) | Yes (replicaCount, HPA, PDB) |
| Managed secrets (Vault, ESO, cloud KMS) | Manual .env | Yes |
| Network policy, Pod Security Standards | Host-level only | Yes |
| PII redaction, OpenTelemetry collector | Not bundled | Optional 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
Integrations & OAuth
Required before any integration works — start here
Object Storage
Required before storing anything you care about
Verify Your Install
Ten-minute smoke test across every subsystem
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=trueYour 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:
| Feature | Requires | Notes |
|---|---|---|
| Knowledge bases | An OpenAI, Azure OpenAI, or Gemini API key | Embeddings are generated by a hosted provider, selected with KB_EMBEDDING_MODEL (text-embedding-3-small by default). There is no local embedding backend — knowledge bases are unavailable without one of these keys. |
| Agent blocks | An API key for at least one model provider | Or a self-hosted OpenAI-compatible endpoint: Ollama, vLLM, or LiteLLM. |
| Chat module | COPILOT_API_KEY from sim.ai | Set NEXT_PUBLIC_CHAT_DISABLED=true to hide the module instead. |
| Integrations | Your own OAuth app per service | See Integrations & OAuth. |
| Remote Function / Pi execution | Optional E2B or Daytona key | Without one, JavaScript Function code that has no import or require still runs in the in-process isolated VM. Python, Shell, JavaScript with external imports, custom Function Sandboxes, and Pi require a configured remote provider. See Security. |