Configuration Options Reference¶

Every 3LC configuration option, grouped by category. Each option lists every surface through which it can be set or read: the YAML config-file key, the environment variable, the CLI argument (where applicable), and the Python attribute on Configuration.

Internal options (those flagged cli_visible=False and serializable=False) are omitted — they are framework-internal flags set automatically at process startup.

Top-level options¶

Top-level options accessible directly on Configuration.

config.aliases¶

URL alias definitions for path shortcuts.

Dictionary mapping alias names to target paths/URLs. Aliases are used with angle brackets in URLs: <ALIAS_NAME>/path/to/file.

Individual aliases can also be set through environment variables of the form TLC_ALIAS_=, e.g. TLC_ALIAS_DATASETS=/data/datasets.

Example: aliases: DATASETS: /data/datasets MODELS: s3://bucket/models

  • Config key: aliases

  • Environment variable: TLC_ALIAS_([A-Z][A-Z0-9_]*)

  • Python attribute: config.aliases

  • Default: {}

config.api_key¶

API key for cloud/SaaS authentication.

  • Config key: api-key

  • Environment variable: TLC_API_KEY

  • CLI argument: --api-key

  • Python attribute: config.api_key

  • Default: ''

  • Serialized to config file: no (credentials / runtime-only state)

config.display_progress¶

Whether to display progress bars.

  • Config key: display-progress

  • Environment variable: TLC_DISPLAY_PROGRESS

  • CLI argument: --display-progress

  • Python attribute: config.display_progress

  • Default: True

config.license¶

Specify license or license file.

The option can either be the license key or point to a local file containing the license key. Required for on-prem deployments.

  • Config key: license

  • Environment variable: TLC_LICENSE

  • CLI argument: --license

  • Python attribute: config.license

  • Default: ''

  • Serialized to config file: no (credentials / runtime-only state)

config.license_server¶

Base URL of a customer-local license server (LexFloatServer).

When set, license mode leases an on-premise floating license from this server instead of validating a license key. For deployments whose machines cannot reach the hosted licensing service.

  • Config key: license-server

  • Environment variable: TLC_LICENSE_SERVER

  • CLI argument: --license-server

  • Python attribute: config.license_server

  • Default: ''

config.project_root_url¶

Location for reading and writing 3LC project data.

This option is mandatory and must point to a location with write access. Supports local paths and remote URLs (s3://, gs://, az://). Environment variables and ~ are expanded. The location will be created if needed.

  • Config key: project-root-url

  • Environment variable: TLC_PROJECT_ROOT_URL

    • Legacy aliases (honored with a deprecation warning): TLC_CONFIG_PROJECT_ROOT_URL

  • CLI argument: --project-root-url

  • Python attribute: config.project_root_url

  • Default: computed at runtime

  • Required: yes

config.scan_urls¶

Locations to scan for 3LC objects.

Each entry can be a plain URL string (defaults to layout: project) or a dict with explicit attributes:

scan-urls: # Plain string — scanned as a project tree - s3://bucket/projects - /local/projects

# Dict with explicit layout
- url: /local/loose-objects
  layout: flat

# Full control
- url: /data/tables-only
  layout: flat
  object_type: table

Supported layout values: “project” (recursive project scan), “flat” (single directory). Supported object_type values: “table”, “run” (omit to scan for all types).

The TLC_SCAN_URLS environment variable accepts a comma-separated list of URL strings.

Mutations to scan-urls are safe from any thread and take effect on the indexer’s next synchronous URL query, or immediately when an explicit reconcile is requested.

  • Config key: scan-urls

  • Environment variable: TLC_SCAN_URLS

    • Legacy aliases (honored with a deprecation warning): TLC_CONFIG_PROJECT_SCAN_URLS

  • Python attribute: config.scan_urls

  • Default: []

Logging (config.logging.*)¶

Options governing the 3LC logger.

config.logging.file¶

Log file path for the 3LC logger.

The directory will be created if it does not exist. Environment variables and ~ are expanded. Must be a local filesystem path (remote URLs not allowed).

  • Config key: logging.file

  • Environment variable: TLC_LOG_FILE

    • Legacy aliases (honored with a deprecation warning): TLC_LOGFILE

  • CLI argument: --log-file

  • Python attribute: config.logging.file

  • Default: computed at runtime

config.logging.level¶

Log level for the 3LC logger.

Standard Python logging levels:

  • DEBUG: Detailed diagnostic information

  • INFO: Confirmation that things are working

  • WARNING: Unexpected events (default)

  • ERROR: Serious problems

  • CRITICAL: Program may not continue

  • Config key: logging.level

  • Environment variable: TLC_LOG_LEVEL

    • Legacy aliases (honored with a deprecation warning): TLC_LOGLEVEL

  • CLI argument: --log-level

  • Python attribute: config.logging.level

  • Default: 'WARNING'

  • Choices: 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'

Indexing (config.indexing.*)¶

Options governing the indexer scan cadence and timestamp debouncing.

config.indexing.backoff_multiplier¶

Scales transient-class retry cadences in the indexer’s failed-URL skip store.

The Rust indexer skips URLs that fail in characteristic ways (network blips, timeouts, list-time NotFound races) and retries them after a per-reason backoff. This multiplier scales the transient cadences (NetworkError, Timeout, RaceNotFound) — set above 1.0 on slow networks where 10s/30s/60s is too tight; set below 1.0 for tight dev loops where you want faster retries.

Terminal cadences (PermissionDenied 1h, MalformedContent 6h, UnregisteredType never) are NOT affected by this multiplier: they’re operator-action-bound, so tuning the retry rate doesn’t change recovery time.

  • Config key: indexing.backoff-multiplier

  • Environment variable: TLC_INDEXER_BACKOFF_MULTIPLIER

  • Python attribute: config.indexing.backoff_multiplier

  • Default: 1.0

config.indexing.debounce_backoff_max_level¶

Maximum backoff level for timestamp debouncing.

This option is accepted for configuration compatibility but is not consulted by the indexer.

  • Config key: indexing.debounce-backoff-max-level

  • Environment variable: TLC_INDEXING_DEBOUNCE_BACKOFF_MAX_LEVEL

    • Legacy aliases (honored with a deprecation warning): TLC_INDEXING_TIMESTAMP_DEBOUNCE_BACKOFF_MAX_LEVEL

  • Python attribute: config.indexing.debounce_backoff_max_level

  • Default: 0

config.indexing.debounce_backoff_multiplier¶

Multiplier for timestamp debounce backoff.

This option is accepted for configuration compatibility but is not consulted by the indexer.

  • Config key: indexing.debounce-backoff-multiplier

  • Environment variable: TLC_INDEXING_DEBOUNCE_BACKOFF_MULTIPLIER

    • Legacy aliases (honored with a deprecation warning): TLC_INDEXING_TIMESTAMP_DEBOUNCE_BACKOFF_MULTIPLIER

  • Python attribute: config.indexing.debounce_backoff_multiplier

  • Default: 1.2

config.indexing.debounce_backoff_threshold¶

Threshold for timestamp debouncing.

This option is accepted for configuration compatibility but is not consulted by the indexer.

  • Config key: indexing.debounce-backoff-threshold

  • Environment variable: TLC_INDEXING_DEBOUNCE_BACKOFF_THRESHOLD

    • Legacy aliases (honored with a deprecation warning): TLC_INDEXING_TIMESTAMP_DEBOUNCE_BACKOFF_THRESHOLD

  • Python attribute: config.indexing.debounce_backoff_threshold

  • Default: 2

config.indexing.debounce_interval¶

Initial debounce interval for timestamp-file writing.

This option is accepted for configuration compatibility but is not consulted by the indexer.

  • Config key: indexing.debounce-interval

  • Environment variable: TLC_INDEXING_DEBOUNCE_INTERVAL

    • Legacy aliases (honored with a deprecation warning): TLC_INDEXING_TIMESTAMP_DEBOUNCE_INTERVAL

  • Python attribute: config.indexing.debounce_interval

  • Default: 2.0

config.indexing.scan_interval¶

The interval between indexer scans for new objects.

This option governs the overall responsiveness of the indexing system. The setting specifies how frequently (in seconds) the indexer will check for new or modified objects in the configured scan locations.

  • Config key: indexing.scan-interval

  • Environment variable: TLC_INDEXING_SCAN_INTERVAL

  • Python attribute: config.indexing.scan_interval

  • Default: 10.0

Extensions (config.extensions.*)¶

Lists of external classes loaded at service startup (URL adapters, sample types, exporters).

config.extensions.exporters¶

Custom exporters to load on startup.

A list of dictionaries specifying custom exporter classes to load. Each dictionary should contain:

  • module: The fully qualified module name

  • class: The exporter class name

  • kwargs (optional): Constructor arguments

  • force (optional): If true, override an existing format

  • Config key: extensions.exporters

  • Python attribute: config.extensions.exporters

  • Default: []

config.extensions.sample_types¶

Custom sample types to load on startup.

A list of dictionaries specifying custom sample type classes to load. Each dictionary should contain:

  • module: The fully qualified module name

  • class: The sample type class name

  • name (optional): Registration name (defaults to the class name)

  • force (optional): If true, override an existing sample type with the same name

  • Config key: extensions.sample-types

  • Python attribute: config.extensions.sample_types

  • Default: []

config.extensions.url_adapters¶

Custom URL adapters to load on startup.

A list of dictionaries specifying custom URL adapter classes to load. Each dictionary should contain:

  • module: The fully qualified module name

  • class: The adapter class name

  • kwargs (optional): Constructor arguments

Example:

extensions: url-adapters: - module: my.custom.adapters class: MyAdapter kwargs: some_arg: value

  • Config key: extensions.url-adapters

  • Python attribute: config.extensions.url_adapters

  • Default: []

Object Service (config.service.*)¶

Options for the Object Service server.

config.service.auth_secret¶

Shared secret for Dashboard/Object Service HMAC authentication.

Used by an on-prem Object Service to verify HMAC-signed requests from the Dashboard.

Not required when using an API key (which uses JWT authentication instead).

  • Config key: service.auth-secret

  • Environment variable: TLC_OBJECT_SERVICE_AUTH_SECRET

  • CLI argument: --auth-secret

  • Python attribute: config.service.auth_secret

  • Default: ''

  • Serialized to config file: no (credentials / runtime-only state)

config.service.cache.size¶

Maximum size in bytes for the in-memory object cache.

Setting the value to 0 will disable in-memory caching. Default: 1073741824 (1 GB)

  • Config key: service.cache.size

  • CLI argument: --cache-size

  • Python attribute: config.service.cache.size

  • Default: 1073741824

config.service.cache.timeout¶

Cache item time-to-live in seconds.

Setting the value to 0 will disable cache eviction based on time. Default: 3600 (1 hour)

  • Config key: service.cache.timeout

  • CLI argument: --cache-timeout

  • Python attribute: config.service.cache.timeout

  • Default: 3600

config.service.disable_external_media_urls¶

Disable external self-authenticated media URLs.

By default the service may resolve media URLs (images, videos, audio) used by the dashboard into external self-authenticated URLs (e.g. S3 presigned, GCS signed, Azure SAS) so the browser can fetch directly from cloud storage. When this option is set, all such media URLs are instead served through this service via a token-authenticated proxy endpoint.

This is useful when the machine running the service can access the cloud storage but the machine(s) used to run the dashboard webapp cannot or should not do so.

  • Config key: service.disable-external-media-urls

  • Environment variable: TLC_SERVICE_DISABLE_EXTERNAL_MEDIA_URLS

  • CLI argument: --disable-external-media-urls

  • Python attribute: config.service.disable_external_media_urls

  • Default: False

config.service.host¶

Host address for the Object Service server.

  • Config key: service.host

  • Environment variable: TLC_SERVICE_HOST

  • CLI argument: --host

  • Python attribute: config.service.host

  • Default: '127.0.0.1'

config.service.port¶

Port for the Object Service server.

  • Config key: service.port

  • Environment variable: TLC_SERVICE_PORT

  • CLI argument: --port

  • Python attribute: config.service.port

  • Default: 5015

config.service.watch_folders¶

Enable the watch service to monitor folders for external changes.

When enabled, the watch service monitors configured local folders and automatically updates timestamp files when changes are detected. Useful for monitoring changes made by processes outside of 3LC.

WARNING: Avoid monitoring mounted folders (FUSE mounts, cloud storage mounts) as they may cause performance issues or unexpected behavior.

  • Config key: service.watch-folders

  • CLI argument: --watch-local-folders

  • Python attribute: config.service.watch_folders

  • Default: False