# Memory OS — Environment Variables # Copy this file to .env and fill in your values: # cp .env.example .env # ── Required ────────────────────────────────────────── # OpenRouter API key (for embeddings and LLM extraction) OPENROUTER_API_KEY=sk-or-... # Redis password (generate with: openssl rand -hex 16) REDIS_PASSWORD=change-me # ── Paths ───────────────────────────────────────────── # Where Icarus writes fabric entries (absolute path required — systemd does not expand ~) FABRIC_DIR=/home/your-user/vault/fabric # Vault root for Vault Curator, wiki, and backfill scripts VAULT_PATH=/home/your-user/vault # Wiki directory for Qdrant ingestion WIKI_ROOT=/home/your-user/vault/wiki # Hermes home (usually ~/.hermes) HERMES_HOME=/home/your-user/.hermes # State database path (SQLite with FTS5 for session search) STATE_DB_PATH=/home/your-user/.hermes/state.db # Logs directory HERMES_LOGS_DIR=/home/your-user/.hermes/logs # DLQ (Dead Letter Queue) state file HERMES_DLQ_PATH=/home/your-user/.hermes/wiki_ingest_failures.json # DLQ report output (used by dlq_manager.py) HERMES_DLQ_REPORT_LOG=/home/your-user/.hermes/cron/output/dlq-report.log HERMES_DLQ_REPORT_DIR=/home/your-user/.hermes/cron/output # Telemetry log for context_enhancer.py query tracking TELEMETRY_LOG_PATH=/home/your-user/.hermes/logs/query-telemetry.jsonl # Reflection trigger log path REFLECTION_LOG_PATH=/home/your-user/.hermes/logs/reflection_trigger.log # MaaS env path (reflection_trigger.py loads env from this location) MAA_ENV_PATH=/home/your-user/.env # ── Strongly Recommended ────────────────────────────── # LLM extraction token limit — 1024 is too small, causes fabric truncation ICARUS_EXTRACTION_MAX_TOKENS=4096 # LLM extraction model (any OpenRouter chat model) ICARUS_EXTRACTION_MODEL=deepseek/deepseek-v4-flash # Embedding dimensions — must match Qdrant collection schema EMBEDDING_DIMS=4096 # Qdrant collection name COLLECTION_NAME=knowledge_base # ── Optional ────────────────────────────────────────── # Obsidian integration # ICARUS_OBSIDIAN=1 # OBSIDIAN_VAULT_PATH=/home/your-user/vault # Fallback truncation limits (only used when LLM extraction fails) # ICARUS_RESULT_MAX_CHARS=500 # ICARUS_TASK_MAX_CHARS=300 # Training/eval (Together AI) # TOGETHER_API_KEY=tok-... # Alternative OpenRouter keys (tried in order by context_enhancer.py) # OPENROUTER_FULL_API_KEY=sk-or-... # OPENROUTER_DS_API_KEY=sk-or-... # Docker: wiki mount path inside worker container # WIKI_PATH=/wiki # Logging # LOG_LEVEL=INFO # CURATOR_LOG_LEVEL=INFO # ARQ worker tuning # ARQ_MAX_JOBS=10 # ARQ_JOB_TIMEOUT=300 # ARQ_KEEP_RESULT=3600 # Micro-reflection budget # MICRO_REFLECTION_MAX_PER_HOUR=5