From 06f0440ea82d1f76ddec0d9edc019aa8d1200fc7 Mon Sep 17 00:00:00 2001 From: waleedlatif1 Date: Fri, 8 Aug 2025 10:52:32 -0700 Subject: [PATCH 1/2] improvement(helm): fix duplicate SOCKET_SERVER_URL and add additional envvars to template --- helm/sim/README.md | 15 +- helm/sim/templates/deployment-app.yaml | 4 +- helm/sim/values.schema.json | 196 +++++++++++++++++++++++++ helm/sim/values.yaml | 60 +++++--- 4 files changed, 241 insertions(+), 34 deletions(-) diff --git a/helm/sim/README.md b/helm/sim/README.md index d872a945343..fe75dd23421 100644 --- a/helm/sim/README.md +++ b/helm/sim/README.md @@ -12,20 +12,7 @@ This Helm chart deploys Sim, a lightweight AI agent workflow platform, on Kubern ### Quick Start -1. Add the chart repository (if using a separate repo): -```bash -helm repo add simstudio https://charts.sim.ai -helm repo update -``` - -2. Install the chart: -```bash -helm install sim simstudio/sim -``` - -### Local Installation - -If using the chart from this repository: +Install the chart from this repository: ```bash # From the repository root diff --git a/helm/sim/templates/deployment-app.yaml b/helm/sim/templates/deployment-app.yaml index 7c6c8e6d0cb..4e064a83998 100644 --- a/helm/sim/templates/deployment-app.yaml +++ b/helm/sim/templates/deployment-app.yaml @@ -68,10 +68,10 @@ spec: - name: DATABASE_URL value: {{ include "sim.databaseUrl" . | quote }} - name: SOCKET_SERVER_URL - value: {{ include "sim.socketServerUrl" . | quote }} + value: {{ .Values.app.env.SOCKET_SERVER_URL | default "http://localhost:3002" | quote }} - name: OLLAMA_URL value: {{ include "sim.ollamaUrl" . | quote }} - {{- range $key, $value := .Values.app.env }} + {{- range $key, $value := omit .Values.app.env "DATABASE_URL" "SOCKET_SERVER_URL" "OLLAMA_URL" }} - name: {{ $key }} value: {{ $value | quote }} {{- end }} diff --git a/helm/sim/values.schema.json b/helm/sim/values.schema.json index 9f7ea1ac865..99bfe655d79 100644 --- a/helm/sim/values.schema.json +++ b/helm/sim/values.schema.json @@ -113,6 +113,197 @@ "type": "string", "format": "uri", "description": "Public socket URL" + }, + "NODE_ENV": { + "type": "string", + "enum": ["development", "test", "production"], + "description": "Runtime environment" + }, + "NEXT_TELEMETRY_DISABLED": { + "type": "string", + "description": "Disable Next.js telemetry" + }, + "RESEND_API_KEY": { + "type": "string", + "description": "Resend API key for transactional emails" + }, + "EMAIL_DOMAIN": { + "type": "string", + "description": "Domain for sending emails" + }, + "GOOGLE_CLIENT_ID": { + "type": "string", + "description": "Google OAuth client ID" + }, + "GOOGLE_CLIENT_SECRET": { + "type": "string", + "description": "Google OAuth client secret" + }, + "GITHUB_CLIENT_ID": { + "type": "string", + "description": "GitHub OAuth client ID" + }, + "GITHUB_CLIENT_SECRET": { + "type": "string", + "description": "GitHub OAuth client secret" + }, + "OPENAI_API_KEY": { + "type": "string", + "description": "Primary OpenAI API key" + }, + "OPENAI_API_KEY_1": { + "type": "string", + "description": "Additional OpenAI API key for load balancing" + }, + "OPENAI_API_KEY_2": { + "type": "string", + "description": "Additional OpenAI API key for load balancing" + }, + "OPENAI_API_KEY_3": { + "type": "string", + "description": "Additional OpenAI API key for load balancing" + }, + "MISTRAL_API_KEY": { + "type": "string", + "description": "Mistral AI API key" + }, + "ANTHROPIC_API_KEY_1": { + "type": "string", + "description": "Primary Anthropic Claude API key" + }, + "ANTHROPIC_API_KEY_2": { + "type": "string", + "description": "Additional Anthropic API key for load balancing" + }, + "ANTHROPIC_API_KEY_3": { + "type": "string", + "description": "Additional Anthropic API key for load balancing" + }, + "FREESTYLE_API_KEY": { + "type": "string", + "description": "Freestyle AI API key" + }, + "OLLAMA_URL": { + "type": "string", + "format": "uri", + "description": "Ollama local LLM server URL" + }, + "ELEVENLABS_API_KEY": { + "type": "string", + "description": "ElevenLabs API key for text-to-speech in deployed chat" + }, + "SERPER_API_KEY": { + "type": "string", + "description": "Serper API key for online search" + }, + "RATE_LIMIT_WINDOW_MS": { + "type": "string", + "description": "Rate limit window duration in milliseconds" + }, + "RATE_LIMIT_FREE_SYNC": { + "type": "string", + "description": "Free tier sync API executions per minute" + }, + "RATE_LIMIT_PRO_SYNC": { + "type": "string", + "description": "Pro tier sync API executions per minute" + }, + "RATE_LIMIT_TEAM_SYNC": { + "type": "string", + "description": "Team tier sync API executions per minute" + }, + "RATE_LIMIT_ENTERPRISE_SYNC": { + "type": "string", + "description": "Enterprise tier sync API executions per minute" + }, + "RATE_LIMIT_FREE_ASYNC": { + "type": "string", + "description": "Free tier async API executions per minute" + }, + "RATE_LIMIT_PRO_ASYNC": { + "type": "string", + "description": "Pro tier async API executions per minute" + }, + "RATE_LIMIT_TEAM_ASYNC": { + "type": "string", + "description": "Team tier async API executions per minute" + }, + "RATE_LIMIT_ENTERPRISE_ASYNC": { + "type": "string", + "description": "Enterprise tier async API executions per minute" + }, + "MANUAL_EXECUTION_LIMIT": { + "type": "string", + "description": "Manual execution bypass value" + }, + "NEXT_PUBLIC_BRAND_NAME": { + "type": "string", + "description": "Custom brand name" + }, + "NEXT_PUBLIC_BRAND_LOGO_URL": { + "type": "string", + "description": "Custom logo URL" + }, + "NEXT_PUBLIC_BRAND_FAVICON_URL": { + "type": "string", + "description": "Custom favicon URL" + }, + "NEXT_PUBLIC_BRAND_PRIMARY_COLOR": { + "type": "string", + "description": "Primary brand color (hex)" + }, + "NEXT_PUBLIC_BRAND_SECONDARY_COLOR": { + "type": "string", + "description": "Secondary brand color (hex)" + }, + "NEXT_PUBLIC_BRAND_ACCENT_COLOR": { + "type": "string", + "description": "Accent brand color (hex)" + }, + "NEXT_PUBLIC_CUSTOM_CSS_URL": { + "type": "string", + "description": "Custom stylesheet URL" + }, + "NEXT_PUBLIC_HIDE_BRANDING": { + "type": "string", + "description": "Hide powered by branding" + }, + "NEXT_PUBLIC_CUSTOM_FOOTER_TEXT": { + "type": "string", + "description": "Custom footer text" + }, + "NEXT_PUBLIC_SUPPORT_EMAIL": { + "type": "string", + "format": "email", + "description": "Support email address" + }, + "NEXT_PUBLIC_SUPPORT_URL": { + "type": "string", + "description": "Support page URL" + }, + "NEXT_PUBLIC_DOCUMENTATION_URL": { + "type": "string", + "description": "Documentation URL" + }, + "NEXT_PUBLIC_TERMS_URL": { + "type": "string", + "description": "Terms of service URL" + }, + "NEXT_PUBLIC_PRIVACY_URL": { + "type": "string", + "description": "Privacy policy URL" + }, + "NEXT_PUBLIC_SENTRY_DSN": { + "type": "string", + "description": "Sentry DSN for error tracking" + }, + "ALLOWED_LOGIN_EMAILS": { + "type": "string", + "description": "Comma-separated list of allowed email addresses for login" + }, + "ALLOWED_LOGIN_DOMAINS": { + "type": "string", + "description": "Comma-separated list of allowed email domains for login" } } } @@ -192,6 +383,11 @@ "ALLOWED_ORIGINS": { "type": "string", "description": "CORS allowed origins" + }, + "NODE_ENV": { + "type": "string", + "enum": ["development", "test", "production"], + "description": "Runtime environment" } } } diff --git a/helm/sim/values.yaml b/helm/sim/values.yaml index 201f4f39d48..f75073e8f2f 100644 --- a/helm/sim/values.yaml +++ b/helm/sim/values.yaml @@ -64,13 +64,41 @@ app: BETTER_AUTH_SECRET: "" # REQUIRED - set via --set flag or external secret manager ENCRYPTION_KEY: "" # REQUIRED - set via --set flag or external secret manager - # Optional third-party service integrations (leave empty if not using) - FREESTYLE_API_KEY: "" - GOOGLE_CLIENT_ID: "" - GOOGLE_CLIENT_SECRET: "" - GITHUB_CLIENT_ID: "" - GITHUB_CLIENT_SECRET: "" - RESEND_API_KEY: "" + # Email & Communication + RESEND_API_KEY: "" # Resend API key for transactional emails + EMAIL_DOMAIN: "" # Domain for sending emails + + # OAuth Integration Credentials (leave empty if not using) + GOOGLE_CLIENT_ID: "" # Google OAuth client ID + GOOGLE_CLIENT_SECRET: "" # Google OAuth client secret + GITHUB_CLIENT_ID: "" # GitHub OAuth client ID + GITHUB_CLIENT_SECRET: "" # GitHub OAuth client secret + + # AI Provider API Keys (leave empty if not using) + OPENAI_API_KEY: "" # Primary OpenAI API key + OPENAI_API_KEY_1: "" # Additional OpenAI API key for load balancing + OPENAI_API_KEY_2: "" # Additional OpenAI API key for load balancing + OPENAI_API_KEY_3: "" # Additional OpenAI API key for load balancing + MISTRAL_API_KEY: "" # Mistral AI API key + ANTHROPIC_API_KEY_1: "" # Primary Anthropic Claude API key + ANTHROPIC_API_KEY_2: "" # Additional Anthropic API key for load balancing + ANTHROPIC_API_KEY_3: "" # Additional Anthropic API key for load balancing + FREESTYLE_API_KEY: "" # Freestyle AI API key + OLLAMA_URL: "" # Ollama local LLM server URL + ELEVENLABS_API_KEY: "" # ElevenLabs API key for text-to-speech in deployed chat + SERPER_API_KEY: "" # Serper API key for online search + + # Rate Limiting Configuration (per minute) + RATE_LIMIT_WINDOW_MS: "60000" # Rate limit window duration (1 minute) + RATE_LIMIT_FREE_SYNC: "10" # Free tier sync API executions + RATE_LIMIT_PRO_SYNC: "25" # Pro tier sync API executions + RATE_LIMIT_TEAM_SYNC: "75" # Team tier sync API executions + RATE_LIMIT_ENTERPRISE_SYNC: "150" # Enterprise tier sync API executions + RATE_LIMIT_FREE_ASYNC: "50" # Free tier async API executions + RATE_LIMIT_PRO_ASYNC: "200" # Pro tier async API executions + RATE_LIMIT_TEAM_ASYNC: "500" # Team tier async API executions + RATE_LIMIT_ENTERPRISE_ASYNC: "1000" # Enterprise tier async API executions + MANUAL_EXECUTION_LIMIT: "999999" # Manual execution bypass value # UI Branding & Whitelabeling Configuration NEXT_PUBLIC_BRAND_NAME: "Sim" # Custom brand name @@ -88,17 +116,13 @@ app: NEXT_PUBLIC_TERMS_URL: "" # Terms of service URL (leave empty for none) NEXT_PUBLIC_PRIVACY_URL: "" # Privacy policy URL (leave empty for none) - # Rate Limiting Configuration - RATE_LIMIT_WINDOW_MS: "60000" # Rate limit window in milliseconds (1 minute) - MANUAL_EXECUTION_LIMIT: "999999" # Manual execution limit (effectively unlimited) - RATE_LIMIT_FREE_SYNC: "10" # Free tier sync API executions per minute - RATE_LIMIT_FREE_ASYNC: "50" # Free tier async API executions per minute - RATE_LIMIT_PRO_SYNC: "25" # Pro tier sync API executions per minute - RATE_LIMIT_PRO_ASYNC: "200" # Pro tier async API executions per minute - RATE_LIMIT_TEAM_SYNC: "75" # Team tier sync API executions per minute - RATE_LIMIT_TEAM_ASYNC: "500" # Team tier async API executions per minute - RATE_LIMIT_ENTERPRISE_SYNC: "150" # Enterprise tier sync API executions per minute - RATE_LIMIT_ENTERPRISE_ASYNC: "1000" # Enterprise tier async API executions per minute + # Monitoring & Analytics (leave empty if not using) + NEXT_PUBLIC_SENTRY_DSN: "" # Sentry DSN for error tracking + + # Access Control (leave empty if not restricting login) + ALLOWED_LOGIN_EMAILS: "" # Comma-separated list of allowed email addresses for login + ALLOWED_LOGIN_DOMAINS: "" # Comma-separated list of allowed email domains for login + # Service configuration service: From 681eccae69e78b4036b025755144c0f0a8736f30 Mon Sep 17 00:00:00 2001 From: waleedlatif1 Date: Fri, 8 Aug 2025 10:56:57 -0700 Subject: [PATCH 2/2] rm serper & freestyle --- helm/sim/values.schema.json | 8 -------- helm/sim/values.yaml | 2 -- 2 files changed, 10 deletions(-) diff --git a/helm/sim/values.schema.json b/helm/sim/values.schema.json index 99bfe655d79..b344664c970 100644 --- a/helm/sim/values.schema.json +++ b/helm/sim/values.schema.json @@ -179,10 +179,6 @@ "type": "string", "description": "Additional Anthropic API key for load balancing" }, - "FREESTYLE_API_KEY": { - "type": "string", - "description": "Freestyle AI API key" - }, "OLLAMA_URL": { "type": "string", "format": "uri", @@ -192,10 +188,6 @@ "type": "string", "description": "ElevenLabs API key for text-to-speech in deployed chat" }, - "SERPER_API_KEY": { - "type": "string", - "description": "Serper API key for online search" - }, "RATE_LIMIT_WINDOW_MS": { "type": "string", "description": "Rate limit window duration in milliseconds" diff --git a/helm/sim/values.yaml b/helm/sim/values.yaml index f75073e8f2f..f6f79ddb4e4 100644 --- a/helm/sim/values.yaml +++ b/helm/sim/values.yaml @@ -83,10 +83,8 @@ app: ANTHROPIC_API_KEY_1: "" # Primary Anthropic Claude API key ANTHROPIC_API_KEY_2: "" # Additional Anthropic API key for load balancing ANTHROPIC_API_KEY_3: "" # Additional Anthropic API key for load balancing - FREESTYLE_API_KEY: "" # Freestyle AI API key OLLAMA_URL: "" # Ollama local LLM server URL ELEVENLABS_API_KEY: "" # ElevenLabs API key for text-to-speech in deployed chat - SERPER_API_KEY: "" # Serper API key for online search # Rate Limiting Configuration (per minute) RATE_LIMIT_WINDOW_MS: "60000" # Rate limit window duration (1 minute)