Skip to content

Settings reference

This is the complete settings model, generated from refindery.config. Each group below is a nested settings object; its fields map to environment variables as REFINDERY_<GROUP>__<FIELD> (see the Configuration overview for the mapping rules). The Settings root also holds the top-level fields (auth_token, bind_host, bind_port, vector_store, …).

config

Application settings.

Everything is configurable via environment variables with the REFINDERY_ prefix and __ as the nesting delimiter, e.g.::

REFINDERY_AUTH_TOKEN=...             # single full-access token
REFINDERY_AUTH_TOKENS='[{"name": "agent", "token": "...", "scopes": ["read"]}]'
REFINDERY_VECTOR_STORE=lancedb
REFINDERY_CHUNKING__TARGET_TOKENS=448

Provider API keys use their native variables (VOYAGE_API_KEY, ...).

Scope

Bases: StrEnum

What a bearer token may do; write implies read.

READ class-attribute instance-attribute

READ = 'read'

WRITE class-attribute instance-attribute

WRITE = 'write'

TokenSpec

Bases: BaseModel

One named bearer token with its scopes.

Configure several as JSON, e.g.::

REFINDERY_AUTH_TOKENS='[{"name":"agent","token":"...","scopes":["read"]}]'

name class-attribute instance-attribute

name = Field(min_length=1)

token instance-attribute

token

scopes class-attribute instance-attribute

scopes = (Scope.READ, Scope.WRITE)

VectorStoreKind

Bases: StrEnum

Which vector store adapter to use.

QDRANT class-attribute instance-attribute

QDRANT = 'qdrant'

LANCEDB class-attribute instance-attribute

LANCEDB = 'lancedb'

RerankerKind

Bases: StrEnum

Which reranker adapter to use.

NONE class-attribute instance-attribute

NONE = 'none'

API class-attribute instance-attribute

API = 'api'

LOCAL class-attribute instance-attribute

LOCAL = 'local'

TraceExporter

Bases: StrEnum

Where OpenTelemetry spans are exported.

OFF class-attribute instance-attribute

OFF = 'off'

CONSOLE class-attribute instance-attribute

CONSOLE = 'console'

OTLP class-attribute instance-attribute

OTLP = 'otlp'

QdrantSettings

Bases: BaseModel

Qdrant connection settings.

url class-attribute instance-attribute

url = 'http://127.0.0.1:6333'

api_key class-attribute instance-attribute

api_key = None

collection class-attribute instance-attribute

collection = 'refindery_chunks'

LanceDbSettings

Bases: BaseModel

LanceDB storage settings.

path class-attribute instance-attribute

path = Path('data/lancedb')

SqliteSettings

Bases: BaseModel

SQLite metadata store settings.

path class-attribute instance-attribute

path = Path('data/refindery.db')

DuckDbSettings

Bases: BaseModel

DuckDB observability sink settings.

path class-attribute instance-attribute

path = Path('data/observability.duckdb')

HueySettings

Bases: BaseModel

Huey queue storage settings.

path class-attribute instance-attribute

path = Path('data/huey.db')

EmbedderSettings

Bases: BaseModel

Active embedding model.

dim/max_input_tokens are authoritative here because not every provider SDK exposes them.

provider class-attribute instance-attribute

provider = 'voyage'

model class-attribute instance-attribute

model = 'voyage-3.5'

dim class-attribute instance-attribute

dim = Field(default=1024, ge=1)

max_input_tokens class-attribute instance-attribute

max_input_tokens = Field(default=32000, ge=1)

RerankerSettings

Bases: BaseModel

Reranker selection.

kind class-attribute instance-attribute

provider class-attribute instance-attribute

provider = 'cohere'

model class-attribute instance-attribute

model = 'rerank-v3.5'

ChunkingSettings

Bases: BaseModel

Canonical chunking parameters (model-independent).

target_tokens class-attribute instance-attribute

target_tokens = Field(default=448, ge=1)

overlap_tokens class-attribute instance-attribute

overlap_tokens = Field(default=64, ge=0)

hard_max_tokens class-attribute instance-attribute

hard_max_tokens = Field(default=512, ge=1)

PdfSettings

Bases: BaseModel

PDF text-extraction tuning (pypdf extractor).

Running headers/footers and page-number lines otherwise repeat into every chunk; strip_repeated_lines detects lines recurring in the top/bottom repeated_line_scan lines of at least repeated_line_ratio of the pages (only when a document has min_pages_for_stripping pages).

strip_repeated_lines class-attribute instance-attribute

strip_repeated_lines = True

repeated_line_ratio class-attribute instance-attribute

repeated_line_ratio = Field(default=0.6, gt=0.0, le=1.0)

repeated_line_scan class-attribute instance-attribute

repeated_line_scan = Field(default=2, ge=1)

min_pages_for_stripping class-attribute instance-attribute

min_pages_for_stripping = Field(default=3, ge=1)

CanonicalizeSettings

Bases: BaseModel

URL canonicalization overrides.

tracking_params class-attribute instance-attribute

tracking_params = DEFAULT_TRACKING_PARAMS

IndexingSettings

Bases: BaseModel

Indexing pipeline knobs.

page_vector_pooling class-attribute instance-attribute

page_vector_pooling = PoolingStrategy.MEAN

FetchSettings

Bases: BaseModel

Outbound fetch limits for the fetch_and_index path.

The youtube_* knobs control transcript ingestion for YouTube video URLs (requires the youtube extra): preferred caption languages, whether auto-generated captions are acceptable, and whether captionless videos fall back to local Whisper transcription (transcribe / transcribe-mlx extra + ffmpeg).

The audio_* knobs control transcription of audio URLs — podcast enclosures discovered by watches and audio files posted directly. Audio downloads stream to a temp file bounded by audio_max_bytes and audio_timeout_s instead of the in-memory max_bytes cap. The Whisper model is shared with youtube_whisper_model; transcription requires the transcribe or transcribe-mlx extra + ffmpeg.

podcast_transcripts prefers Podcasting 2.0 published transcripts and chapter metadata when a podcast watch discovers them. It requires the podcast extra and falls back to the audio/Whisper path above.

timeout_s class-attribute instance-attribute

timeout_s = Field(default=10.0, gt=0)

max_bytes class-attribute instance-attribute

max_bytes = Field(default=10000000, ge=1)

youtube_captions class-attribute instance-attribute

youtube_captions = True

youtube_caption_langs class-attribute instance-attribute

youtube_caption_langs = ('en', 'en-US', 'en-GB')

youtube_allow_auto_captions class-attribute instance-attribute

youtube_allow_auto_captions = True

youtube_transcribe_fallback class-attribute instance-attribute

youtube_transcribe_fallback = True

youtube_whisper_model class-attribute instance-attribute

youtube_whisper_model = 'small'

youtube_timeout_s class-attribute instance-attribute

youtube_timeout_s = Field(default=60.0, gt=0)

audio_transcripts class-attribute instance-attribute

audio_transcripts = True

audio_max_bytes class-attribute instance-attribute

audio_max_bytes = Field(default=250000000, ge=1)

audio_timeout_s class-attribute instance-attribute

audio_timeout_s = Field(default=300.0, gt=0)

podcast_transcripts class-attribute instance-attribute

podcast_transcripts = True

WatchSettings

Bases: BaseModel

Watch-mode polling configuration.

default_interval_hours applies when a watch is created without an explicit interval. poll_tick_enabled gates the minute-level scheduler periodic (tests drive WatchService.tick directly instead).

default_interval_hours class-attribute instance-attribute

default_interval_hours = Field(
    default=24, ge=1, le=MAX_WATCH_INTERVAL_HOURS
)

poll_tick_enabled class-attribute instance-attribute

poll_tick_enabled = True

max_due_per_tick class-attribute instance-attribute

max_due_per_tick = Field(default=20, ge=1)

max_items_per_poll class-attribute instance-attribute

max_items_per_poll = Field(default=200, ge=1)

youtube_max_entries class-attribute instance-attribute

youtube_max_entries = Field(default=100, ge=1)

JobsSettings

Bases: BaseModel

Durable job execution parameters.

handler_timeout_s bounds one handler execution (cooperative cancellation); None derives it from lease_minutes. It exists mainly so tests can use sub-second timeouts.

max_attempts class-attribute instance-attribute

max_attempts = Field(default=5, ge=1)

lease_minutes class-attribute instance-attribute

lease_minutes = Field(default=15, ge=1)

backoff_base_s class-attribute instance-attribute

backoff_base_s = Field(default=2.0, gt=0)

handler_timeout_s class-attribute instance-attribute

handler_timeout_s = Field(default=None, gt=0)

ResilienceSettings

Bases: BaseModel

Circuit breaker, in-call retry, and provider timeout knobs.

breaker_failure_threshold class-attribute instance-attribute

breaker_failure_threshold = Field(default=5, ge=1)

breaker_cooldown_s class-attribute instance-attribute

breaker_cooldown_s = Field(default=30.0, gt=0)

retry_attempts class-attribute instance-attribute

retry_attempts = Field(default=3, ge=1)

retry_base_delay_s class-attribute instance-attribute

retry_base_delay_s = Field(default=0.25, gt=0)

retry_max_delay_s class-attribute instance-attribute

retry_max_delay_s = Field(default=2.0, gt=0)

embed_timeout_s class-attribute instance-attribute

embed_timeout_s = Field(default=60.0, gt=0)

rerank_timeout_s class-attribute instance-attribute

rerank_timeout_s = Field(default=15.0, gt=0)

McpSettings

Bases: BaseModel

MCP server surface configuration.

enable_mutating_tools class-attribute instance-attribute

enable_mutating_tools = False

EventsSettings

Bases: BaseModel

Server-sent events (GET /v1/events) configuration.

heartbeat_s class-attribute instance-attribute

heartbeat_s = Field(default=15.0, gt=0)

queue_size class-attribute instance-attribute

queue_size = Field(default=256, ge=1)

max_subscribers class-attribute instance-attribute

max_subscribers = Field(default=16, ge=1)

EntitySettings

Bases: BaseModel

Entity extraction and canonicalization configuration.

extractor_chain class-attribute instance-attribute

extractor_chain = ('gliner', 'spacy', 'gazetteer')

gazetteer_patterns_path class-attribute instance-attribute

gazetteer_patterns_path = None

surface_embedder class-attribute instance-attribute

surface_embedder = 'static'

cosine_threshold class-attribute instance-attribute

cosine_threshold = Field(default=0.85, ge=0.0, le=1.0)

edit_distance_threshold class-attribute instance-attribute

edit_distance_threshold = Field(
    default=0.15, ge=0.0, le=1.0
)

SearchSettings

Bases: BaseModel

Search ranking defaults.

recency_half_life_days class-attribute instance-attribute

recency_half_life_days = Field(default=None, gt=0)

ClusterSettings

Bases: BaseModel

Clustering configuration.

algorithm class-attribute instance-attribute

algorithm = 'hdbscan'

reducer class-attribute instance-attribute

reducer = 'umap'

leiden_resolution class-attribute instance-attribute

leiden_resolution = Field(default=1.0, gt=0)

cron class-attribute instance-attribute

cron = None

min_pages class-attribute instance-attribute

min_pages = Field(default=50, ge=1)

min_new_pages class-attribute instance-attribute

min_new_pages = Field(default=20, ge=1)

idle_default_minutes class-attribute instance-attribute

idle_default_minutes = Field(default=15, ge=1)

LlmSettings

Bases: BaseModel

Optional OpenAI-compatible endpoint (labels, LLM entity extraction).

base_url class-attribute instance-attribute

base_url = None

api_key class-attribute instance-attribute

api_key = None

model class-attribute instance-attribute

model = 'llama3.2'

timeout_s class-attribute instance-attribute

timeout_s = Field(default=30.0, gt=0)

ObservabilitySettings

Bases: BaseModel

Tracing/logging/metrics configuration.

traces class-attribute instance-attribute

traces = TraceExporter.OFF

otlp_endpoint class-attribute instance-attribute

otlp_endpoint = None

json_logs class-attribute instance-attribute

json_logs = True

metrics_snapshot_interval_s class-attribute instance-attribute

metrics_snapshot_interval_s = Field(default=15.0, gt=0)

Settings

Bases: BaseSettings

Root settings object; the composition root builds everything from this.

model_config class-attribute instance-attribute

model_config = SettingsConfigDict(
    env_prefix="REFINDERY_",
    env_nested_delimiter="__",
    env_file=".env",
    env_file_encoding="utf-8",
    extra="ignore",
)

auth_token class-attribute instance-attribute

auth_token = None

auth_tokens class-attribute instance-attribute

auth_tokens = ()

bind_host class-attribute instance-attribute

bind_host = '127.0.0.1'

bind_port class-attribute instance-attribute

bind_port = 8000

vector_store class-attribute instance-attribute

vector_store = VectorStoreKind.QDRANT

qdrant class-attribute instance-attribute

qdrant = QdrantSettings()

lancedb class-attribute instance-attribute

lancedb = LanceDbSettings()

sqlite class-attribute instance-attribute

sqlite = SqliteSettings()

duckdb class-attribute instance-attribute

duckdb = DuckDbSettings()

huey class-attribute instance-attribute

huey = HueySettings()

embedder class-attribute instance-attribute

embedder = EmbedderSettings()

reranker class-attribute instance-attribute

reranker = RerankerSettings()

chunking class-attribute instance-attribute

chunking = ChunkingSettings()

pdf class-attribute instance-attribute

pdf = PdfSettings()

canonicalize class-attribute instance-attribute

canonicalize = CanonicalizeSettings()

indexing class-attribute instance-attribute

indexing = IndexingSettings()

fetch class-attribute instance-attribute

fetch = FetchSettings()

watch class-attribute instance-attribute

watch = WatchSettings()

jobs class-attribute instance-attribute

jobs = JobsSettings()

resilience class-attribute instance-attribute

resilience = ResilienceSettings()

mcp class-attribute instance-attribute

mcp = McpSettings()

events class-attribute instance-attribute

events = EventsSettings()

entity class-attribute instance-attribute

entity = EntitySettings()

search class-attribute instance-attribute

search = SearchSettings()

cluster class-attribute instance-attribute

cluster = ClusterSettings()

llm class-attribute instance-attribute

llm = LlmSettings()

observability class-attribute instance-attribute

observability = ObservabilitySettings()

resolved_tokens

resolved_tokens()

Every configured token; the legacy single token is full-access.

load_settings

load_settings()

Build settings from environment variables and .env.