From d1ef9333a3c1bc5cfc7062e4bee3ccbffd9bfe73 Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Tue, 14 Jul 2026 12:41:18 -0600 Subject: [PATCH] feat: add Sim Studio template Co-Authored-By: Claude Fable 5 --- blueprints/sim/docker-compose.yml | 76 +++++++++++++++++++++++++++++++ blueprints/sim/meta.json | 17 +++++++ blueprints/sim/sim.svg | 1 + blueprints/sim/template.toml | 28 ++++++++++++ 4 files changed, 122 insertions(+) create mode 100644 blueprints/sim/docker-compose.yml create mode 100644 blueprints/sim/meta.json create mode 100644 blueprints/sim/sim.svg create mode 100644 blueprints/sim/template.toml diff --git a/blueprints/sim/docker-compose.yml b/blueprints/sim/docker-compose.yml new file mode 100644 index 00000000..cc920b18 --- /dev/null +++ b/blueprints/sim/docker-compose.yml @@ -0,0 +1,76 @@ +services: + simstudio: + image: ghcr.io/simstudioai/simstudio:latest + restart: unless-stopped + environment: + - NODE_ENV=production + - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@db:5432/simstudio + - BETTER_AUTH_URL=${SIM_APP_URL} + - NEXT_PUBLIC_APP_URL=${SIM_APP_URL} + - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET} + - ENCRYPTION_KEY=${ENCRYPTION_KEY} + - API_ENCRYPTION_KEY=${API_ENCRYPTION_KEY} + - INTERNAL_API_SECRET=${INTERNAL_API_SECRET} + - SOCKET_SERVER_URL=http://realtime:3002 + depends_on: + db: + condition: service_healthy + migrations: + condition: service_completed_successfully + realtime: + condition: service_healthy + healthcheck: + test: ["CMD", "curl", "-fsS", "http://127.0.0.1:3000"] + interval: 30s + timeout: 5s + retries: 5 + start_period: 30s + + realtime: + image: ghcr.io/simstudioai/realtime:latest + restart: unless-stopped + environment: + - NODE_ENV=production + - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@db:5432/simstudio + - NEXT_PUBLIC_APP_URL=${SIM_APP_URL} + - BETTER_AUTH_URL=${SIM_APP_URL} + - BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET} + - INTERNAL_API_SECRET=${INTERNAL_API_SECRET} + depends_on: + db: + condition: service_healthy + healthcheck: + test: ["CMD", "curl", "-fsS", "http://127.0.0.1:3002/health"] + interval: 30s + timeout: 5s + retries: 5 + start_period: 15s + + migrations: + image: ghcr.io/simstudioai/migrations:latest + working_dir: /app/packages/db + environment: + - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@db:5432/simstudio + depends_on: + db: + condition: service_healthy + command: ["bun", "run", "db:migrate"] + restart: "no" + + db: + image: pgvector/pgvector:pg17 + restart: unless-stopped + environment: + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=simstudio + volumes: + - postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres"] + interval: 5s + timeout: 5s + retries: 5 + +volumes: + postgres_data: diff --git a/blueprints/sim/meta.json b/blueprints/sim/meta.json new file mode 100644 index 00000000..1a774468 --- /dev/null +++ b/blueprints/sim/meta.json @@ -0,0 +1,17 @@ +{ + "id": "sim", + "name": "Sim", + "version": "latest", + "description": "Open-source visual workflow builder for building and deploying AI agent workflows.", + "logo": "sim.svg", + "links": { + "github": "https://github.com/simstudioai/sim", + "website": "https://sim.ai", + "docs": "https://docs.sim.ai" + }, + "tags": [ + "ai", + "automation", + "workflow" + ] +} diff --git a/blueprints/sim/sim.svg b/blueprints/sim/sim.svg new file mode 100644 index 00000000..d1b94a8d --- /dev/null +++ b/blueprints/sim/sim.svg @@ -0,0 +1 @@ + diff --git a/blueprints/sim/template.toml b/blueprints/sim/template.toml new file mode 100644 index 00000000..b61ef6a3 --- /dev/null +++ b/blueprints/sim/template.toml @@ -0,0 +1,28 @@ +[variables] +main_domain = "${domain}" +better_auth_secret = "${password:32}" +encryption_key = "${hash:64}" +api_encryption_key = "${hash:64}" +internal_api_secret = "${password:32}" +postgres_password = "${password:32}" + +[config] + +[config.env] +SIM_APP_URL = "http://${main_domain}" +BETTER_AUTH_SECRET = "${better_auth_secret}" +ENCRYPTION_KEY = "${encryption_key}" +API_ENCRYPTION_KEY = "${api_encryption_key}" +INTERNAL_API_SECRET = "${internal_api_secret}" +POSTGRES_PASSWORD = "${postgres_password}" + +[[config.domains]] +serviceName = "simstudio" +port = 3000 +host = "${main_domain}" + +[[config.domains]] +serviceName = "realtime" +port = 3002 +host = "${main_domain}" +path = "/socket.io"