Direct secret values (used whenDocumentation Index
Fetch the complete documentation index at: https://enterprise-docs.crewai.com/llms.txt
Use this file to discover all available pages before exploring further.
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.Special Characters: Usernames can safely contain special characters. The chart automatically handles URL encoding when constructing database connection strings.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.Special Characters: Passwords can safely contain special characters (e.g.,
@, :, /, ?, #, %). The chart automatically handles URL encoding when constructing database connection strings, so you don’t need to manually escape or encode special characters.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:Token that authorizes Retrieve the current value:ArgoCD Users: Must be set explicitly — see ArgoCD Deployment Guide.Operational Guide: See Factory Health & Debug for how the token is used and how to verify OAuth key consistency across pods.
GET /health/debug via the X-Factory-Debug-Token header. The endpoint returns 404 Not Found to any caller without a valid token or a signed-in factory-admin session — the probe does not run for unauthorized requests. This prevents anonymous amplification of LLM-provider, Kubernetes API, and in-cluster service probes.Auto-Generation: If not provided, automatically generated using 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:RSA private key (PEM) used to sign OIDC tokens issued by the platform’s built-in IdP. The corresponding public key is published at ArgoCD Users: Must be set explicitly — see ArgoCD Deployment Guide.
/oauth2/jwks for cloud-provider workload-identity federation.Auto-Generation: If not provided, an RSA key is generated via Helm’s genPrivateKey "rsa" and persisted across upgrades via lookup function.Stability requirement: Cloud-provider trust policies (AWS IAM, GCP Workload Identity, Azure federated credentials) verify tokens against the public key served at the JWKS endpoint. Rotating this key invalidates all federated trust until the public key is republished and clients refresh.Manual Generation:Identifier (
kid) advertised in the JWKS document and embedded in the JOSE header of every OIDC token. Cloud providers use it to look up the matching public key.Auto-Generation: If not provided, generated as crewai-oidc-<random> and persisted across upgrades via lookup function.Stability requirement: Must be stable for the lifetime of the signing key. Changing OIDC_KEY_ID without rotating OIDC_PRIVATE_KEY (or vice versa) breaks token verification.ArgoCD Users: Must be set explicitly — see ArgoCD Deployment Guide.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)Priority: Manual configuration takes precedence over auto-generation. When Common Use Cases:
secrets.UV_DEFAULT_INDEX is explicitly set, it overrides the auto-generated value from Replicated license credentials.Auto-Generation (Replicated): Automatically built from license credentials:- 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/
- Private PyPI Mirror: Point to a private registry mirror for air-gapped environments (see Private PyPI Registry Mirror Guide)
- Non-Replicated Deployments: Provide direct access credentials when not using Replicated
- Custom Registry: Use a different PyPI-compatible registry
- 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”)
@, :, /, ?, #, %) work correctly without manual escaping.SSL Mode: Uses PostgreSQL default SSL mode (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
Deployment Instance Secrets
The deployment instance JWT secret signs the access and refresh tokens the platform mints for each crew instance it provisions. Deployed crews (BUILDKIT_KUBERNETES, ECS, etc.) attach these tokens when calling back into the platform’s internal API for execution status, refresh, and configuration.
HMAC-SHA256 signing key for the JWT access and refresh tokens issued to deployed crew instances.Auto-Generation: If not provided, automatically generated using Or, to match the chart’s auto-generation format exactly:Rotation Warning: Rotating this secret invalidates every refresh token already handed out to a deployed crew — they are signed with the previous key and will fail verification on the next refresh. The daily
randAlphaNum 64 and persisted across upgrades via lookup function.Purpose: Signs short-lived access tokens (24h) and long-lived refresh tokens (1 year on factory installs) that deployed crews use to call back into the platform’s internal API. When unset, the platform refuses to mint refresh tokens and falls back to access-token-only auth — deployed crews stop working once their access token expires.Manual Generation:ScanExpiringDeploymentTokensJob only re-mints tokens within 48h of expiring, so it does not recover crews on its own. To rotate safely, redeploy every active automation after the change so each instance picks up a token signed with the new key. Treat rotation as a deliberate operation.ArgoCD Users: Must be set explicitly — see ArgoCD Deployment Guide.Upgrade Behavior: Once generated, the value persists across Helm upgrades via the lookup function so existing deployment refresh tokens remain valid.Cube Analytics Secrets
Cube secrets are used when
cube.enabled: true. These secrets enable authentication between the Cube analytics service and the Rails application for cost tracking and execution analytics.JWT secret for authenticating requests between the Cube analytics service and the Rails application.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 Cube 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 Cube service and Rails application for authenticating analytics queries and data access.Manual Generation:- Cube service: See Cube Analytics Reference
