Configuration
Observy works without a configuration file. Configuration is loaded in this precedence order, with higher layers overriding lower layers:
- CLI flags
- Environment variables
- YAML config file
- Runtime defaults
The config file name is observy-config.yaml. Observy searches the current working directory and ~/.config/observy/.
Example Config
data_storage_root_dir: ~/.local/share/observy/dataotlp_grpc_port: 4317web_port: 8080storage_provider: sqliteOptions
| Config key | Env variable | CLI flag | Default | Description |
|---|---|---|---|---|
data_storage_root_dir | OBSERVY_DATA_STORAGE_ROOT_DIR | --data-dir | ~/.local/share/observy/data | Root directory for local data. |
otlp_grpc_port | OBSERVY_OTLP_GRPC_PORT | --otlp-grpc-port | 4317 | OTLP/gRPC receiver port. |
web_port | OBSERVY_WEB_PORT | --web-port | 8080 | HTTP dashboard port. |
storage_provider | OBSERVY_STORAGE_PROVIDER | --storage-provider | sqlite | Storage provider: sqlite or duckdb. |
Environment Variable Example
OBSERVY_OTLP_GRPC_PORT=14317 \OBSERVY_WEB_PORT=18080 \OBSERVY_STORAGE_PROVIDER=duckdb \./observyData Storage
Observy creates the configured data root if it does not exist.
SQLite stores three database files under:
{data_storage_root_dir}/sqlite/ logs.db metrics.db traces.dbDuckDB stores its data under the same root:
{data_storage_root_dir}/duckdb/ logs.db metrics.db traces.dbUse sqlite or duckdb when you want persisted telemetry.