Agent instructions, skills, SSH host aliases and expansion triggers are worth having identical on every machine one person owns, and belong in none of the shared configuration. They live in user/ now, with a manifest saying where each piece goes and a link-user stage that puts it there. That stage does nothing unless the machine said yes. Somebody who clones Panama to try the desktop keeps their own ~/.claude/CLAUDE.md exactly where it was; the question names the destinations and defaults to no. Anything displaced goes to config/old rather than being deleted. ~/.claude/CLAUDE.md and ~/.codex/AGENTS.md were byte-identical copies of one file, which is the drift this exists to prevent. Also adds the vitals toggles for the battery and Claude usage readouts, which had preferences and no way to reach them.
8.0 KiB
Environment Variables Reference
This guide covers all environment variables used to configure Infisical self-hosted deployments.
Essential Security Keys
ENCRYPTION_KEY
Required – Master encryption key for all secrets at rest.
- Format: 16 bytes as hex (32 hex characters)
- Example:
a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8 - Generation:
openssl rand -hex 16 - Critical Notes:
- Cannot be recovered if lost
- Must be stable across deployments and upgrades
- Rotate using Infisical's key rotation procedures (enterprise feature)
- Back up securely in a separate location
AUTH_SECRET
Required – Secret key for signing session tokens and JWTs.
- Format: 32 bytes as base64
- Example:
VUJrQV9FbmNyeXB0aW9uS2V5XzMyQnl0ZXNfQmFzZTY0RW5jb2RlZA== - Generation:
openssl rand -base64 32 - Notes:
- Used for all authentication tokens
- Must be stable and unique per deployment
Database Configuration
DB_CONNECTION_URI
Required – PostgreSQL connection string.
- Format:
postgresql://user:password@host:port/database - Example:
postgresql://infisical:[email protected]:5432/infisical - Requirements:
- PostgreSQL 14 or newer
uuid-osspextension enabled:CREATE EXTENSION IF NOT EXISTS "uuid-ossp";pgcryptoextension enabled:CREATE EXTENSION IF NOT EXISTS pgcrypto;
DB_ROOT_CERT
Optional – Base64-encoded PEM certificate for SSL/TLS verification of PostgreSQL.
- Format: Base64-encoded SSL certificate
- Usage: For databases with self-signed or custom CA certificates
- Example:
cat /path/to/ca.pem | base64 -w 0 - Notes: Verify SSL/TLS connections for managed database services (RDS, Cloud SQL, Azure Database)
DB_READ_REPLICAS
Optional – JSON array of read-only database replicas.
- Format: JSON array of connection objects
- Example:
[ {"connectionString": "postgresql://user:pass@replica1:5432/infisical"}, {"connectionString": "postgresql://user:pass@replica2:5432/infisical"} ] - Use Case: Distribute read-heavy workloads across multiple database replicas
- Requirements: Read replicas must be in sync with primary
Redis Configuration
REDIS_URL
Required – Redis connection string.
- Format:
redis://[:password@]host:port[/db]orrediss://...for TLS - Examples:
- Standard:
redis://redis.example.com:6379 - With auth:
redis://:[email protected]:6379 - TLS:
rediss://redis.example.com:6380
- Standard:
- Requirements: Redis 6.2 or newer
- Important: Redis Cluster mode is NOT supported; use standalone or Sentinel
Redis Sentinel (High Availability)
Use these variables to configure Redis Sentinel for HA without Cluster mode.
REDIS_SENTINEL_HOSTS
Comma-separated list of Sentinel node addresses.
- Format:
host1:port1,host2:port2,host3:port3 - Example:
sentinel1.example.com:26379,sentinel2.example.com:26379,sentinel3.example.com:26379
REDIS_SENTINEL_MASTER_NAME
Name of the Redis master monitored by Sentinel.
- Example:
mymaster - Default:
mymaster(if not specified)
REDIS_SENTINEL_ENABLE_TLS
Enable TLS for Sentinel connections.
- Format:
trueorfalse - Default:
false
REDIS_SENTINEL_USERNAME
Username for Sentinel authentication (if required).
REDIS_SENTINEL_PASSWORD
Password for Sentinel authentication.
SMTP Configuration
SMTP is required for email-based features. Without SMTP configured, the following features are disabled:
- Multi-factor authentication (MFA) via email
- Email invitations
- Suspicious login alerts
- Password reset emails
SMTP_HOST
Required if SMTP enabled – SMTP server hostname.
- Example:
smtp.gmail.com
SMTP_PORT
SMTP server port.
- Default:
587(STARTTLS) - Common Values:
587— STARTTLS (recommended)465— SMTPS (implicit TLS)25— Unencrypted (not recommended for production)
SMTP_USERNAME
Username for SMTP authentication.
SMTP_PASSWORD
Password for SMTP authentication.
SMTP_FROM_ADDRESS
Required if SMTP enabled – Email address from which emails are sent.
- Example:
[email protected]
SMTP_FROM_NAME
Display name for the sender.
- Example:
Infisical - Default:
Infisical
SMTP_REQUIRE_TLS
Require TLS connection (STARTTLS).
- Format:
trueorfalse - Default:
true
SMTP_IGNORE_TLS
Ignore TLS certificate errors (useful for self-signed certificates in development).
- Format:
trueorfalse - Default:
false - Warning: Do not use in production
OAuth/SSO Configuration
Google Login
To enable Google OAuth login, register an OAuth 2.0 application in Google Cloud Console.
CLIENT_ID_GOOGLE_LOGIN
Google OAuth client ID.
CLIENT_SECRET_GOOGLE_LOGIN
Google OAuth client secret.
GitHub Login
Register an OAuth application at https://github.com/settings/developers.
CLIENT_ID_GITHUB_LOGIN
GitHub OAuth client ID.
CLIENT_SECRET_GITHUB_LOGIN
GitHub OAuth client secret.
GitLab Login
Register an OAuth application in your GitLab instance (or gitlab.com).
CLIENT_ID_GITLAB_LOGIN
GitLab OAuth client ID.
CLIENT_SECRET_GITLAB_LOGIN
GitLab OAuth client secret.
Authentication Timeouts
JWT_AUTH_LIFETIME
Lifetime of access tokens.
- Default:
15m(15 minutes) - Format: Valid Node.js duration string (e.g.,
30m,1h)
JWT_REFRESH_LIFETIME
Lifetime of refresh tokens.
- Default:
24h(24 hours) - Format: Valid Node.js duration string
Enterprise and Licensing
LICENSE_KEY
License key for Infisical Enterprise features.
- Format: Provided by Infisical upon enterprise subscription
- Features Enabled: SAML, RBAC advanced features, audit logs, IP allowlisting, etc.
FIPS 140-2 Compliance
FIPS mode is enabled using the infisical/infisical:latest-fips image with additional Node.js configuration.
FIPS_ENABLED
Enable FIPS 140-2 mode.
- Format:
trueorfalse - Default:
false - Requirement: Must use
infisical/infisical:latest-fipsimage
NODE_OPTIONS
Node.js runtime options for FIPS compliance.
- For FIPS Mode:
NODE_OPTIONS="--max-old-space-size=8192 --force-fips" - Notes:
--force-fipsenables FIPS mode--max-old-space-sizeallocates memory for the Node.js heap (adjust based on load)
Telemetry
TELEMETRY_ENABLED
Enable or disable telemetry collection.
- Format:
trueorfalse - Default:
true
OTEL_EXPORT_TYPE
Export destination for OpenTelemetry metrics.
- Options:
prometheus,otlp - Example:
prometheusexports metrics on/metricsendpoint for Prometheus scraping
Web and Security
SITE_URL
Required – Public URL of the Infisical instance.
- Format: Full URL (e.g.,
https://secrets.example.com) - Usage: Used for email links, OAuth redirects, and frontend configuration
CORS_ALLOWED_ORIGINS
Comma-separated list of allowed CORS origins.
- Format: Full URLs (e.g.,
https://app.example.com,https://admin.example.com) - Default: Allows same origin
- Notes: Whitelist specific origins in production; avoid wildcards (
*)
ALLOW_INTERNAL_IP_CONNECTIONS
Allow connections to internal IP addresses (useful for Kubernetes).
- Format:
trueorfalse - Default:
false - Use Case: Kubernetes nodes using internal IPs, local Redis/PostgreSQL on private networks
Summary: Minimal Configuration
For a minimal production deployment, these environment variables are required:
# Security
ENCRYPTION_KEY="<16-byte-hex>"
AUTH_SECRET="<base64-32-byte>"
# Database
DB_CONNECTION_URI="postgresql://user:pass@host:5432/infisical"
# Redis
REDIS_URL="redis://host:6379"
# Web
SITE_URL="https://secrets.example.com"
# SMTP (required for email features)
SMTP_HOST="smtp.example.com"
SMTP_PORT="587"
SMTP_USERNAME="[email protected]"
SMTP_PASSWORD="password"
SMTP_FROM_ADDRESS="[email protected]"
For additional features (OAuth, FIPS, Sentinel, etc.), add the relevant variables from the sections above.