166 lines
6.7 KiB
TOML
166 lines
6.7 KiB
TOML
# everos default configuration.
|
|
#
|
|
# Lookup order (later overrides earlier):
|
|
# 1. This file (shipped defaults; lowest priority)
|
|
# 2. <root>/everos.toml — user config (optional; root resolved by
|
|
# resolve_root(): EVEROS_ROOT env > ~/.everos)
|
|
# 3. Environment variables — EVEROS_<SECTION>__<KEY>
|
|
# e.g. EVEROS_SQLITE__BUSY_TIMEOUT_MS=10000
|
|
# 4. Programmatic init args (highest priority)
|
|
#
|
|
# `null` (omitted in TOML) means "use the Pydantic default declared in code".
|
|
|
|
[memory]
|
|
# Effective timezone for date buckets and timestamps. Drives
|
|
# component.utils.datetime; this is the SOLE source — OS `TZ` is not
|
|
# read. Override via `EVEROS_MEMORY__TIMEZONE` env var if needed.
|
|
timezone = "UTC"
|
|
|
|
[api]
|
|
# HTTP server bind for ``everos server start``. Default ``127.0.0.1``
|
|
# keeps the API on loopback only — EverOS ships no built-in auth (see
|
|
# SECURITY.md threat model). Only set ``host = "0.0.0.0"`` after you
|
|
# have placed your own gateway / auth layer in front of the server.
|
|
# Override via EVEROS_API__HOST and EVEROS_API__PORT.
|
|
host = "127.0.0.1"
|
|
port = 8000
|
|
|
|
[sqlite]
|
|
# PRAGMA journal_mode — WAL is the recommended high-concurrency mode.
|
|
journal_mode = "WAL"
|
|
# PRAGMA synchronous — NORMAL is safe under WAL and ~2x faster than FULL.
|
|
synchronous = "NORMAL"
|
|
# PRAGMA foreign_keys — must be explicitly enabled per connection.
|
|
foreign_keys = true
|
|
# PRAGMA temp_store — MEMORY keeps query intermediates in RAM (no IO impact
|
|
# on durability — only affects sort/group/temp-table calculation buffers).
|
|
temp_store = "MEMORY"
|
|
# PRAGMA busy_timeout — milliseconds to wait on a locked DB before erroring.
|
|
busy_timeout_ms = 5000
|
|
# PRAGMA journal_size_limit — cap WAL/journal at ~64 MB.
|
|
journal_size_limit_bytes = 67108864
|
|
# PRAGMA cache_size — KB of page cache (per connection).
|
|
cache_size_kb = 2048
|
|
|
|
[lancedb]
|
|
# Read consistency interval in seconds.
|
|
# omitted / null -> no consistency check (fastest reads)
|
|
# 0 -> strict (every read checks updates)
|
|
# >0 -> eventual (interval seconds between checks)
|
|
# Uncomment to override:
|
|
# read_consistency_seconds = 5.0
|
|
|
|
[llm]
|
|
# Provider-agnostic OpenAI-protocol client config. Override via env:
|
|
# EVEROS_LLM__MODEL, EVEROS_LLM__API_KEY, EVEROS_LLM__BASE_URL
|
|
# Or set the field directly in this file (<root>/everos.toml).
|
|
model = "openai/gpt-4.1-mini"
|
|
api_key = ""
|
|
base_url = "https://openrouter.ai/api/v1"
|
|
|
|
[multimodal]
|
|
# Independent LLM for multimodal parsing (everalgo-parser); must accept
|
|
# image / pdf / audio image_url parts. Override via env:
|
|
# EVEROS_MULTIMODAL__MODEL, EVEROS_MULTIMODAL__API_KEY, EVEROS_MULTIMODAL__BASE_URL
|
|
model = "google/gemini-3-flash-preview"
|
|
api_key = ""
|
|
base_url = "https://openrouter.ai/api/v1"
|
|
max_concurrency = 4
|
|
# file:// content-item support (read locally by EverOS, not everalgo).
|
|
# file_uri_allow_dirs: empty = allow any readable file (local-first default);
|
|
# list base dirs to confine reads when the API is exposed.
|
|
# file_uri_allow_dirs = ["/srv/uploads"]
|
|
# file_uri_max_bytes = 52428800 # 50 MiB cap per file:// asset
|
|
|
|
[embedding]
|
|
# OpenAI-compatible embedding endpoint. Override via env:
|
|
# EVEROS_EMBEDDING__MODEL, EVEROS_EMBEDDING__API_KEY, EVEROS_EMBEDDING__BASE_URL
|
|
# model and base_url ship with recommended defaults; api_key must be set.
|
|
model = "Qwen/Qwen3-Embedding-4B"
|
|
api_key = ""
|
|
base_url = "https://api.deepinfra.com/v1/openai"
|
|
timeout_seconds = 30.0
|
|
max_retries = 3
|
|
batch_size = 10
|
|
max_concurrent = 5
|
|
|
|
[rerank]
|
|
# Rerank provider. Override via env:
|
|
# EVEROS_RERANK__PROVIDER, EVEROS_RERANK__MODEL, EVEROS_RERANK__API_KEY,
|
|
# EVEROS_RERANK__BASE_URL
|
|
# `provider` picks the request-shape:
|
|
# - "deepinfra" -> POST {base_url}/{model} (DeepInfra inference API)
|
|
# - "vllm" -> POST {base_url}/rerank (OpenAI-compat rerank endpoint)
|
|
provider = "deepinfra"
|
|
model = "Qwen/Qwen3-Reranker-4B"
|
|
api_key = ""
|
|
base_url = "https://api.deepinfra.com/v1/inference"
|
|
timeout_seconds = 30.0
|
|
max_retries = 3
|
|
batch_size = 10
|
|
max_concurrent = 5
|
|
|
|
[boundary_detection]
|
|
# Passed through to ``everalgo.BoundaryDetector.adetect``.
|
|
hard_token_limit = 65536
|
|
hard_msg_limit = 500
|
|
|
|
[memorize]
|
|
# Conversation mode. Selects the boundary detector and which pipelines run:
|
|
# "chat" -> BoundaryDetector + user_memory only
|
|
# "agent" -> AgentBoundaryDetector + user_memory + agent_memory
|
|
# A single service process serves one mode at a time; switching mode
|
|
# requires a restart. Override via EVEROS_MEMORIZE__MODE.
|
|
mode = "agent"
|
|
|
|
[knowledge]
|
|
# Max bytes for an uploaded knowledge document (default 50 MiB). Oversized
|
|
# uploads are rejected with HTTP 422 before parsing/extraction. Note: the
|
|
# multipart body is still buffered by the server first, so set a reverse-proxy
|
|
# / gateway body-size limit for hard ingress protection.
|
|
# Override via EVEROS_KNOWLEDGE__MAX_UPLOAD_BYTES.
|
|
max_upload_bytes = 52_428_800 # 50 MiB
|
|
|
|
[knowledge.search]
|
|
recall_n = 200
|
|
rerank_n = 50
|
|
# "lambda" is a Python keyword — aliased as "lam" in Settings
|
|
lambda = 0.1
|
|
mass_top_m = 50
|
|
top_k_cap = 100
|
|
|
|
# Maximum wall-clock for one memorize() invocation while holding the
|
|
# per-session lock. On timeout the outer asyncio.timeout cancels the call
|
|
# and the lock auto-releases so subsequent concurrent /add on the same
|
|
# session aren't deadlocked. Covers boundary LLM + memcell writes +
|
|
# synchronous portion of pipeline dispatch.
|
|
# Override via EVEROS_MEMORIZE__SESSION_LOCK_TIMEOUT_SECONDS.
|
|
session_lock_timeout_seconds = 360.0
|
|
|
|
[clustering]
|
|
# Geometry-clustering: cosine similarity threshold and time window.
|
|
# Episodes older than ``time_window_days`` from the newest cluster
|
|
# member are excluded from merge consideration.
|
|
# Override via EVEROS_CLUSTERING__THRESHOLD, EVEROS_CLUSTERING__TIME_WINDOW_DAYS.
|
|
threshold = 0.65
|
|
time_window_days = 7.0
|
|
|
|
|
|
[observability]
|
|
# OpenTelemetry tracing export. Off by default; pure OTLP/HTTP, vendor-neutral
|
|
# (Langfuse, an OTel Collector, or any OTLP backend). EverOS ships no vendor SDK.
|
|
# Override via EVEROS_OBSERVABILITY__ENABLED, EVEROS_OBSERVABILITY__ENDPOINT, etc.
|
|
enabled = false
|
|
exporter = "otlp_http" # "otlp_http" | "none"
|
|
endpoint = "" # e.g. https://us.cloud.langfuse.com/api/public/otel/v1/traces
|
|
service_name = "everos"
|
|
sample_rate = 1.0 # 0.0 to 1.0
|
|
# Privacy: false (default) = metadata only; true also emits query / extracted
|
|
# memory / .md paths as span input/output (redacted + truncated).
|
|
capture_content = false
|
|
# Recall-quality scores pushed to Langfuse (Langfuse-specific REST, off the
|
|
# OTLP stream). Only fires when langfuse_public_key/secret_key/host are set
|
|
# (via everos.toml or EVEROS_OBSERVABILITY__LANGFUSE_* — secrets, not shipped here).
|
|
emit_recall_scores = true
|
|
recall_hit_threshold = 0.6 # only meaningful for calibrated methods
|