mirror of
https://github.com/simstudioai/sim.git
synced 2026-04-06 03:00:16 -04:00
improvement(helm): fix duplicate SOCKET_SERVER_URL and add additional envvars to template (#909)
* improvement(helm): fix duplicate SOCKET_SERVER_URL and add additional envvars to template * rm serper & freestyle
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -113,6 +113,189 @@
|
||||
"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"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"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 +375,11 @@
|
||||
"ALLOWED_ORIGINS": {
|
||||
"type": "string",
|
||||
"description": "CORS allowed origins"
|
||||
},
|
||||
"NODE_ENV": {
|
||||
"type": "string",
|
||||
"enum": ["development", "test", "production"],
|
||||
"description": "Runtime environment"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,13 +64,39 @@ 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
|
||||
OLLAMA_URL: "" # Ollama local LLM server URL
|
||||
ELEVENLABS_API_KEY: "" # ElevenLabs API key for text-to-speech in deployed chat
|
||||
|
||||
# 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 +114,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:
|
||||
|
||||
Reference in New Issue
Block a user