# ============================================================================= # Reflexio (open source) — example environment file # ============================================================================= # Copy to `.env` and fill in the values you need. The open-source CLI runs with # SQLite storage and no auth by default, so the only thing you must set is one # LLM provider key. # # LEGEND: # (optional) = safe to leave empty; code default shown # options: = allowed values for a categorical variable # ============================================================================= # ============================================================================= # 1. LLM PROVIDER KEYS # ============================================================================= # Set at least one API key. The system auto-detects available providers and # selects appropriate default models per role (generation, evaluation, # should_run, pre_retrieval, embedding). # # Provider priority when multiple keys are set: # Anthropic > Gemini > OpenRouter > DeepSeek > MiniMax > DashScope > xAI > # Moonshot > ZAI > OpenAI # For the embedding role, if the top-priority provider has no embedding support, # the next embedding-capable provider is used (currently OpenAI or Gemini). # # Model resolution order (highest priority first): # 1. Org-level LLMConfig override # 2. Non-empty values in # reflexio/server/site_var/site_var_sources/llm_model_setting.json # 3. Auto-detected default for the primary available provider OPENAI_API_KEY= ANTHROPIC_API_KEY= OPENROUTER_API_KEY= GEMINI_API_KEY= MINIMAX_API_KEY= DEEPSEEK_API_KEY= DASHSCOPE_API_KEY= ZAI_API_KEY= MOONSHOT_API_KEY= XAI_API_KEY= # ============================================================================= # 2. OBSERVABILITY (optional) # ============================================================================= # Set to enable Braintrust LLM observability (https://www.braintrust.dev). # BRAINTRUST_API_KEY= # BRAINTRUST_PROJECT_NAME=reflexio # ============================================================================= # 3. STORAGE # ============================================================================= # Local storage directory — houses disk-storage artifacts and the SQLite # database file (reflexio.db). (optional; default ~/.reflexio/data/) LOCAL_STORAGE_PATH= # Default org id for no-auth / local mode. Controls the request org, and hence # the config file name (config_.json) and the SQLite data scope. Override # it to run a second local backend under a distinct org so the two don't collide # on the same config file under ~/.reflexio/. (optional; default self-host-org) REFLEXIO_DEFAULT_ORG_ID=self-host-org # ============================================================================= # 4. EXTRACTION # ============================================================================= # Per-interaction content token budget when formatting interactions into an # extraction/evaluation prompt. When an interaction's content exceeds this many # tokens, the first half and last half are kept (head + tail) and the middle is # elided. (optional; default 512; set <= 0 to disable slicing and pass full # content) REFLEXIO_MAX_INTERACTION_CONTENT_TOKENS=512 # Warn when queued post-persist async publish learning jobs reach this depth. # The queue is unbounded so acknowledged publishes do not drop learning due to # transient limiter pressure. (optional; default 1000) REFLEXIO_PUBLISH_LEARNING_QUEUE_WARN_SIZE=1000 # Worker threads for post-persist async publish learning. (optional; default # matches the configured publish concurrency limit, currently 4) REFLEXIO_PUBLISH_LEARNING_WORKERS= # Inactivity delay in seconds before a quiet session is evaluated by agent-success # evaluation. (optional; default 600 = 10 minutes) GROUP_EVALUATION_DELAY_SECONDS=600 # Opt-in background sweep that re-embeds interactions whose embedding failed at # ingest (empty vector, no vector row -> invisible to vector/hybrid search). Runs # per-org on the shared lineage-GC scheduler cadence. Off by default so the GC # scheduler's start conditions are unchanged unless you opt in. # options: true | false (optional; default false) REFLEXIO_MISSING_VECTOR_BACKFILL_ENABLED=false # Max interactions re-embedded per org per sweep tick (bounds embedding cost and # log volume). (optional; default 200; values <= 0 fall back to the default) REFLEXIO_MISSING_VECTOR_BACKFILL_CAP=200 # Bounded per-tick org fan-out width for the lineage-GC / expiry-reclamation # scheduler. SQLite storage is pinned to serial (1) regardless of this value. # (optional; default 8; non-numeric or <=0 falls back to default) REFLEXIO_SCHEDULER_ORG_WORKERS= # ============================================================================= # 5. TESTING & LOGGING # ============================================================================= # Verbose debug logging to console. options: true | false DEBUG_LOG_TO_CONSOLE=true # Mark the process as a test environment. options: true | false IS_TEST_ENV=true # Return canned LLM responses instead of calling providers. options: true | false MOCK_LLM_RESPONSE=false # Override the base directory for log files. The .reflexio/logs suffix is always # preserved, so e.g. REFLEXIO_LOG_DIR=/tmp/foo writes logs to # /tmp/foo/.reflexio/logs/. (optional; default $HOME -> ~/.reflexio/logs/) REFLEXIO_LOG_DIR=