-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
128 lines (111 loc) · 6.31 KB
/
Copy path.env.example
File metadata and controls
128 lines (111 loc) · 6.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# ─── Lethe Environment Configuration ────────────────────────────────
# Copy to .env and adjust values.
#
# This file is the SINGLE source of truth for all runtime configuration.
# docker-compose.yaml reads it via env_file with no overrides.
#
# ═════════════════════════════════════════════════════════════════════
# K8s Inference Cluster (2× RX 7900 XTX, 24 GB VRAM each)
# ═════════════════════════════════════════════════════════════════════
#
# GPU: Qwen3.6-27B Q8_0 (28.6 GB) via RPC across both nodes
# 131K ctx, Q8_0 KV cache, --flash-attn, --parallel 1
# GPU: Qwen3-Embedding-0.6B Q8_0 ×2 (--parallel 8, 16 cluster slots)
# GPU: DeBERTa NLI int8 ×2
# CPU: STT (Speaches), TTS (Kokoro)
#
# VRAM budget per node:
# LLM weights ~14.3 + KV ~4-5 + Embed 0.65 + NLI 0.6
# + OS 1.5 + scratch 0.5 ≈ 22-23 / 24 GB
# ─── K8s Service URLs ───────────────────────────────────────────────
LETHE_LLM_URL=http://10.4.4.100:30080
LETHE_EMBED_URL=http://10.4.4.100:30090,http://10.4.4.101:30090
LETHE_NLI_URL=http://10.4.4.100:30070,http://10.4.4.101:30070
LETHE_STT_URL=http://10.4.4.100:9095
# ─── LLM (Qwen3.6-27B Q8_0, RPC-distributed) ──────────────────────
LETHE_LLM_BACKEND=llamacpp
LETHE_LLM_MODEL=
LETHE_LLM_N_CTX=131072
LETHE_LLM_MAX_CONCURRENT=1
LETHE_LLM_TIMEOUT_S=1200.0
LETHE_LLM_MAX_HTTP_RETRIES=2
LETHE_LLM_HTTP_RETRY_BASE_S=1.0
# ─── Embedding (2× GPU, --parallel 8 = 16 slots) ───────────────────
LETHE_EMBED_MAX_CONCURRENT=16
LETHE_EMBED_BATCH_SIZE=16
LETHE_EMBED_TIMEOUT_S=120.0
LETHE_EMBED_MODEL_DIMENSIONS=1024
# ─── NLI (2× GPU, DeBERTa int8) ────────────────────────────────────
LETHE_NLI_BATCH_SIZE=64
LETHE_NLI_TIMEOUT_S=60.0
LETHE_NLI_MAX_CONCURRENT=8
# ─── Web Research ───────────────────────────────────────────────────
LETHE_SEARCH_MAX_INFLIGHT=8
# ─── Context / Thinking ──────────────────────────────────────────────
LETHE_CONTEXT_RATIO=0.55
LETHE_PPR_TOP_K=700
LETHE_THINKING_MIN_TOKENS=4096
LETHE_THINKING_MAX_TOKENS=12288
# ─── Neo4j ──────────────────────────────────────────────────────────
LETHE_NEO4J_URI=bolt://neo4j:7687
LETHE_NEO4J_USER=neo4j
LETHE_NEO4J_PASSWORD=lethe-dev
NEO4J_AUTH=neo4j/lethe-dev
NEO4J_server_memory_pagecache_size=4G
NEO4J_server_memory_heap_initial__size=1G
NEO4J_server_memory_heap_max__size=2G
# ─── SearXNG ─────────────────────────────────────────────────────────
LETHE_SEARXNG_URL=http://searxng:8080
LETHE_SEARXNG_TIMEOUT_S=30.0
LETHE_SEARXNG_MAX_RESULTS=200
LETHE_SEARXNG_MAX_PAGES=1
LETHE_SEARXNG_MAX_CONCURRENT=5
LETHE_SEARXNG_CATEGORIES=general,science
# ─── CloakBrowser Pool (3× instances, each with dedicated Tor) ──────
LETHE_CDP_POOL=ws://cloak-1:9222,ws://cloak-2:9222,ws://cloak-3:9222
LETHE_PAGE_TIMEOUT_MS=90000
LETHE_BROWSER_MAX_CONCURRENT=8
LETHE_FALLBACK_CONCURRENCY=16
# ─── Proxy Pool (Tor SOCKS5 for HTTP fallback + PDF fetches) ────────
# CloakBrowser routes through Tor via --proxy-server in docker-compose.
# SearXNG makes direct outgoing requests (no Tor proxy configured).
# HTTP fallback and PDF direct fetch use this pool.
LETHE_PROXY_POOL=socks5h://tor-1:9050,socks5h://tor-2:9050,socks5h://tor-3:9050
# ─── Speech-to-Text ─────────────────────────────────────────────────
LETHE_STT_TIMEOUT_S=120.0
LETHE_STT_LANGUAGE=
LETHE_STT_MAX_DURATION_S=600
# ─── Termination / Budget ────────────────────────────────────────────
LETHE_BUDGET_ITERATIONS=200
LETHE_WALL_CLOCK_TIMEOUT_S=7200
LETHE_BUDGET_ALPHA=4.0
LETHE_MIN_ITERS_CONVERGENCE=5
LETHE_CONVERGENCE_WEIGHT=0.3
LETHE_CONVERGENCE_TERM_THRESHOLD=0.82
LETHE_PLATEAU_WINDOW=3
LETHE_PLATEAU_STD_THRESHOLD=0.03
LETHE_PLATEAU_MIN_LEVEL=0.60
LETHE_MAX_REPAIR_ATTEMPTS=2
# ─── Embedding Algebra ───────────────────────────────────────────────
LETHE_EVIDENCE_GA_FLOOR=0.62
LETHE_SEMANTIC_DEDUP_THRESHOLD=0.95
LETHE_STRENGTH_FLOOR=0.30
LETHE_STRENGTH_CEIL=0.95
LETHE_SIMILAR_TO_THRESHOLD=0.55
LETHE_QUERY_DEDUP_THRESHOLD=0.92
LETHE_DOMAIN_FAIL_THRESHOLD=2
# ─── Context Composition ─────────────────────────────────────────────
LETHE_SCORING_GA_WEIGHT=0.5
LETHE_PPR_SOFTMAX_TAU=3.0
# ─── Session Management ──────────────────────────────────────────────
LETHE_SESSION_RETENTION_DAYS=7
# ─── API Server (Queue & Auth) ────────────────────────────────────────
# Comma-separated Bearer tokens. If empty, auth is disabled (dev mode).
# Generate: python -c "import secrets; print(','.join(secrets.token_urlsafe(32) for _ in range(10)))"
# Key 1 → Open WebUI, Key 2 → Lex, Keys 3-10 → reserved.
LETHE_API_KEYS=
LETHE_PER_KEY_MAX_QUEUED=8
LETHE_QUEUE_SIZE=64
LETHE_JOB_TIMEOUT_S=14400
# ─── Logging ─────────────────────────────────────────────────────────
LETHE_LOG_LEVEL=DEBUG