# Configuration Schema

Complete reference for Fetch ML configuration options.

## Configuration File Structure

Fetch ML uses YAML configuration files. The main configuration file is typically `config.yaml`.

### Full Schema

```yaml
# Server Configuration
server:
  address: ":9101"
  tls:
    enabled: false
    cert_file: ""
    key_file: ""

# Database Configuration
database:
  type: "sqlite"  # sqlite, postgres, mysql
  connection: "fetch_ml.db"
  host: "localhost"
  port: 5432
  username: "postgres"
  password: ""
  database: "fetch_ml"

# Redis Configuration


## Quick Reference

### Database Types
- **SQLite**: `type: sqlite, connection: file.db`
- **PostgreSQL**: `type: postgres, host: localhost, port: 5432`

### Key Settings
- `server.address: :9101`
- `database.type: sqlite`
- `redis.addr: localhost:6379`
- `auth.enabled: true`
- `logging.level: info`

### Environment Override
```bash
export FETCHML_SERVER_ADDRESS=:8080
export FETCHML_DATABASE_TYPE=postgres
```

### Validation
```bash
make configlint
``` 
