externalSecret.enabled: false).
Never commit actual secret values to version control. Use secure secret management practices:
- Store in separate, gitignored values file
- Use Helm
--setflags from CI/CD secrets - Use encrypted secret management (SOPS, sealed-secrets, etc.)
- Prefer external secret stores for production
Automatic Pod Restarts
When you update secret values in your Helm values file and runhelm upgrade, all affected pods (web, worker, OAuth, registry, MinIO) automatically restart to pick up the new credentials. This ensures your deployment always uses the latest secret values without requiring manual intervention.
What triggers automatic restarts:
- Changes to any value in the
secretssection - Changes to OAuth provider credentials in
oauth.secrets - Changes to Replicated license fields (if using Replicated distribution)
Database Secrets
Database username (optional override).Default Behavior: If not set, the value from Related Configuration: See
envVars.DB_USER is used (default: "postgres").When to Use: Set this when the database username should be treated as sensitive information, or when you need to override the username configured in envVars.DB_USER.Example:envVars.DB_USER in Environment Variables - Database Configuration for the non-sensitive username configuration.Database password.Required: Yes (for database access)Security: Use strong, unique passwords. Rotate regularly.
GitHub Integration Secrets
GitHub personal access token or OAuth token.Auto-Populated: From Replicated license fieldPurpose: Required to pull crewai enterprise repositories.
GitHub token for Crew Studio integration.
GitHub App client secret for user authorization during installation.Required For: GitHub App OAuth flow.Obtaining: GitHub App Settings > Generate a new client secret.Related Configuration:
- Configure
envVars.GITHUB_CLIENT_IDwith your GitHub App client ID - Configure
envVars.GITHUB_APP_IDwith your GitHub App ID - Configure
envVars.GITHUB_APP_URLwith your GitHub App installation URL - Configure
secrets.GITHUB_APP_PRIVATE_KEYwith your GitHub App private key
Secret token for validating GitHub webhook payloads.Purpose: Ensures webhooks are from GitHub.
Private key for GitHub App server-to-server authentication.Format: PEM-encoded RSA private key as a single-line string with literal Example:Setup Guide: See GitHub App Setup Guide for detailed instructions.
\n characters replacing each line break. The value must start with -----BEGIN RSA PRIVATE KEY----- — do not use the key fingerprint (the short hex string shown in the GitHub UI).Obtaining: GitHub App Settings > Private keys > Generate a private key. The .pem key file downloads automatically and cannot be retrieved again.Required For: GitHub App API authentication and operations.Security: Store securely and never commit to version control.Converting the .pem file to single-line format:Rails Application Secrets
Rails secret key base for session signing and encryption.Default: Auto-generatedAuto-Generation: If not provided, automatically generated using ArgoCD Users: Must be set explicitly — see ArgoCD Deployment Guide.Upgrade Behavior: Once generated, the value persists across Helm upgrades to maintain session continuity.
randAlphaNum 64 and persisted across upgrades via lookup function.Manual Generation:Internal API key for service-to-service authentication.Auto-Generation: If not provided, automatically generated using ArgoCD Users: Must be set explicitly — see ArgoCD Deployment Guide.
randAlphaNum 64 and persisted across upgrades via lookup function.Manual Generation:Application-level encryption key for sensitive data at rest.Auto-Generation: If not provided, automatically generated and persisted across upgrades via ArgoCD Users: Must be set explicitly — see ArgoCD Deployment Guide.
lookup function.Format: Hexadecimal string (recommended: 64 characters).Manual Generation:Primary encryption key for Rails Active Record Encryption.Auto-Generation: If not provided, automatically generated using ArgoCD Users: Must be set explicitly — see ArgoCD Deployment Guide.
randAlphaNum 64 and persisted across upgrades via lookup function.Manual Generation:Deterministic encryption key for Rails Active Record Encryption. Used for attributes that need to be queried by encrypted value.Auto-Generation: If not provided, automatically generated using ArgoCD Users: Must be set explicitly — see ArgoCD Deployment Guide.
randAlphaNum 64 and persisted across upgrades via lookup function.Manual Generation:Salt used for key derivation in Rails Active Record Encryption.Auto-Generation: If not provided, automatically generated using ArgoCD Users: Must be set explicitly — see ArgoCD Deployment Guide.
randAlphaNum 64 and persisted across upgrades via lookup function.Manual Generation:Shared secret for the internal container registry’s HTTP authentication.Auto-Generation: If not provided, automatically generated using ArgoCD Users: Must be set explicitly — see ArgoCD Deployment Guide.
randAlphaNum 32 and persisted across upgrades via lookup function.Manual Generation:SSL/TLS Secrets
PEM-encoded private key for application-level TLS.Default: Auto-generated (if
web.tls.autoGenerate: true)Auto-Generation: When web.tls.autoGenerate: true, a self-signed certificate and key are generated and persisted across upgrades.Manual Provision:PEM-encoded certificate for application-level TLS.Default: Auto-generated (if
web.tls.autoGenerate: true)Format: Can include certificate chain (server cert + intermediates).SSL certificate for crew service communication.Default: Auto-generated (if
web.tls.autoGenerate: true)SSL private key for crew service communication.Default: Auto-generated (if
web.tls.autoGenerate: true)AWS Secrets (Optional)
AWS access key ID for S3 and other AWS services.When Required:
STORAGE_SERVICE: amazonwith static credentials- Not using IAM roles (IRSA)
AWS secret access key.
Azure Secrets (Optional)
Azure Storage account access key.When Required:
STORAGE_SERVICE: microsoftAzure service principal client secret.
Built-in LLM Secrets (Optional)
API key for built-in LLM provider.Purpose: Provides authentication for internal LLM calls used by the CrewAI Platform, including:
- Improving Studio prompts
- Generating automation descriptions
- Chatting with flows
- Other platform AI-assisted features
- Obtain from: https://platform.openai.com/api-keys
- Format:
sk-proj-...orsk-...
- Obtain from: https://console.anthropic.com/settings/keys
- Format:
sk-ant-...
- Configure
envVars.BUILT_IN_LLM_PROVIDERto specify the LLM provider - Configure
envVars.BUILT_IN_LLM_MODELto specify the model
Python Package Registry
PyPI registry URL for enterprise Python packages.Default: Auto-generated (in Replicated deployments)Auto-Generation (Replicated): Automatically built from license credentials:Requirements:
- Customer ID from:
global.replicated.licenseFields.replicated_customer_id - Password from:
global.replicated.dockerconfigjson(registry.crewai.com entry) - Generated URL format:
https://customer_id:password@pypi.crewaifactory.com/simple/
- Must use HTTPS protocol
- Must include authentication credentials in format
username:password@host - Must end with
/simple/for PyPI compatibility - Automatically base64-encoded by the chart
Authentication Provider Secrets
Most authentication provider configuration values have moved to
envVars (non-sensitive).
Client secrets and API keys remain in secrets for authentication providers.For complete authentication setup, see the Environment Variables Authentication Configuration section.Microsoft Entra ID (Azure AD) application client secret for web application authentication.When Required: Security: Keep this value secure. Rotate regularly according to your organization’s security policy.
AUTH_PROVIDER: entra_idObtaining: Azure Portal > App Registrations > Your App > Certificates & Secrets > Client secrets.Example:Okta application client secret for web application authentication.When Required: Security: Keep this value secure. Rotate regularly according to your organization’s security policy.
AUTH_PROVIDER: oktaObtaining: Okta Admin Console > Applications > Your App > General Settings > Client Credentials.Example:WorkOS API key for authentication.When Required: Security: Keep this value secure. Rotate regularly according to your organization’s security policy.
AUTH_PROVIDER: workosObtaining: WorkOS Dashboard > Main Page > API Keys.Format: Typically starts with sk_live_ for production or sk_test_ for testing.Example:Keycloak client secret for web application authentication.When Required: Security: Keep this value secure. Rotate regularly according to your organization’s security policy.Setup Guide: See Keycloak SSO Configuration Guide for detailed setup instructions.
AUTH_PROVIDER: keycloakObtaining: Keycloak Admin Console > Clients > Your Client > Credentials tab.Example:Built-in Integrations Secrets
OAuth secrets are used when
oauth.enabled: true. These secrets enable secure communication between the Built-in Integrations service and the Rails application for third-party integrations (Gmail, Google Calendar, Microsoft Outlook, etc.).Secret key for signing OAuth session cookies.Auto-Generation: If not provided, automatically generated using
randAlphaNum 64 and persisted across upgrades via lookup function.Purpose: Secures OAuth flow session data.Manual Generation:Encryption key for OAuth tokens stored in the database.Auto-Generation: If not provided, automatically generated as a 64-character hexadecimal string and persisted across upgrades.Format: Hexadecimal string (64 characters).Purpose: Encrypts sensitive OAuth tokens (access tokens, refresh tokens) at rest.Manual Generation:
Internal API key for authentication between the Built-in Integrations service and Rails application.Auto-Generation: If not provided, automatically generated using Note: When set manually, both
randAlphaNum 64 and persisted across upgrades.Important: This value is automatically duplicated as CREWAI_OAUTH_API_KEY for the Rails application. Both keys will always have the same value.Purpose: Enables secure service-to-service communication for OAuth operations.Manual Generation:OAUTH_INTERNAL_API_KEY (used by Built-in Integrations service) and CREWAI_OAUTH_API_KEY (used by Rails) will use this value automatically.OAuth Provider Secrets
OAuth provider secrets are optional and only required if you want to enable specific OAuth integrations. Each provider requires a client ID and client secret obtained from the provider’s developer console.Configuration: OAuth provider credentials are configured via The secrets documented below are the Kubernetes secret keys that are automatically generated from your
oauth.secrets.* values in your Helm values file, which support provider-level defaults and product-specific overrides. See the CrewAI Built-in Integrations Reference - OAuth Secrets Configuration for detailed configuration examples.For example, to configure Google OAuth for all Google products:oauth.secrets.* configuration.Google OAuth client ID for Gmail integration.
Google OAuth client secret for Gmail integration.
Google OAuth client ID for Google Calendar integration.
Google OAuth client secret for Google Calendar integration.
Google OAuth client ID for Google Drive integration.
Google OAuth client secret for Google Drive integration.
Google OAuth client ID for Google Contacts integration.
Google OAuth client secret for Google Contacts integration.
Google OAuth client ID for Google Sheets integration.
Google OAuth client secret for Google Sheets integration.
Google OAuth client ID for Google Slides integration.
Google OAuth client secret for Google Slides integration.
Google OAuth client ID for Google Docs integration.
Google OAuth client secret for Google Docs integration.
Microsoft OAuth client ID for Outlook integration.
Microsoft OAuth client secret for Outlook integration.
Microsoft OAuth client ID for OneDrive integration.
Microsoft OAuth client secret for OneDrive integration.
Microsoft OAuth client ID for Teams integration.
Microsoft OAuth client secret for Teams integration.
Microsoft OAuth client ID for SharePoint integration.
Microsoft OAuth client secret for SharePoint integration.
Microsoft OAuth client ID for Excel integration.
Microsoft OAuth client secret for Excel integration.
Microsoft OAuth client ID for Word integration.
Microsoft OAuth client secret for Word integration.
HubSpot OAuth client ID.
HubSpot OAuth client secret.
Notion OAuth client ID.
Notion OAuth client secret.
Wharf Secrets
Wharf secrets are used when
wharf.enabled: true. These secrets enable secure communication between the Wharf OTLP trace collector and the Rails application for distributed tracing.JWT secret for authenticating trace submissions to the Wharf service.Auto-Generation: If not provided, automatically generated using ArgoCD Users: Must be set explicitly — see ArgoCD Deployment Guide.Important: This value is automatically shared with both the Wharf service and the Rails application. Both components will use the same value for authentication.Related Configuration:
randAlphaNum 64 and persisted across upgrades via lookup function.Purpose: Shared secret between the Wharf service and Rails application for authenticating OTLP trace submissions.Manual Generation:- Wharf service: See Wharf OTLP Trace Collector Reference
PostgreSQL connection string for the Wharf OTLP trace collector database.Auto-Generated: Automatically constructed from database configuration values and not directly user-configurable.Format:
postgres://username:password@host:port/databaseComponents Used:- Host:
envVars.DB_HOSTorpostgres.fullnameOverride(if internal PostgreSQL enabled) - Port:
envVars.DB_PORT(default: “5432”) - User:
envVars.DB_USER - Password:
secrets.DB_PASSWORD - Database:
postgres.wharfDatabase(default: “wharf”)
prefer). To enforce SSL connections on external databases, configure SSL enforcement at the database server level (e.g., AWS RDS parameter rds.force_ssl=1).Purpose: Provides Wharf service with connection credentials to its dedicated PostgreSQL database for storing OTLP trace data.Related Configuration:- Wharf service: See Wharf OTLP Trace Collector Reference
- PostgreSQL database: See PostgreSQL Configuration
