Configuration System
Multi-level TOML configuration for full control over Pipelex behavior.
Overview
Pipelex uses a layered TOML configuration system that lets you define sensible defaults and override them at any level: project, environment, or run mode. Each layer merges on top of the previous one, so you only need to specify what you want to change.
Configuration Levels
- Package defaults — Built into Pipelex (
pipelex.tomlin the package) - Global tier —
~/.pipelex/for user-wide settings: the basepipelex.toml, then its override sequence - Project tier —
{project_root}/.pipelex/for project-specific settings: the basepipelex.toml, then the same override sequence
Within each tier, the base pipelex.toml is followed by an override sequence, merged in order (later wins per key):
pipelex_local.toml— git-ignored, for machine-specific valuespipelex_{environment}.toml— e.g.pipelex_dev.toml,pipelex_prod.toml. The environment is selected by thePIPELEX_ENVenvironment variable (accepted values:local,dev,staging,prod; defaults todev).pipelex_{run_mode}.toml— e.g.pipelex_unit_test.toml,pipelex_ci_test.toml. The run mode is selected by theRUN_MODEenvironment variable (defaults tonormal).pipelex_override.toml— general-purpose overridespipelex_temporary_override.toml— last-resort, highest-precedence overrides within the tier
The entire global tier merges before the project tier, so any project-tier file — including the plain project pipelex.toml — overrides every global-tier file.
The two inference documents, .pipelex/inference/backends.toml and .pipelex/inference/routing_profiles.toml, have an override layer of their own: a backends_override.toml and a routing_profiles_override.toml beside them, git-ignored, each carrying only the keys it sets. The base file resolves as before (the project's copy if it has one, otherwise the global one) and the overrides merge over it, global tier first, then project tier — so one ~/.pipelex/inference/ override reaches every project on the machine, and deleting it restores the shipped default. See Inference Backend Configuration for the files and the merge order.
Environment Variables
Two configuration areas support ${...} variable substitution in their TOML files: the inference backend configuration (.pipelex/inference/backends.toml and the per-backend TOML files under .pipelex/inference/backends/) and the telemetry configuration (.pipelex/telemetry.toml). In those files, use ${env:VAR} for environment variables, ${secret:VAR} for the secrets provider, and fallback chains like ${env:VAR|secret:VAR}. The pipelex.toml layering described above does not perform substitution — a ${env:VAR} there stays a literal string.
Key Configuration Areas
- Inference Backends — LLM providers, models, and routing
- Logging — Log levels and output
- Telemetry — Observability settings
- Reporting — Cost tracking and reports
- Dry Run — Mock generation settings
For full configuration reference, see Configuration.