Skip to content

[Feature] Configuration File Support #10

Description

@Siddhant-K-code

Summary

Support distill.yaml configuration file for persistent settings.

Motivation

CLI flags are tedious for repeated use. A config file enables consistent settings across invocations and easier deployment configuration.

Configuration Schema

# distill.yaml
server:
  port: 8080
  host: 0.0.0.0
  read_timeout: 30s
  write_timeout: 30s

embedding:
  provider: openai
  model: text-embedding-3-small
  batch_size: 100

dedup:
  threshold: 0.15
  method: agglomerative
  linkage: average

compress:
  enabled: true
  target_reduction: 0.5
  preserve_structure: true

summarize:
  enabled: true
  max_tokens: 4000
  preserve_recent: 5

cache:
  enabled: true
  backend: memory  # or redis
  max_size: 100MB
  ttl: 1h
  redis_url: redis://localhost:6379

retriever:
  backend: pinecone  # or qdrant
  index: my-index
  top_k: 50

auth:
  api_keys:
    - ${DISTILL_API_KEY}

telemetry:
  metrics:
    enabled: true
    port: 9090
  tracing:
    enabled: false

Config Loading Priority

  1. CLI flags (highest)
  2. Environment variables
  3. Config file
  4. Defaults (lowest)

Acceptance Criteria

  • YAML config file support
  • Environment variable interpolation (${VAR})
  • Config validation with helpful errors
  • distill config validate command
  • distill config init to generate template

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions