Service settings reference

Every field of the Service settings, with its environment variable, type, bounds, and default.

Note

Generated from the Settings definitions used by the Service loader. Run uv run --locked python scripts/docs/references.py after changing them instead of editing rows.

Use Configure Service for precedence, examples, role/storage requirements, and cross-field validation. Types and field constraints below do not replace those combined checks. Secret defaults are masked by the schema; this reference never reads deployment environment values. Defaults apply to the source version, not every historical release.

The complete machine-readable validation schema, including named enum/union definitions, is available as Service settings JSON.

server

SettingEnvironment variableType / choicesConstraints and default
server.hostA13N_SERVER__HOSTstringdefault="127.0.0.1"
server.portA13N_SERVER__PORTintegerminimum=1; maximum=65535; default=8000
server.public_urlA13N_SERVER__PUBLIC_URLstringmaxLength=2048; default="http://127.0.0.1:8000"
server.trusted_proxiesA13N_SERVER__TRUSTED_PROXIESarray of stringdefault=[]
server.request_bytesA13N_SERVER__REQUEST_BYTESintegerminimum=1024; maximum=33554432; default=2097152
server.request_timeoutA13N_SERVER__REQUEST_TIMEOUTnumbermaximum=60; exclusiveMinimum=0; default=10
server.readiness_timeoutA13N_SERVER__READINESS_TIMEOUTnumbermaximum=30; exclusiveMinimum=0; default=2
server.shutdown_timeoutA13N_SERVER__SHUTDOWN_TIMEOUTintegerminimum=1; maximum=300; default=15
server.tls_certificateA13N_SERVER__TLS_CERTIFICATEstring or nullformat="path"; default=null
server.tls_keyA13N_SERVER__TLS_KEYstring or nullformat="path"; default=null

database

SettingEnvironment variableType / choicesConstraints and default
database.urlA13N_DATABASE__URLstringformat="password"; default="**********"
database.auto_migrateA13N_DATABASE__AUTO_MIGRATEbooleandefault=true
database.pool_sizeA13N_DATABASE__POOL_SIZEintegerminimum=1; maximum=100; default=5
database.connect_timeoutA13N_DATABASE__CONNECT_TIMEOUTintegerminimum=1; maximum=60; default=5
database.statement_timeoutA13N_DATABASE__STATEMENT_TIMEOUTintegerminimum=1; maximum=300; default=10
database.migration_advisory_lock_timeoutA13N_DATABASE__MIGRATION_ADVISORY_LOCK_TIMEOUTintegerminimum=1; maximum=3600; default=900
database.migration_lock_timeoutA13N_DATABASE__MIGRATION_LOCK_TIMEOUTintegerminimum=1; maximum=60; default=3
database.migration_statement_timeoutA13N_DATABASE__MIGRATION_STATEMENT_TIMEOUTintegerminimum=1; maximum=3600; default=900
database.migration_idle_transaction_timeoutA13N_DATABASE__MIGRATION_IDLE_TRANSACTION_TIMEOUTintegerminimum=1; maximum=300; default=30

objects

SettingEnvironment variableType / choicesConstraints and default
objects.backendA13N_OBJECTS__BACKEND"local", "s3"default="local"
objects.rootA13N_OBJECTS__ROOTstringformat="path"; default="var/service/objects"
objects.bucketA13N_OBJECTS__BUCKETstring or nulldefault=null
objects.prefixA13N_OBJECTS__PREFIXstringdefault=""
objects.endpoint_urlA13N_OBJECTS__ENDPOINT_URLstring or nulldefault=null
objects.path_styleA13N_OBJECTS__PATH_STYLEbooleandefault=false
objects.addressing_styleA13N_OBJECTS__ADDRESSING_STYLE"auto", "path", "virtual" or nulldefault=null
objects.regionA13N_OBJECTS__REGIONstring or nulldefault=null
objects.access_key_idA13N_OBJECTS__ACCESS_KEY_IDstring or nullformat="password"; default=null
objects.secret_access_keyA13N_OBJECTS__SECRET_ACCESS_KEYstring or nullformat="password"; default=null
objects.max_bytesA13N_OBJECTS__MAX_BYTESintegerminimum=65536; maximum=67108864; default=16777216
objects.timeoutA13N_OBJECTS__TIMEOUTnumbermaximum=60; exclusiveMinimum=0; default=5
objects.upload_bytesA13N_OBJECTS__UPLOAD_BYTESintegerminimum=1; maximum=33554432; default=1048576
objects.upload_limitA13N_OBJECTS__UPLOAD_LIMITintegerminimum=1; maximum=1000; default=60
objects.upload_window_secondsA13N_OBJECTS__UPLOAD_WINDOW_SECONDSintegerminimum=1; maximum=3600; default=60

redis

SettingEnvironment variableType / choicesConstraints and default
redis.urlA13N_REDIS__URLstringformat="password"; default="**********"
redis.timeoutA13N_REDIS__TIMEOUTnumbermaximum=30; exclusiveMinimum=0; default=2

auth

SettingEnvironment variableType / choicesConstraints and default
auth.session_secondsA13N_AUTH__SESSION_SECONDSintegerminimum=60; maximum=604800; default=43200
auth.login_limitA13N_AUTH__LOGIN_LIMITintegerminimum=1; maximum=1000; default=10
auth.login_window_secondsA13N_AUTH__LOGIN_WINDOW_SECONDSintegerminimum=1; maximum=3600; default=60
auth.invitation_secondsA13N_AUTH__INVITATION_SECONDSintegerminimum=3600; maximum=2592000; default=604800
auth.link_secondsA13N_AUTH__LINK_SECONDSintegerminimum=300; maximum=86400; default=3600
auth.expiry_scan_secondsA13N_AUTH__EXPIRY_SCAN_SECONDSnumbermaximum=3600; exclusiveMinimum=0; default=60
auth.mail.smtp_hostA13N_AUTH__MAIL (JSON field smtp_host)string or nullmaxLength=253; default=null
auth.mail.smtp_portA13N_AUTH__MAIL (JSON field smtp_port)integerminimum=1; maximum=65535; default=587
auth.mail.smtp_securityA13N_AUTH__MAIL (JSON field smtp_security)"starttls", "tls"default="starttls"
auth.mail.smtp_usernameA13N_AUTH__MAIL (JSON field smtp_username)string or nullmaxLength=320; default=null
auth.mail.smtp_passwordA13N_AUTH__MAIL (JSON field smtp_password)string or nullformat="password"; default=null
auth.mail.senderA13N_AUTH__MAIL (JSON field sender)string or nullmaxLength=320; default=null
auth.mail.timeoutA13N_AUTH__MAIL (JSON field timeout)numbermaximum=60; exclusiveMinimum=0; default=10

encryption

SettingEnvironment variableType / choicesConstraints and default
encryption.active_key_idA13N_ENCRYPTION__ACTIVE_KEY_IDstring or nullminLength=1; maxLength=128; default=null
encryption.keysA13N_ENCRYPTION__KEYSobject—
encryption.key_fileA13N_ENCRYPTION__KEY_FILEstring or nullformat="path"; default=null

control

SettingEnvironment variableType / choicesConstraints and default
control.scan_secondsA13N_CONTROL__SCAN_SECONDSnumbermaximum=60; exclusiveMinimum=0; default=1
control.sweep_batchA13N_CONTROL__SWEEP_BATCHintegerminimum=1; maximum=10000; default=100
control.inbox_countA13N_CONTROL__INBOX_COUNTintegerminimum=1; maximum=10000; default=128
control.inbox_bytesA13N_CONTROL__INBOX_BYTESintegerminimum=1024; maximum=16777216; default=2097152
control.subscriptionsA13N_CONTROL__SUBSCRIPTIONSintegerminimum=1; maximum=1000; default=32
control.webhook_timeoutA13N_CONTROL__WEBHOOK_TIMEOUTnumbermaximum=30; exclusiveMinimum=0; default=10
control.import_timeoutA13N_CONTROL__IMPORT_TIMEOUTnumbermaximum=120; exclusiveMinimum=0; default=30
control.stream_refresh_secondsA13N_CONTROL__STREAM_REFRESH_SECONDSnumbermaximum=60; exclusiveMinimum=0; default=2

outbox

SettingEnvironment variableType / choicesConstraints and default
outbox.purge_interval_secondsA13N_OUTBOX__PURGE_INTERVAL_SECONDSnumbermaximum=3600; exclusiveMinimum=0; default=60
outbox.purge_batchA13N_OUTBOX__PURGE_BATCHintegerminimum=1; maximum=10000; default=1000
outbox.purge_budget_secondsA13N_OUTBOX__PURGE_BUDGET_SECONDSnumbermaximum=60; exclusiveMinimum=0; default=5
outbox.defaults.delivered_retention_secondsA13N_OUTBOX__DEFAULTS (JSON field delivered_retention_seconds)integerminimum=1; maximum=31536000; default=86400
outbox.defaults.dead_retention_secondsA13N_OUTBOX__DEFAULTS (JSON field dead_retention_seconds)integerminimum=1; maximum=31536000; default=1209600
outbox.defaults.max_attemptsA13N_OUTBOX__DEFAULTS (JSON field max_attempts)integerminimum=1; maximum=100; default=12
outbox.defaults.batchA13N_OUTBOX__DEFAULTS (JSON field batch)integerminimum=1; maximum=1000; default=32
outbox.defaults.parallelA13N_OUTBOX__DEFAULTS (JSON field parallel)integerminimum=1; maximum=128; default=8
outbox.defaults.lease_secondsA13N_OUTBOX__DEFAULTS (JSON field lease_seconds)numberminimum=10; maximum=600; default=60
outbox.defaults.backlog_countA13N_OUTBOX__DEFAULTS (JSON field backlog_count)integerminimum=1; maximum=1000000; default=10000
outbox.defaults.backlog_age_secondsA13N_OUTBOX__DEFAULTS (JSON field backlog_age_seconds)numbermaximum=86400; exclusiveMinimum=0; default=300
outbox.defaults.backlog_alert_secondsA13N_OUTBOX__DEFAULTS (JSON field backlog_alert_seconds)numbermaximum=86400; exclusiveMinimum=0; default=300
outbox.by_kindA13N_OUTBOX__BY_KINDobject—

worker

SettingEnvironment variableType / choicesConstraints and default
worker.slotsA13N_WORKER__SLOTSintegerminimum=1; maximum=128; default=4
worker.max_attemptsA13N_WORKER__MAX_ATTEMPTSintegerminimum=1; maximum=20; default=3
worker.lease_secondsA13N_WORKER__LEASE_SECONDSintegerminimum=3; maximum=300; default=30
worker.scan_secondsA13N_WORKER__SCAN_SECONDSnumbermaximum=30; exclusiveMinimum=0; default=1
worker.authority_secondsA13N_WORKER__AUTHORITY_SECONDSnumbermaximum=30; exclusiveMinimum=0; default=1
worker.drain_secondsA13N_WORKER__DRAIN_SECONDSnumbermaximum=300; exclusiveMinimum=0; default=10
worker.delivery_countA13N_WORKER__DELIVERY_COUNTintegerminimum=1; maximum=128; default=8
worker.delivery_bytesA13N_WORKER__DELIVERY_BYTESintegerminimum=1024; maximum=16777216; default=262144
worker.output_bytesA13N_WORKER__OUTPUT_BYTESintegerminimum=1024; maximum=16777216; default=1048576
worker.page_itemsA13N_WORKER__PAGE_ITEMSintegerminimum=16; maximum=4096; default=256
worker.page_bytesA13N_WORKER__PAGE_BYTESintegerminimum=65536; maximum=16777216; default=1048576
worker.content_bytesA13N_WORKER__CONTENT_BYTESintegerminimum=1024; maximum=16777216; default=65536
worker.compression_levelA13N_WORKER__COMPRESSION_LEVELintegerminimum=1; maximum=19; default=3
worker.stream_lengthA13N_WORKER__STREAM_LENGTHintegerminimum=16; maximum=100000; default=10000
worker.stream_ttlA13N_WORKER__STREAM_TTLintegerminimum=1; maximum=86400; default=600
worker.stream_coalesce_secondsA13N_WORKER__STREAM_COALESCE_SECONDSnumberminimum=0; maximum=1; default=0.1
worker.stream_trim_secondsA13N_WORKER__STREAM_TRIM_SECONDSnumberminimum=0; maximum=600; default=10
worker.child_depthA13N_WORKER__CHILD_DEPTHintegerminimum=0; maximum=16; default=4
worker.child_countA13N_WORKER__CHILD_COUNTintegerminimum=0; maximum=256; default=16

environments

SettingEnvironment variableType / choicesConstraints and default
environments.scan_secondsA13N_ENVIRONMENTS__SCAN_SECONDSnumbermaximum=300; exclusiveMinimum=0; default=5
environments.batchA13N_ENVIRONMENTS__BATCHintegerminimum=1; maximum=1000; default=16
environments.operation_secondsA13N_ENVIRONMENTS__OPERATION_SECONDSnumbermaximum=3600; exclusiveMinimum=0; default=120
environments.renewal_secondsA13N_ENVIRONMENTS__RENEWAL_SECONDSnumbermaximum=60; exclusiveMinimum=0; default=20
environments.wait_secondsA13N_ENVIRONMENTS__WAIT_SECONDSnumbermaximum=3600; exclusiveMinimum=0; default=300
environments.managed_countA13N_ENVIRONMENTS__MANAGED_COUNTintegerminimum=1; maximum=100000; default=100
environments.docker_hostA13N_ENVIRONMENTS__DOCKER_HOSTstring or nullminLength=1; maxLength=2048; default=null
environments.docker_mount_rootsA13N_ENVIRONMENTS__DOCKER_MOUNT_ROOTSarray of stringmaxItems=64; default=[]

provisioning

SettingEnvironment variableType / choicesConstraints and default
provisioning.local.enabledA13N_PROVISIONING__LOCAL (JSON field enabled)booleandefault=false
provisioning.local.rootA13N_PROVISIONING__LOCAL (JSON field root)string or nullformat="path"; default=null
provisioning.docker.enabledA13N_PROVISIONING__DOCKER (JSON field enabled)booleandefault=false
provisioning.docker.imageA13N_PROVISIONING__DOCKER (JSON field image)string or nullminLength=1; maxLength=1024; default=null
provisioning.docker.pull_policyA13N_PROVISIONING__DOCKER (JSON field pull_policy)"never", "if_missing"default="if_missing"

memory

SettingEnvironment variableType / choicesConstraints and default
memory.max_file_bytesA13N_MEMORY__MAX_FILE_BYTESintegerminimum=1024; maximum=1048576; default=65536
memory.revisions_per_fileA13N_MEMORY__REVISIONS_PER_FILEintegerminimum=1; maximum=1000; default=10
memory.max_total_bytesA13N_MEMORY__MAX_TOTAL_BYTESintegerminimum=65536; maximum=1073741824; default=33554432
memory.mounts_per_threadA13N_MEMORY__MOUNTS_PER_THREADintegerminimum=1; maximum=32; default=8
memory.guide_bytesA13N_MEMORY__GUIDE_BYTESintegerminimum=256; maximum=65536; default=4096
memory.context_bytesA13N_MEMORY__CONTEXT_BYTESintegerminimum=1024; maximum=1048576; default=32768
memory.always_load_bytesA13N_MEMORY__ALWAYS_LOAD_BYTESintegerminimum=0; maximum=1048576; default=8192
memory.description_charsA13N_MEMORY__DESCRIPTION_CHARSintegerminimum=1; maximum=1000; default=200
memory.frontmatter_bytesA13N_MEMORY__FRONTMATTER_BYTESintegerminimum=128; maximum=16384; default=2048
memory.path_bytesA13N_MEMORY__PATH_BYTESintegerminimum=16; maximum=1024; default=256
memory.write_retriesA13N_MEMORY__WRITE_RETRIESintegerminimum=0; maximum=10; default=3
memory.recall_limitA13N_MEMORY__RECALL_LIMITintegerminimum=1; maximum=50; default=5
memory.recall_bytesA13N_MEMORY__RECALL_BYTESintegerminimum=512; maximum=65536; default=8192
memory.recall_secondsA13N_MEMORY__RECALL_SECONDSnumbermaximum=30; exclusiveMinimum=0; default=2
memory.record_charsA13N_MEMORY__RECORD_CHARSintegerminimum=1; maximum=8000; default=8000
memory.default_guide.fileA13N_MEMORY__DEFAULT_GUIDE (JSON field file)string or nullmaxLength=65536; default=null
memory.default_guide.recordA13N_MEMORY__DEFAULT_GUIDE (JSON field record)string or nullmaxLength=65536; default=null

providers

SettingEnvironment variableType / choicesConstraints and default
providers.http_originsA13N_PROVIDERS__HTTP_ORIGINSarray of stringdefault=[]
providers.require_httpsA13N_PROVIDERS__REQUIRE_HTTPSbooleandefault=true
providers.return_urlsA13N_PROVIDERS__RETURN_URLSarray of stringdefault=[]
providers.mcp_serversA13N_PROVIDERS__MCP_SERVERSarray of objectdefault=[]
providers.flow_secondsA13N_PROVIDERS__FLOW_SECONDSintegerminimum=30; maximum=1800; default=600
providers.operation_secondsA13N_PROVIDERS__OPERATION_SECONDSnumberminimum=2; maximum=30; default=10
providers.operation_scan_secondsA13N_PROVIDERS__OPERATION_SCAN_SECONDSnumbermaximum=3600; exclusiveMinimum=0; default=30
providers.discovery_ttlA13N_PROVIDERS__DISCOVERY_TTLintegerminimum=1; maximum=86400; default=300
providers.tool_call_secondsA13N_PROVIDERS__TOOL_CALL_SECONDSnumbermaximum=600; exclusiveMinimum=0; default=60
providers.model_timeoutA13N_PROVIDERS__MODEL_TIMEOUTnumbermaximum=3600; exclusiveMinimum=0; default=300
providers.response_bytesA13N_PROVIDERS__RESPONSE_BYTESintegerminimum=65536; maximum=268435456; default=16777216
providers.chatgpt_client_idA13N_PROVIDERS__CHATGPT_CLIENT_IDstring or nullminLength=1; maxLength=256; default=null
providers.chatgpt_redirect_uriA13N_PROVIDERS__CHATGPT_REDIRECT_URIstringmaxLength=2048; default="http://127.0.0.1:1456/auth/callback"

plugins

SettingEnvironment variableType / choicesConstraints and default
plugins.keysA13N_PLUGINS__KEYSarray of stringdefault=[]

composer

SettingEnvironment variableType / choicesConstraints and default
composer.modelsA13N_COMPOSER__MODELSarray of stringdefault=["gpt-5.6-luna", "claude-sonnet-5", "deepseek-v4.1-flash", "gemini-3.8-flash"]

telemetry

SettingEnvironment variableType / choicesConstraints and default
telemetry.log_levelA13N_TELEMETRY__LOG_LEVEL"DEBUG", "INFO", "WARNING", "ERROR"default="INFO"
telemetry.log_formatA13N_TELEMETRY__LOG_FORMAT"pretty", "json"default="json"
telemetry.log_stdoutA13N_TELEMETRY__LOG_STDOUTbooleandefault=true
telemetry.log_fileA13N_TELEMETRY__LOG_FILEstring or nullformat="path"; default=null
telemetry.log_file_max_mbA13N_TELEMETRY__LOG_FILE_MAX_MBintegerminimum=1; maximum=10240; default=100
telemetry.log_file_backupsA13N_TELEMETRY__LOG_FILE_BACKUPSintegerminimum=1; maximum=100; default=5
telemetry.metrics_portA13N_TELEMETRY__METRICS_PORTinteger or nullminimum=1; maximum=65535; default=null
telemetry.trace_backendA13N_TELEMETRY__TRACE_BACKEND"none", "langfuse", "logfire"default="none"
telemetry.trace_urlA13N_TELEMETRY__TRACE_URLstring or nullmaxLength=2048; pattern="^https?://[^\\s?#@]+$"; default=null
telemetry.langfuse_public_keyA13N_TELEMETRY__LANGFUSE_PUBLIC_KEYstring or nullmaxLength=256; default=null
telemetry.langfuse_secret_keyA13N_TELEMETRY__LANGFUSE_SECRET_KEYstring or nullformat="password"; default=null
telemetry.logfire_write_tokenA13N_TELEMETRY__LOGFIRE_WRITE_TOKENstring or nullformat="password"; default=null
telemetry.logfire_read_tokenA13N_TELEMETRY__LOGFIRE_READ_TOKENstring or nullformat="password"; default=null
telemetry.trace_contentA13N_TELEMETRY__TRACE_CONTENT"none", "standard", "full"default="standard"
telemetry.trace_query_timeoutA13N_TELEMETRY__TRACE_QUERY_TIMEOUTnumbermaximum=60; exclusiveMinimum=0; default=10

On this page