Skip to content

Config Manager

SideSeat merges configuration from multiple sources so you can keep local defaults and override when needed.

Settings are loaded in this order (highest priority first):

  1. CLI flags (e.g., --host, --port)
  2. Environment variables (e.g., SIDESEAT_HOST, SIDESEAT_PORT)
  3. Project config (./sideseat.json or --config <path>)
  4. Profile config (~/.sideseat/sideseat.json)
  5. Built-in defaults

Objects are deep-merged, so you can override only the fields you need.

SideSeat looks for JSON config files in two places:

  • Profile config: ~/.sideseat/sideseat.json
  • Project config: ./sideseat.json (or --config <path>)

Example project config:

{
"server": {
"host": "127.0.0.1",
"port": 5388
},
"auth": {
"enabled": true
},
"otel": {
"grpc": {
"enabled": true,
"port": 4317
},
"retention": {
"max_age_minutes": 10080,
"max_spans": 5000000
},
"auth": {
"required": false
}
},
"pricing": {
"sync_hours": 24
},
"files": {
"enabled": true,
"storage": "filesystem",
"quota_bytes": 1073741824,
"filesystem": {
"path": "/custom/files"
}
},
"rate_limit": {
"enabled": false,
"per_ip": false,
"api_rpm": 1000,
"ingestion_rpm": 10000,
"auth_rpm": 100,
"files_rpm": 1000,
"bypass_header": "X-SideSeat-Bypass"
},
"database": {
"transactional": "sqlite",
"analytics": "duckdb",
"cache": "memory"
},
"update": {
"enabled": true
},
"debug": false
}

Common environment variables:

VariableDescription
SIDESEAT_HOSTServer host address
SIDESEAT_PORTServer port (default 5388)
SIDESEAT_LOGLog level/filter
SIDESEAT_DEBUGEnable debug mode (true/false)
SIDESEAT_CONFIGPath to a config file
SIDESEAT_OTEL_GRPC_ENABLEDEnable OTLP gRPC ingestion
SIDESEAT_OTEL_GRPC_PORTOTLP gRPC port (default 4317)
SIDESEAT_OTEL_RETENTION_MAX_AGE_MINUTESRetention max age (minutes)
SIDESEAT_OTEL_RETENTION_MAX_SPANSRetention max spans
SIDESEAT_OTEL_AUTH_REQUIREDRequire auth for OTLP ingestion
SIDESEAT_PRICING_SYNC_HOURSPricing sync interval
SIDESEAT_NO_UPDATE_CHECKDisable update checks
SIDESEAT_DATA_DIROverride data directory

For the full list of CLI flags and env vars, see the CLI Reference.

FieldTypeDescription
hoststringServer bind address
portnumberServer port
FieldTypeDescription
enabledbooleanEnable/disable authentication
FieldTypeDescription
grpc.enabledbooleanEnable OTLP gRPC ingestion
grpc.portnumberOTLP gRPC port
retention.max_age_minutesnumberRetention max age in minutes (null = no limit)
retention.max_spansnumberRetention max spans (null = no limit)
auth.requiredbooleanRequire auth for OTLP ingestion
FieldTypeDescription
sync_hoursnumberPricing data sync interval (hours)
FieldTypeDescription
enabledbooleanEnable file storage
storagestringfilesystem or s3
quota_bytesnumberStorage quota per project
filesystem.pathstringFilesystem storage path
s3.bucketstringS3 bucket name
s3.prefixstringS3 prefix/key path
s3.regionstringS3 region
s3.endpointstringCustom S3 endpoint
FieldTypeDescription
enabledbooleanEnable rate limiting
per_ipbooleanEnable per-IP limits
api_rpmnumberAPI requests per minute
ingestion_rpmnumberOTLP ingestion requests per minute
auth_rpmnumberAuth requests per minute
files_rpmnumberFile upload requests per minute
bypass_headerstringHeader name to bypass rate limits
FieldTypeDescription
transactionalstringsqlite (default) or postgres
analyticsstringduckdb (default) or clickhouse
cachestringmemory (default) or redis
postgres.urlstringPostgreSQL connection URL
postgres.max_connectionsnumberMax connections
postgres.min_connectionsnumberMin connections
postgres.acquire_timeout_secsnumberAcquire timeout (seconds)
postgres.idle_timeout_secsnumberIdle timeout (seconds)
postgres.max_lifetime_secsnumberMax lifetime (seconds)
postgres.statement_timeout_secsnumberStatement timeout (seconds)
clickhouse.urlstringClickHouse connection URL
clickhouse.databasestringDatabase name
clickhouse.userstringUsername
clickhouse.passwordstringPassword
clickhouse.timeout_secsnumberQuery timeout (seconds)
clickhouse.compressionbooleanEnable compression
clickhouse.async_insertbooleanEnable async inserts
clickhouse.wait_for_async_insertbooleanWait for insert completion
clickhouse.clusterstringCluster name for sharding
clickhouse.distributedbooleanEnable distributed tables
redis.urlstringRedis connection URL
memory_cache.max_entriesnumberMax in-memory cache entries
memory_cache.eviction_policystringtinylfu or lru
FieldTypeDescription
enabledbooleanEnable update checks
FieldTypeDescription
debugbooleanEnable debug mode