jitsudod is configured via an optional YAML file and JITSUDOD_* environment variables. Environment variables always take precedence over the config file, making them suitable for Kubernetes Secrets and twelve-factor deployments.
# Pass the config file path as a flag
jitsudod --config /etc/jitsudo/config.yaml
# Or via environment variable
JITSUDOD_CONFIG = /etc/jitsudo/config.yaml jitsudod
# Environment-only (no config file required)
JITSUDOD_DATABASE_URL = postgres://... jitsudod
Network listener addresses for the two APIs.
Field YAML key Env var Default Description HTTP address server.http_addrJITSUDOD_HTTP_ADDR:8080REST gateway (grpc-gateway) listen address gRPC address server.grpc_addrJITSUDOD_GRPC_ADDR:8443Native gRPC API listen address
PostgreSQL connection settings. jitsudo requires PostgreSQL — SQLite is not supported.
Field YAML key Env var Default Description Connection URL database.urlJITSUDOD_DATABASE_URLLocal dev default PostgreSQL DSN (postgres://user:pass@host:port/db?sslmode=require)
url : " postgres://jitsudo:password@localhost:5432/jitsudo?sslmode=require "
OIDC token validation settings.
Field YAML key Env var Default Description OIDC issuer auth.oidc_issuerJITSUDOD_OIDC_ISSUERhttp://localhost:5556/dexMust match the iss claim in tokens issued by your IdP Client ID auth.client_idJITSUDOD_OIDC_CLIENT_IDjitsudo-cliOIDC client ID registered with your IdP for the server
oidc_issuer : " https://your-idp.example.com "
client_id : " jitsudo-server "
Token validation flow: jitsudod fetches JWKS from {oidc_issuer}/.well-known/openid-configuration, verifies the JWT signature, and validates iss, aud, and exp claims.
TLS configuration for the gRPC listener.
Field YAML key Env var Default Description Certificate file tls.cert_fileJITSUDOD_TLS_CERT_FILE""Path to PEM-encoded TLS certificate Key file tls.key_fileJITSUDOD_TLS_KEY_FILE""Path to PEM-encoded TLS private key CA file tls.ca_fileJITSUDOD_TLS_CA_FILE""Path to CA certificate; non-empty enables mTLS
TLS modes:
cert_filekey_fileca_fileMode empty empty empty Insecure (local development only) set set empty Server-only TLS set set set Mutual TLS (mTLS)
cert_file : " /etc/jitsudo/tls.crt "
key_file : " /etc/jitsudo/tls.key "
ca_file : "" # set to enable mTLS
Each provider is optional. Omit or comment out sections you don’t use. A nil provider section means the provider is not registered at startup.
Field YAML key Default Description Mode providers.aws.modests_assume_rolests_assume_role or identity_centerRegion providers.aws.regionus-east-1Primary AWS region Role ARN template providers.aws.role_arn_template— ARN template with {scope} and {role} variables Max duration providers.aws.max_durationno cap Maximum elevation window (STS hard max: 12h) Identity Center instance ARN providers.aws.identity_center_instance_arn— Required for identity_center mode Identity Center store ID providers.aws.identity_center_store_id— Required for identity_center mode Endpoint URL providers.aws.endpoint_url""Override AWS endpoint (LocalStack testing only)
role_arn_template : " arn:aws:iam::{scope}:role/jitsudo-{role} "
Field YAML key Default Description Organization ID providers.gcp.organization_id— GCP organization ID (numeric string) Credentials source providers.gcp.credentials_sourceapplication_defaultworkload_identity_federation, application_default, or service_account_keyMax duration providers.gcp.max_durationno cap Maximum elevation window Condition title prefix providers.gcp.condition_title_prefixjitsudoPrefix for IAM condition titles
organization_id : " 123456789012 "
credentials_source : " workload_identity_federation "
condition_title_prefix : " jitsudo "
Field YAML key Default Description Tenant ID providers.azure.tenant_id— Entra ID (Azure AD) tenant ID Default subscription ID providers.azure.default_subscription_id— Fallback subscription for requests without a scope Client ID providers.azure.client_id— Service principal or managed identity client ID Credentials source providers.azure.credentials_sourceworkload_identityworkload_identity or client_secretMax duration providers.azure.max_durationno cap Maximum elevation window
tenant_id : " xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx "
default_subscription_id : " xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx "
client_id : " xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx "
credentials_source : " workload_identity "
Field YAML key Default Description Kubeconfig path providers.kubernetes.kubeconfig"" (in-cluster)Path to kubeconfig; empty uses in-cluster service account Default namespace providers.kubernetes.default_namespace""Default namespace for RoleBindings Max duration providers.kubernetes.max_durationno cap Maximum elevation window Managed label providers.kubernetes.managed_labeljitsudo.dev/managedLabel applied to all managed bindings
default_namespace : " default "
managed_label : " jitsudo.dev/managed "
Field YAML key Env var Default Description Webhook URL notifications.slack.webhook_urlJITSUDOD_SLACK_WEBHOOK_URL— Slack incoming webhook URL Channel notifications.slack.channel— ""Override the webhook’s default channel Break-glass mention notifications.slack.mention_on_break_glass— ""Prepended to break-glass alerts (e.g. <!channel>)
webhook_url : " https://hooks.slack.com/services/... "
channel : " #sre-access-requests "
mention_on_break_glass : " <!channel> "
Field YAML key Env var Default Description Host notifications.smtp.hostJITSUDOD_SMTP_HOST— SMTP server hostname Port notifications.smtp.port— 587SMTP port (587=STARTTLS, 465=TLS) Username notifications.smtp.username— — SMTP auth username Password notifications.smtp.passwordJITSUDOD_SMTP_PASSWORD— SMTP auth password From notifications.smtp.from— — Sender email address To notifications.smtp.to— — List of recipient email addresses
username : " jitsudo@example.com "
password : "" # supply via JITSUDOD_SMTP_PASSWORD
from : " jitsudo@example.com "
Field YAML key Env var Default Description Level log.levelJITSUDOD_LOG_LEVELinfoMinimum log level: debug, info, warn, error Format log.format— jsonOutput format: json (structured) or text (human-readable)
A full annotated config file is available in the repository at deploy/config/config.example.yaml .
Additional example configs: