Skip to Content
Client Configuration

Client Configuration

This document describes the configuration options for the Spiral client.

Configuration can be set via:

  • File: ~/.spiral.toml
  • Environment variables: Prefixed with SPIRAL__ (double underscore)
  • Runtime overrides: Override values when initializing the client, using the dot notation

Caching

Spiral supports three independent caches for different file types:

  • keys_cache: Caches key space files. Recommended to enable for workloads with repeated key lookups.
  • manifests_cache: Caches manifest files. Recommended to enable for better query planning performance.
  • fragments_cache: Caches fragment (data) files. Not recommended to enable in most cases as fragments are typically very large and benefit less from caching.

Each cache can be independently configured with separate memory limits, disk capacity, and storage paths.

Top level

Main configuration for the Spiral client, that can affect many different parts of the client.

FieldDefaultEnvironment VariableDescription
file_formatvortexSPIRAL__FILE_FORMATFile format for table storage
devfalseSPIRAL__DEVDevelopment mode flag

Authn

Authentication related settings

FieldDefaultEnvironment VariableDescription
authn.device_codefalseSPIRAL__AUTHN__DEVICE_CODEWhether to force device code authentication flow. This exist as an override when e.g. ssh-ing into an environment machine.
authn.token-SPIRAL__AUTHN__TOKENOptional authentication token

Fragments_cache

Client cache limits and constraints

FieldDefaultEnvironment VariableDescription
fragments_cache.enabledfalseSPIRAL__FRAGMENTS_CACHE__ENABLEDCache is currently disabled by default.
fragments_cache.memory_capacity_bytes2 * (1 << 30)SPIRAL__FRAGMENTS_CACHE__MEMORY_CAPACITY_BYTESMemory cache size in bytes.
fragments_cache.disk_capacity_bytes20 * (1 << 30)SPIRAL__FRAGMENTS_CACHE__DISK_CAPACITY_BYTESDisk cache size in bytes.
fragments_cache.disk_path-SPIRAL__FRAGMENTS_CACHE__DISK_PATHDisk cache path override. If not set, defaults to $XDG_CACHE_HOME/spiral or ~/.cache/spiral

Keys_cache

Client cache limits and constraints

FieldDefaultEnvironment VariableDescription
keys_cache.enabledfalseSPIRAL__KEYS_CACHE__ENABLEDCache is currently disabled by default.
keys_cache.memory_capacity_bytes2 * (1 << 30)SPIRAL__KEYS_CACHE__MEMORY_CAPACITY_BYTESMemory cache size in bytes.
keys_cache.disk_capacity_bytes20 * (1 << 30)SPIRAL__KEYS_CACHE__DISK_CAPACITY_BYTESDisk cache size in bytes.
keys_cache.disk_path-SPIRAL__KEYS_CACHE__DISK_PATHDisk cache path override. If not set, defaults to $XDG_CACHE_HOME/spiral or ~/.cache/spiral

Limits

Client resource limits and constraints

FieldDefaultEnvironment VariableDescription
limits.batch_readaheadNonZeroUsize :: new (min (num_cpus :: get ()SPIRAL__LIMITS__BATCH_READAHEADMaximum number of concurrent shards to evaluate, “read ahead”, when scanning. Defaults to min(number of CPU cores, 64).
limits.transaction_retries3SPIRAL__LIMITS__TRANSACTION_RETRIESMaximum number of transaction retries on conflict before giving up.
limits.transaction_manifest_max_rows-SPIRAL__LIMITS__TRANSACTION_MANIFEST_MAX_ROWSMaximum number of rows in manifest when compacting transaction.
limits.transaction_compact_threshold100SPIRAL__LIMITS__TRANSACTION_COMPACT_THRESHOLDAutomatically compact transaction operations before commit if operation count exceeds this threshold. Set to 0 to disable auto-compaction.
limits.key_space_max_rows100_000_000SPIRAL__LIMITS__KEY_SPACE_MAX_ROWSMaximum number of rows in a key space. Compaction keeps fragments across column groups aligned to L1 key spaces. When this limit is larger, the L1 key spaces might change more frequently, causing a re-alignment to happen. When this limit is smaller, more fragments may have to be split due to key space boundaries.
limits.http_max_retries10SPIRAL__LIMITS__HTTP_MAX_RETRIESMaximum number of HTTP request retries on transient errors.
limits.http_min_retry_interval_ms100SPIRAL__LIMITS__HTTP_MIN_RETRY_INTERVAL_MSMinimum number of milliseconds to wait between HTTP request retries.
limits.http_max_retry_interval_ms5 * 60 * 1000SPIRAL__LIMITS__HTTP_MAX_RETRY_INTERVAL_MSMaximum number of milliseconds to wait between HTTP request retries.
limits.write_max_concurrencyNoneSPIRAL__LIMITS__WRITE_MAX_CONCURRENCYMaximum number of concurrent write operations when writing table fragments.
limits.write_max_concurrency_manifest32SPIRAL__LIMITS__WRITE_MAX_CONCURRENCY_MANIFESTMaximum number of concurrent manifest writes.
limits.write_buffer_max_bytes1024 * 1024 * 1024SPIRAL__LIMITS__WRITE_BUFFER_MAX_BYTESMaximum number of bytes to buffer in memory when writing key table batches.
limits.write_partition_max_bytes128 * 1024 * 1024SPIRAL__LIMITS__WRITE_PARTITION_MAX_BYTESMaximum number of bytes in an uncompressed fragment file.
limits.read_max_concurrency16SPIRAL__LIMITS__READ_MAX_CONCURRENCYMaximum number of concurrent operations when evaluating multiple nodes during scans.
limits.fragment_cache_bytes256 * 1024 * 1024SPIRAL__LIMITS__FRAGMENT_CACHE_BYTESMaximum in-memory footprint (in bytes) of the fragment cache.
limits.compaction_task_max_bytes4 * 1024 * 1024 * 1024SPIRAL__LIMITS__COMPACTION_TASK_MAX_BYTESMaximum size of fragments accumulated in a single compaction task.
limits.compaction_fragment_size_bytes_threshold16 * 1024 * 1024SPIRAL__LIMITS__COMPACTION_FRAGMENT_SIZE_BYTES_THRESHOLDFragments smaller than this threshold will be considered for compaction when size-based compaction strategy is used.

Manifests_cache

Client cache limits and constraints

FieldDefaultEnvironment VariableDescription
manifests_cache.enabledfalseSPIRAL__MANIFESTS_CACHE__ENABLEDCache is currently disabled by default.
manifests_cache.memory_capacity_bytes2 * (1 << 30)SPIRAL__MANIFESTS_CACHE__MEMORY_CAPACITY_BYTESMemory cache size in bytes.
manifests_cache.disk_capacity_bytes20 * (1 << 30)SPIRAL__MANIFESTS_CACHE__DISK_CAPACITY_BYTESDisk cache size in bytes.
manifests_cache.disk_path-SPIRAL__MANIFESTS_CACHE__DISK_PATHDisk cache path override. If not set, defaults to $XDG_CACHE_HOME/spiral or ~/.cache/spiral

Server

API endpoint configuration for the Spiral control plane

FieldDefaultEnvironment VariableDescription
server.urlhttps://api.spiraldb.devSPIRAL__SERVER__URLThe SpiralDB API endpoint URL

Spfs

SpFS (Spiral File System) configuration

FieldDefaultEnvironment VariableDescription
spfs.urlhttps://spfs.spiraldb.devSPIRAL__SPFS__URLThe SpFS (Spiral File System) endpoint URL
Last updated on