132 lines
4.9 KiB
Plaintext
132 lines
4.9 KiB
Plaintext
# Memory OS — Environment Variables
|
|
# Copy this file to .env and fill in your values:
|
|
# cp .env.example .env
|
|
|
|
# ── Required ──────────────────────────────────────────
|
|
|
|
# Redis password (generate with: openssl rand -hex 16)
|
|
REDIS_PASSWORD=
|
|
|
|
# ── 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
|
|
|
|
# ── Embedding Backend ─────────────────────────────────
|
|
|
|
# Choose ONE backend. If both are set, Ollama takes priority (local, zero cost).
|
|
#
|
|
# Option A: Ollama (recommended for production, local, zero latency)
|
|
OLLAMA_BASE_URL=http://localhost:11434
|
|
OLLAMA_EMBEDDING_MODEL=nomic-embed-text
|
|
#
|
|
# Option B: OpenRouter (cloud, pay-per-use, multilingual Qwen3-Embedding-8B)
|
|
# OPENROUTER_API_KEY=sk-or-...
|
|
# EMBEDDING_API_BASE=https://openrouter.ai/api/v1
|
|
# EMBEDDING_MODEL=qwen/qwen3-embedding-8b
|
|
|
|
# API key for non-OpenRouter authenticated endpoints (vLLM with --api-key,
|
|
# custom hosted embedding services). Not needed for OpenRouter (uses
|
|
# OPENROUTER_API_KEY) or local unauthenticated providers.
|
|
# EMBEDDING_API_KEY=your-key-here
|
|
|
|
# ── Strongly Recommended ──────────────────────────────
|
|
|
|
# Agent identity — distinguishes this agent in fabric entries and cross-agent
|
|
# handoffs. Without this, fabric entries use "agent" as a fallback and
|
|
# multi-agent deployments cannot tell agents apart.
|
|
HERMES_AGENT_NAME=hermes
|
|
|
|
# Alternative LLM API keys — the extraction pipeline is provider-agnostic.
|
|
# Priority: ICARUS_ENDPOINT + ICARUS_API_KEY_ENV → DEEPSEEK_API_KEY → OPENROUTER_API_KEY
|
|
# Set DEEPSEEK_API_KEY to route directly to api.deepseek.com (no middleman):
|
|
# DEEPSEEK_API_KEY=sk-...
|
|
|
|
# Fully custom endpoint override (base URL for /v1/chat/completions)
|
|
# ICARUS_ENDPOINT=https://my-custom-api.example.com/v1/chat/completions
|
|
# ICARUS_API_KEY_ENV=CUSTOM_API_KEY
|
|
|
|
# LLM extraction token limit — 1024 is too small, causes fabric truncation
|
|
ICARUS_EXTRACTION_MAX_TOKENS=4096
|
|
|
|
# LLM extraction model (any OpenRouter chat model, or bare name for direct APIs)
|
|
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
|
|
|
|
# ── Docker Compose volumes ─────────────────────────────
|
|
# These override the host paths mounted into the worker container.
|
|
# If unset, docker-compose uses relative paths (./wiki, ./hermes, ./fabric)
|
|
# which are safe defaults for development. Set these ONLY if you need
|
|
# to point the Docker stack at existing production directories.
|
|
# MEMORY_OS_WIKI_PATH=/home/your-user/vault/wiki
|
|
# MEMORY_OS_HERMES_HOME=/home/your-user/.hermes
|
|
# MEMORY_OS_FABRIC_DIR=/home/your-user/vault/fabric
|
|
|
|
# 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
|