> ## Documentation Index
> Fetch the complete documentation index at: https://doc.blueapi.ir/llms.txt
> Use this file to discover all available pages before exploring further.

# EMEP Configuration Specification

> YAML configuration schema for EMEP platform, registry, merge, evolution, evaluation, storage, GPU, deployment, security, and observability settings.

EMEP uses a single YAML configuration file to control platform behavior. The configuration is loaded at startup and validated against a JSON Schema. Invalid values prevent startup. This page defines all sections and provides a full example.

## Schema Sections

### platform

| Key                   | Type    | Default  | Description                      |
| --------------------- | ------- | -------- | -------------------------------- |
| name                  | string  | "emep"   | Platform instance name           |
| version               | string  | required | EMEP version string              |
| log\_level            | string  | "info"   | One of: debug, info, warn, error |
| max\_concurrent\_jobs | integer | 4        | Global job concurrency limit     |

### registry

| Key                | Type    | Default    | Description                                     |
| ------------------ | ------- | ---------- | ----------------------------------------------- |
| backend            | string  | "postgres" | ModelRegistry backend: postgres, sqlite, memory |
| connection\_string | string  | required   | Database connection string                      |
| cache\_ttl         | integer | 300        | Registry metadata cache TTL in seconds          |

### merge

| Key                       | Type    | Default | Description                                 |
| ------------------------- | ------- | ------- | ------------------------------------------- |
| default\_strategy         | string  | "slerp" | Default MergeStrategy                       |
| max\_models\_per\_merge   | integer | 8       | Maximum source models in one merge          |
| validation\_enabled       | boolean | true    | Run MergeValidation after every merge       |
| artifact\_retention\_days | integer | 30      | Days to retain intermediate merge artifacts |

### evolution

| Key              | Type    | Default | Description                                                                                |
| ---------------- | ------- | ------- | ------------------------------------------------------------------------------------------ |
| algorithm        | string  | "nsga2" | Evolution algorithm: nsga2 (Deb et al. 2002), nsga3 (Deb & Jain 2014), cmaes (Hansen 2001) |
| population\_size | integer | 50      | Initial population size                                                                    |
| max\_generations | integer | 100     | Hard stop after N generations                                                              |
| crossover\_rate  | float   | 0.8     | Probability of crossover per pair                                                          |
| mutation\_rate   | float   | 0.1     | Probability of mutation per genome                                                         |

### evaluation

| Key                  | Type    | Default | Description                          |
| -------------------- | ------- | ------- | ------------------------------------ |
| benchmark\_backend   | string  | "vllm"  | Inference backend for benchmarks     |
| deterministic\_seeds | boolean | true    | Fix random seeds for reproducibility |
| timeout\_seconds     | integer | 3600    | Per-benchmark timeout                |

### storage

| Key             | Type   | Default  | Description                                  |
| --------------- | ------ | -------- | -------------------------------------------- |
| artifact\_store | string | "s3"     | ArtifactStore backend: s3, gcs, azure, local |
| bucket          | string | required | Storage bucket or root path                  |
| encryption      | string | "aes256" | At-rest encryption algorithm                 |

### gpu

| Key              | Type   | Default      | Description                                  |
| ---------------- | ------ | ------------ | -------------------------------------------- |
| orchestrator     | string | "kubernetes" | GPU orchestrator: kubernetes, slurm, manual  |
| default\_dtype   | string | "bf16"       | Default compute dtype: fp32, bf16, fp16, fp8 |
| memory\_fraction | float  | 0.9          | Fraction of GPU memory to allocate per job   |

### deployment

| Key                   | Type    | Default | Description                              |
| --------------------- | ------- | ------- | ---------------------------------------- |
| inference\_backend    | string  | "vllm"  | Default InferenceBackend                 |
| quantization\_enabled | boolean | false   | Enable QuantizationEngine for deployment |
| max\_batch\_size      | integer | 16      | Maximum inference batch size             |

### security

| Key                     | Type    | Default | Description                             |
| ----------------------- | ------- | ------- | --------------------------------------- |
| artifact\_signing       | boolean | true    | Enable ArtifactStore signing            |
| require\_signed\_models | boolean | true    | Reject unsigned models in ModelRegistry |
| license\_scanning       | boolean | true    | Enable license compliance checks        |

### observability

| Key              | Type   | Default      | Description                     |
| ---------------- | ------ | ------------ | ------------------------------- |
| metrics\_backend | string | "prometheus" | Metrics sink                    |
| tracing\_backend | string | "jaeger"     | Distributed tracing backend     |
| alert\_webhook   | string | ""           | URL for critical alert webhooks |

## Full Example

```yaml theme={null}
platform:
  name: "emep-production"
  version: "0.1.0"
  log_level: "info"
  max_concurrent_jobs: 8

registry:
  backend: "postgres"
  connection_string: "postgresql://user:pass@db:5432/emep"
  cache_ttl: 300

merge:
  default_strategy: "ties"
  max_models_per_merge: 4
  validation_enabled: true
  artifact_retention_days: 30

evolution:
  algorithm: "nsga2"
  population_size: 50
  max_generations: 100
  crossover_rate: 0.8
  mutation_rate: 0.1

evaluation:
  benchmark_backend: "vllm"
  deterministic_seeds: true
  timeout_seconds: 3600

storage:
  artifact_store: "s3"
  bucket: "emep-artifacts-prod"
  encryption: "aes256"

gpu:
  orchestrator: "kubernetes"
  default_dtype: "bf16"
  memory_fraction: 0.9

deployment:
  inference_backend: "vllm"
  quantization_enabled: true
  max_batch_size: 16

security:
  artifact_signing: true
  require_signed_models: true
  license_scanning: true

observability:
  metrics_backend: "prometheus"
  tracing_backend: "jaeger"
  alert_webhook: "https://alerts.emep.dev/webhook"
```

## Validation

The configuration is validated on load. Unknown keys are rejected. Missing required keys prevent startup. Type mismatches produce a detailed error message with the offending key and expected type.

## Integration Points

* **API Specification**: the REST API reads the same config file for defaults.
* **CLI Specification**: `emep` commands use config values when flags are omitted.
* **GPU Orchestration**: the `gpu` section is consumed by the GPU orchestrator layer.
* **Security**: the `security` section drives ArtifactStore signing and license compliance.
