# =====================================================
# EverOS — md-first Memory Extraction Framework
# Configuration Template
# =====================================================
#
# Setup:
#   1. cp env.template .env
#   2. Edit .env with your values
#   3. .env is gitignored (never commit)
#
# Override priority (low → high):
#   src/everos/config/default.toml         (shipped baseline)
#     ↓
#   ~/.everos/config.toml                  (user-level overrides; optional)
#     ↓
#   .env                                    (this file; gitignored)
#     ↓
#   EVEROS_<SECTION>__<KEY> process envs
#     ↓
#   programmatic init args / CLI flags
#
# The user-level toml path defaults to ~/.everos/config.toml; override
# with EVEROS_CONFIG_FILE=/path/to/your.toml. Missing file is skipped.
# =====================================================


# ─── LLM (OpenAI-protocol compatible) ────────────────
# Any OpenAI-API-compatible endpoint plugs in via base_url. Defaults
# below target OpenRouter (one key, broad model catalogue); switch to
# OpenAI, vLLM, Ollama (OpenAI bridge), or any other compatible endpoint
# by changing model + base_url + api_key.

EVEROS_LLM__MODEL=openai/gpt-4.1-mini
EVEROS_LLM__API_KEY=
EVEROS_LLM__BASE_URL=https://openrouter.ai/api/v1


# ─── Multimodal LLM (independent from [llm]; vision/audio capable) ────
# Separate model for parsing multimodal content items (image / pdf /
# audio / ...); must support OpenAI image_url parts. Defaults target
# Gemini via OpenRouter so the same key covers chat + multimodal.

EVEROS_MULTIMODAL__MODEL=google/gemini-3-flash-preview
EVEROS_MULTIMODAL__API_KEY=
EVEROS_MULTIMODAL__BASE_URL=https://openrouter.ai/api/v1
# Concurrency cap for parallel multimodal calls (default 4):
# EVEROS_MULTIMODAL__MAX_CONCURRENCY=4
#
# file:// content-item support (read locally by EverOS, not everalgo).
# Size cap per file:// asset (bytes; default 50 MiB):
# EVEROS_MULTIMODAL__FILE_URI_MAX_BYTES=52428800
# Allowlisted base dirs for file:// uris (JSON list). Empty/unset = allow any
# readable file (local-first default); set to confine reads when the API is
# exposed beyond loopback:
# EVEROS_MULTIMODAL__FILE_URI_ALLOW_DIRS=["/srv/uploads"]


# ─── Embedding (OpenAI-protocol /embeddings) ─────────
# Any OpenAI-compatible embedding endpoint plugs in via base_url.
# model / api_key / base_url have no shipped default — set them here
# or in ~/.everos/config.toml before the embedding capability is used.

EVEROS_EMBEDDING__MODEL=Qwen/Qwen3-Embedding-4B
EVEROS_EMBEDDING__API_KEY=
EVEROS_EMBEDDING__BASE_URL=https://api.deepinfra.com/v1/openai
# Runtime knobs — uncomment to override defaults (30s / 3 / 10 / 5):
# EVEROS_EMBEDDING__TIMEOUT_SECONDS=30
# EVEROS_EMBEDDING__MAX_RETRIES=3
# EVEROS_EMBEDDING__BATCH_SIZE=10
# EVEROS_EMBEDDING__MAX_CONCURRENT=5


# ─── Rerank (OpenAI-protocol /rerank) ────────────────
# base_url should point at the rerank endpoint (e.g. .../v1/rerank).

EVEROS_RERANK__MODEL=Qwen/Qwen3-Reranker-4B
EVEROS_RERANK__API_KEY=
EVEROS_RERANK__BASE_URL=https://api.deepinfra.com/v1/inference
# Runtime knobs — uncomment to override defaults (30s / 3 / 10 / 5):
# EVEROS_RERANK__TIMEOUT_SECONDS=30
# EVEROS_RERANK__MAX_RETRIES=3
# EVEROS_RERANK__BATCH_SIZE=10
# EVEROS_RERANK__MAX_CONCURRENT=5


# ─── Storage paths ───────────────────────────────────
# memory-root holds md files + .index/ (LanceDB) + .system.db (SQLite) + ...
# Override the default with EVEROS_MEMORY__ROOT (note the double-underscore
# for nested config keys); see config/default.toml for all tunables.

# EVEROS_MEMORY__ROOT=~/.everos


# ─── HTTP API ────────────────────────────────────────
# Bind for ``everos server start``. Default ``127.0.0.1`` keeps the
# server on loopback only; EverOS ships no built-in authentication (see
# SECURITY.md). Set HOST=0.0.0.0 only after you have your own gateway /
# auth layer in front — the CLI logs a warning if you bind to 0.0.0.0.

# EVEROS_API__HOST=127.0.0.1
# EVEROS_API__PORT=8000


# ─── Observability ───────────────────────────────────

EVEROS_LOG_LEVEL=INFO                 # DEBUG | INFO | WARNING | ERROR
EVEROS_LOG_FORMAT=json                # json | text
# EVEROS_OTEL_ENDPOINT=http://localhost:4317  # OTel exporter (optional)


# ─── Runtime ─────────────────────────────────────────

# TZ used by component.utils.datetime when input has no timezone
TZ=UTC
