Skip to content

Datastore and queues configuration

This reference reflects Onetime Secret v0.26.19 (e98a88c9).

config file: redis

config: redis.uri

Redis/Valkey connection URI - Compatible with Redis, Valkey, and other
Redis-compatible servers.

Environment Variable Precedence (highest to lowest):
  1. VALKEY_URL or REDIS_URL - Explicit connection string
  2. IN_DOCKER=1 - Force Docker configuration (redis://host.docker.internal:6379)
  3. AUTO_DETECT_DOCKER=1 - Enable automatic Docker detection via /.dockerenv file
  4. Default - Local development (redis://CHANGEME@127.0.0.1:6379)

Format: redis://[:password@]host[:port]/[db-number]
Examples:
  - redis://mypassword@localhost:6379       # Simple password auth
  - redis://user:pass@localhost:6379        # Username/password auth
  - redis://host.docker.internal:6379       # Docker environment
  - redis://127.0.0.1:6379                  # Local development
ShapeValueEnvironment variablesWhen unsetSinceSource
runtime-defineddetermined at run timenonedetermined at run timenot annotatedetc/defaults/config.defaults.yaml:1391-1397
ENV['VALKEY_URL'] ||
        ENV['REDIS_URL'] ||
        (ENV['IN_DOCKER'] == '1' || (ENV['AUTO_DETECT_DOCKER'] == '1' && File.exist?('/.dockerenv')) ?
          'redis://host.docker.internal:6379' :
          'redis://CHANGEME@127.0.0.1:6379')

config: redis.require_tls

Require TLS to the datastore (RISK-2026-08-14-L07). When true, boot
refuses to start unless the URI above uses rediss:// or valkeys:// (with
no `ssl` query parameter, which would override the scheme), whatever the
host. When false (the default, so existing deployments keep booting), a
plaintext URI is reported once at boot, graded by where the host is:
  - a dotted hostname or public IP: a WARNING — the datastore password,
    session data and secrets would cross the network unencrypted;
  - a single-label name (a compose service such as `maindb`) or a private,
    CGNAT or link-local IP (RFC 1918, 100.64/10, 169.254/16, fc00::/7,
    fe80::/10): an INFO line, so the default compose stack does not warn
    on every boot;
  - loopback or a unix socket: nothing.
The host graded is the one the client connects to, including a `host` or
`path` query parameter. Hostnames are never resolved. Set
VALKEY_REQUIRE_TLS=true or REDIS_REQUIRE_TLS=true (either one enables it).
See lib/onetime/initializers/configure_familia.rb.
Since unreleased
ShapeValueEnvironment variablesWhen unsetSinceSource
booleanno valueVALKEY_REQUIRE_TLS, REDIS_REQUIRE_TLSfalsenot annotatedetc/defaults/config.defaults.yaml:1415

config: redis.dbs.custom_domain

ShapeValueEnvironment variablesWhen unsetSinceSource
string0VALKEY_DBS_CUSTOM_DOMAIN, REDIS_DBS_CUSTOM_DOMAINthe value abovenot annotatedetc/defaults/config.defaults.yaml:1422

config: redis.dbs.customer

ShapeValueEnvironment variablesWhen unsetSinceSource
string0VALKEY_DBS_CUSTOMER, REDIS_DBS_CUSTOMERthe value abovenot annotatedetc/defaults/config.defaults.yaml:1423

config: redis.dbs.metadata

ShapeValueEnvironment variablesWhen unsetSinceSource
string0VALKEY_DBS_METADATA, REDIS_DBS_METADATAthe value abovenot annotatedetc/defaults/config.defaults.yaml:1424

config: redis.dbs.secret

ShapeValueEnvironment variablesWhen unsetSinceSource
string0VALKEY_DBS_SECRET, REDIS_DBS_SECRETthe value abovenot annotatedetc/defaults/config.defaults.yaml:1425

config: redis.dbs.feedback

ShapeValueEnvironment variablesWhen unsetSinceSource
string0VALKEY_DBS_FEEDBACK, REDIS_DBS_FEEDBACKthe value abovenot annotatedetc/defaults/config.defaults.yaml:1426

config file: jobs

config: jobs.enabled

Global toggle for background job system
ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalseJOBS_ENABLEDfalsev0.24.0etc/defaults/config.defaults.yaml:1661

config: jobs.rabbitmq_url

RabbitMQ connection URL
Format: amqp://[user:password@]host[:port][/vhost]

The vhost dev doesn't exist in RabbitMQ. Either create it:

 rabbitmqctl add_vhost dev
 rabbitmqctl set_permissions -p dev guest ".*" ".*" ".*"
ShapeValueEnvironment variablesWhen unsetSinceSource
stringamqp://guest:guest@localhost:5672/devRABBITMQ_URLthe value abovev0.24.0etc/defaults/config.defaults.yaml:1671

config: jobs.channel_pool_size

Publisher settings (Puma process)
Channel pool size for multi-threaded web server
ShapeValueEnvironment variablesWhen unsetSinceSource
integer5RABBITMQ_CHANNEL_POOL_SIZEthe value abovev0.24.0etc/defaults/config.defaults.yaml:1675

config: jobs.fallback_to_sync

Fallback to synchronous delivery when RabbitMQ unavailable
Recommended: true for production to ensure emails always send
ShapeValueEnvironment variablesWhen unsetSinceSource
booleanno valueJOBS_FALLBACK_SYNCtruev0.24.0etc/defaults/config.defaults.yaml:1679

config: jobs.workers.email.threads

ShapeValueEnvironment variablesWhen unsetSinceSource
integer4EMAIL_WORKER_THREADSthe value abovev0.24.0etc/defaults/config.defaults.yaml:1684

config: jobs.workers.email.prefetch

ShapeValueEnvironment variablesWhen unsetSinceSource
integer10EMAIL_WORKER_PREFETCHthe value abovev0.24.0etc/defaults/config.defaults.yaml:1685

config: jobs.workers.notifications.threads

ShapeValueEnvironment variablesWhen unsetSinceSource
integer2NOTIFICATION_WORKER_THREADSthe value abovev0.24.0etc/defaults/config.defaults.yaml:1687

config: jobs.workers.notifications.prefetch

ShapeValueEnvironment variablesWhen unsetSinceSource
integer5NOTIFICATION_WORKER_PREFETCHthe value abovev0.24.0etc/defaults/config.defaults.yaml:1688

config: jobs.workers.billing.threads

ShapeValueEnvironment variablesWhen unsetSinceSource
integer2BILLING_WORKER_THREADSthe value abovev0.24.0etc/defaults/config.defaults.yaml:1690

config: jobs.workers.billing.prefetch

ShapeValueEnvironment variablesWhen unsetSinceSource
integer5BILLING_WORKER_PREFETCHthe value abovev0.24.0etc/defaults/config.defaults.yaml:1691

config: jobs.scheduler.enabled

ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalseJOBS_SCHEDULER_ENABLEDfalsev0.24.0etc/defaults/config.defaults.yaml:1695

config: jobs.plan_cache_refresh.enabled

ShapeValueEnvironment variablesWhen unsetSinceSource
booleantruenonethe value above is the shipped defaultv0.26.0etc/defaults/config.defaults.yaml:1703

config: jobs.catalog_retry.enabled

ShapeValueEnvironment variablesWhen unsetSinceSource
booleantruenonethe value above is the shipped defaultv0.26.0etc/defaults/config.defaults.yaml:1712

config: jobs.dlq_consumer.enabled

ShapeValueEnvironment variablesWhen unsetSinceSource
booleantruenonethe value above is the shipped defaultv0.26.0etc/defaults/config.defaults.yaml:1719

config: jobs.domain_refresh.enabled

ShapeValueEnvironment variablesWhen unsetSinceSource
booleantruenonethe value above is the shipped defaultv0.25.2etc/defaults/config.defaults.yaml:1727

config: jobs.domain_refresh.check_interval

How often to refresh (rufus-scheduler interval)
ShapeValueEnvironment variablesWhen unsetSinceSource
string30mnonethe value above is the shipped defaultv0.25.2etc/defaults/config.defaults.yaml:1729

config: jobs.domain_refresh.batch_size

Maximum domains processed per run (rate limiting)
ShapeValueEnvironment variablesWhen unsetSinceSource
integer200nonethe value above is the shipped defaultv0.25.2etc/defaults/config.defaults.yaml:1731

config: jobs.domain_refresh.dns_propagation_window

Seconds to pause between domains within a run. Leave unset to use the
validation strategy's own pacing (approximated: 0.5 for its API rate
cap; caddy_on_demand and passthrough: none). Any number, including 0,
overrides the strategy.
rate_limit: 0.5  # Since v0.25.2
DNS-propagation warm-up: domains created within this window that are
still not fully verified (verified=false OR resolving=false) fill any
capacity left after the paged walk, without exceeding batch_size.
Set to '0' to disable.
ShapeValueEnvironment variablesWhen unsetSinceSource
string24hnonethe value above is the shipped defaultv0.26.14etc/defaults/config.defaults.yaml:1741

config: jobs.expiration_warnings.enabled

Enable/disable expiration warning emails
ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1747

config: jobs.expiration_warnings.check_interval

How often to scan for expiring secrets (rufus-scheduler interval)
ShapeValueEnvironment variablesWhen unsetSinceSource
string1hnonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1749

config: jobs.expiration_warnings.warning_hours

Warn once a secret is within N hours of expiring. The warning is sent on
the next scan, so it arrives between N and (N - check_interval) hours
before expiry.
ShapeValueEnvironment variablesWhen unsetSinceSource
integer24nonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1753

config: jobs.expiration_warnings.min_ttl_hours

Only warn for secrets with TTL greater than this (hours)
Prevents spamming for short-lived secrets
ShapeValueEnvironment variablesWhen unsetSinceSource
integer48nonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1756

config: jobs.expiration_warnings.batch_size

Maximum warnings to process per job run (rate limiting)
Prevents queue overflow; remaining secrets processed in next run
ShapeValueEnvironment variablesWhen unsetSinceSource
integer100nonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1759

config: jobs.favicon_fetch.enabled

Feature flag — default ON (see #3780)
ShapeValueEnvironment variablesWhen unsetSinceSource
booleantruenonethe value above is the shipped defaultv0.26.0etc/defaults/config.defaults.yaml:1767

config: jobs.favicon_fetch.timeout

Seconds per HTTP fetch (connect + read)
ShapeValueEnvironment variablesWhen unsetSinceSource
integer5nonethe value above is the shipped defaultv0.26.0etc/defaults/config.defaults.yaml:1769

config: jobs.favicon_fetch.max_response_bytes

Response size ceiling in bytes (100 KB), streamed-enforced
ShapeValueEnvironment variablesWhen unsetSinceSource
integer102400nonethe value above is the shipped defaultv0.26.0etc/defaults/config.defaults.yaml:1771

config: jobs.favicon_fetch.max_redirects

Maximum redirects followed, each re-validated against the SSRF guard
ShapeValueEnvironment variablesWhen unsetSinceSource
integer3nonethe value above is the shipped defaultv0.26.0etc/defaults/config.defaults.yaml:1773

config: jobs.favicon_fetch.allowed_content_types[0]

ShapeValueEnvironment variablesWhen unsetSinceSource
stringimage/x-iconnonethe value above is the shipped defaultnot annotatedetc/defaults/config.defaults.yaml:1778

config: jobs.favicon_fetch.allowed_content_types[1]

ShapeValueEnvironment variablesWhen unsetSinceSource
stringimage/vnd.microsoft.iconnonethe value above is the shipped defaultnot annotatedetc/defaults/config.defaults.yaml:1779

config: jobs.favicon_fetch.allowed_content_types[2]

ShapeValueEnvironment variablesWhen unsetSinceSource
stringimage/pngnonethe value above is the shipped defaultnot annotatedetc/defaults/config.defaults.yaml:1780

config: jobs.favicon_backfill.enabled

Feature flag — default OFF
ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.26.0etc/defaults/config.defaults.yaml:1788

config: jobs.favicon_backfill.cron

Scan schedule (cron); nightly at 03:00 by default
ShapeValueEnvironment variablesWhen unsetSinceSource
string0 3 * * *nonethe value above is the shipped defaultv0.26.0etc/defaults/config.defaults.yaml:1790

config: jobs.favicon_backfill.batch_size

Domains loaded+scanned per page while paginating the full set
ShapeValueEnvironment variablesWhen unsetSinceSource
integer500nonethe value above is the shipped defaultv0.26.0etc/defaults/config.defaults.yaml:1792

config: jobs.favicon_backfill.max_attempts

Stop retrying a domain after this many terminal non-success attempts
ShapeValueEnvironment variablesWhen unsetSinceSource
integer6nonethe value above is the shipped defaultv0.26.0etc/defaults/config.defaults.yaml:1794

config: jobs.favicon_backfill.base_days

Backoff base in days (doubles each attempt: 1, 2, 4, 8, ...)
ShapeValueEnvironment variablesWhen unsetSinceSource
integer1nonethe value above is the shipped defaultv0.26.0etc/defaults/config.defaults.yaml:1796

config: jobs.favicon_backfill.cap_days

Backoff ceiling in days (the doubling never schedules further out than this)
ShapeValueEnvironment variablesWhen unsetSinceSource
integer30nonethe value above is the shipped defaultv0.26.0etc/defaults/config.defaults.yaml:1798

config: jobs.maintenance.enabled

Master toggle — disables all maintenance jobs when false
ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1806

config: jobs.maintenance.phantom_cleanup.enabled

ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1810

config: jobs.maintenance.phantom_cleanup.interval

ShapeValueEnvironment variablesWhen unsetSinceSource
string1hnonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1811

config: jobs.maintenance.phantom_cleanup.batch_size

ShapeValueEnvironment variablesWhen unsetSinceSource
integer500nonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1812

config: jobs.maintenance.phantom_cleanup.auto_repair

ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1813

config: jobs.maintenance.data_audit.enabled

ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1817

config: jobs.maintenance.data_audit.interval

ShapeValueEnvironment variablesWhen unsetSinceSource
string6hnonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1818

config: jobs.maintenance.data_audit.sample_size

ShapeValueEnvironment variablesWhen unsetSinceSource
integer100nonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1819

config: jobs.maintenance.participation_gc.enabled

ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1823

config: jobs.maintenance.participation_gc.cron

ShapeValueEnvironment variablesWhen unsetSinceSource
string0 5 * * *nonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1824

config: jobs.maintenance.participation_gc.batch_size

ShapeValueEnvironment variablesWhen unsetSinceSource
integer500nonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1825

config: jobs.maintenance.participation_gc.auto_repair

ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1826

config: jobs.maintenance.index_rebuild.enabled

ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1830

config: jobs.maintenance.index_rebuild.cron

ShapeValueEnvironment variablesWhen unsetSinceSource
string0 4 * * *nonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1831

config: jobs.maintenance.index_rebuild.auto_repair

ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1832

config: jobs.maintenance.instances_rebuild.enabled

ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1836

config: jobs.maintenance.instances_rebuild.cron

ShapeValueEnvironment variablesWhen unsetSinceSource
string0 3 * * 0nonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1837

config: jobs.maintenance.instances_rebuild.auto_repair

ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.24.0etc/defaults/config.defaults.yaml:1838

config: jobs.maintenance.housekeeping.enabled

ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.25.3etc/defaults/config.defaults.yaml:1844

config: jobs.maintenance.housekeeping.cron

ShapeValueEnvironment variablesWhen unsetSinceSource
string0 2 * * *nonethe value above is the shipped defaultv0.25.3etc/defaults/config.defaults.yaml:1845

config: jobs.maintenance.entitlement_materialize.enabled

ShapeValueEnvironment variablesWhen unsetSinceSource
booleanfalsenonethe value above is the shipped defaultv0.26.5etc/defaults/config.defaults.yaml:1855

config: jobs.maintenance.entitlement_materialize.cron

ShapeValueEnvironment variablesWhen unsetSinceSource
string0 3 * * *nonethe value above is the shipped defaultv0.26.5etc/defaults/config.defaults.yaml:1856