-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenv.template
More file actions
192 lines (167 loc) · 6.11 KB
/
Copy pathenv.template
File metadata and controls
192 lines (167 loc) · 6.11 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# PostgreSQL initialization variables (required by the container)
POSTGRES_USER=memuser
POSTGRES_PASSWORD=mempass
POSTGRES_DB=memdb
POSTGRES_HOST=db
POSTGRES_PORT=5432
POSTGRES_SCHEMA=public
# Auto-apply SQL migrations from backend/orchestrator/db_migrations on startup
# DB_AUTO_MIGRATE=true
# DB_AUTO_MIGRATE_FAIL_FAST=true
# Timezone
TZ=UTC
# LLM Configuration (OpenAI-compatible API)
# For Ollama: use http://host.docker.internal:11434/v1 (or your Ollama host + /v1)
# For OpenAI: use https://api.openai.com/v1
LLM_BASE_URL=http://host.docker.internal:11434/v1
LLM_API_KEY=
LLM_CHAT_MODEL_FAST=llama3.2:3b-instruct-q4_K_M
LLM_CHAT_MODEL_SMART=llama3:70b-instruct
OLLAMA_CHAT_KEEP_ALIVE=-1
LLM_TIMEOUT=120
# Embeddings (uses Ollama directly - not OpenAI compatible yet)
OLLAMA_HOST=http://host.docker.internal:11434
OLLAMA_EMBED_MODEL=nomic-embed-text:latest
# Target tokenizer context window for /api/embed truncation
OLLAMA_EMBED_MAX_INPUT_TOKENS=2048
# Hard safety cap before embedding requests (UTF-8 bytes)
# Used only if the Ollama server does not support /api/embed and falls back to /api/embeddings
OLLAMA_EMBED_MAX_INPUT_BYTES=3000
# User auth
GOOGLE_CLIENT_ID=your-google-client-id.apps.googleusercontent.com
# Required: comma-separated allowlist. Empty is rejected at startup.
ALLOWED_USERS=user@example.com
# Service-to-service auth
ORCHESTRATOR_API_KEY=change-me
# Internet search (LangSearch)
# Obtain an API key from https://langsearch.com/dashboard and set it here to enable the LLM web search tool
LANGSEARCH_API_KEY=
# Optional overrides:
# LANGSEARCH_API_URL=https://api.langsearch.com/v1/web-search
# LANGSEARCH_MAX_RESULTS=5
# LANGSEARCH_TIMEOUT=30
# LANGSEARCH_MAX_RETRIES=3
# LANGSEARCH_RETRY_BASE_DELAY_SECONDS=1.5
# LANGSEARCH_RETRY_MAX_DELAY_SECONDS=8
# LANGSEARCH_MIN_INTERVAL_SECONDS=1.05
# WEB_FETCH_TIMEOUT=20
# WEB_FETCH_USER_AGENT=digital-brain/1.0
# WEB_FETCH_MAX_CHARACTERS=20000
# Daily briefing news search (Tavily)
TAVILY_API_KEY=
# Optional overrides:
# TAVILY_API_URL=https://api.tavily.com/search
# TAVILY_TIMEOUT=30
# TAVILY_NEWS_MAX_RETRIES=3
# TAVILY_NEWS_RETRY_BASE_DELAY_SECONDS=1.0
# News provider (NewsData.io)
# Free-plan friendly defaults for daily briefing ingestion
NEWSDATA_API_KEY=
# Optional overrides:
# NEWSDATA_API_URL=https://newsdata.io/api/1/news
# NEWSDATA_LANGUAGE=en
# NEWSDATA_TIMEOUT=20
# NEWSDATA_MAX_QUERIES_PER_RUN=8
# NEWSDATA_RESULTS_PER_QUERY=10
# Reverse geocoding fallback (Geoapify)
GEOAPIFY_API_KEY=
# GEOAPIFY_TIMEOUT_SECONDS=5
# Current-location place inference
# LOCATION_INFERENCE_BASE_RADIUS_M=45
# LOCATION_INFERENCE_MAX_RADIUS_M=150
# LOCATION_INFERENCE_ACCURACY_MULTIPLIER=1.0
# LOCATION_INFERENCE_CACHE_SECONDS=300
CURRENT_USER_INFO={"name": "Your Name", "email": "your.email@example.com"}
# Document storage
DOCUMENT_STORAGE_DIR=/app/storage/documents
# Max document chars persisted in `documents.content`
# DOCUMENT_MAX_CONTENT_CHARS=60000
# Legacy single-vector fallback payload cap (chars)
# DOCUMENT_EMBED_MAX_CHARS=8000
# Chunking controls for document embedding
# DOCUMENT_EMBED_CHUNK_CHARS=1200
# DOCUMENT_EMBED_CHUNK_OVERLAP_CHARS=200
# DOCUMENT_EMBED_MAX_CHUNKS=64
# Vector search blending for chunk-level retrieval
# DOCUMENT_CHUNK_SEARCH_CANDIDATE_MULTIPLIER=8
# DOCUMENT_CHUNK_SCORE_BEST_WEIGHT=0.75
# DOCUMENT_CHUNK_SCORE_MEAN_WEIGHT=0.25
# DOCUMENT_COMBINED_SCORE_CHUNK_WEIGHT=0.85
# DOCUMENT_COMBINED_SCORE_DOC_WEIGHT=0.15
# DOCUMENT_EMBED_CHUNK_METADATA_MAX_CHARS=240
# DOCUMENT_EMBED_CHUNK_METADATA_TAG_LIMIT=4
# Translation chunk size used when storing translated document content
# DOCUMENT_TRANSLATION_CHUNK_CHARS=5000
# DOCUMENT_LABEL_MAX_COUNT=5
# Telegram bot + Immich photo ingest
TELEGRAM_BOT_TOKEN=
# Required when TELEGRAM_BOT_TOKEN is set: comma-separated numeric chat IDs allowed to upload
TELEGRAM_ALLOWED_CHAT_IDS=
# Required when TELEGRAM_BOT_TOKEN is set: token sent in X-Telegram-Bot-Api-Secret-Token header
TELEGRAM_WEBHOOK_SECRET=
IMMICH_SERVER_URL=
IMMICH_API_KEY=
# Optional identifier that will appear in Immich as the "device"
IMMICH_DEVICE_ID=telegram-bot
# Optional overrides for request timeouts (seconds)
# TELEGRAM_HTTP_TIMEOUT=20
# IMMICH_HTTP_TIMEOUT=45
HA_URL=
HA_TOKEN=
# AGENT_MAX_STEPS=15
# AGENT_MAX_TOOL_CALLS=20
# AGENT_MAX_REPAIRS=5
# AGENT_REPEATED_CALLS_THRESHOLD=3
# AGENT_EMPTY_RESULTS_THRESHOLD=3
# AGENT_ENABLE_INTENT_ROUTING=true
# AGENT_ENABLE_VALIDATION=true
# AGENT_ENABLE_NO_PROGRESS_DETECTION=true
# Intent Router (optional: use a smaller/faster model for intent classification)
# Falls back to LLM_BASE_URL/LLM_CHAT_MODEL_FAST if not set
# INTENT_ROUTER_BASE_URL=
# INTENT_ROUTER_MODEL=
# INTENT_ROUTER_API_KEY=
# INTENT_ROUTER_TIMEOUT=10
# Skills configuration
# SKILLS_DIR=skill_definitions
# SKILLS_MAX_ACTIVE=5
# SKILLS_MIN_CONFIDENCE=0.6
# SKILLS_CACHE_EMBEDDINGS=true
# AGENT_TRACE_ENABLED=true
# AGENT_TRACE_LEVEL=info # debug, info, decision, warning, error
# AGENT_TRACE_TIMESTAMPS=false
# AGENT_TRACE_TRUNCATE=150 # Max characters for truncated output
# Emergency stock agent (Google Sheets)
# EMERGENCY_STOCK_SHEET_ID=
# EMERGENCY_STOCK_SERVICE_ACCOUNT_JSON=
# EMERGENCY_STOCK_MOVE_TO_CONSUMPTION_DAYS=60
# BRING_EMAIL=
# BRING_PASSWORD=
# BRING_LIST_NAME=
# BRING_PUBLIC_UUID=
# BRING_COUNTRY=DE
# Email notifications (SMTP)
# RESEND_API_KEY=
# RESEND_FROM=
# Robot Gateway - MQTT broker connection
# Username and password are required — Mosquitto generates its password file from these on startup
MQTT_BROKER_HOST=mosquitto
MQTT_BROKER_PORT=1883
MQTT_USERNAME=gateway
MQTT_PASSWORD=change-me-mqtt
# Robot Gateway - HTTP port
ROBOT_GATEWAY_PORT=8001
# Robot Gateway - Capture relay
# Public base URL the robot and browser can reach for relay connections
CAPTURE_RELAY_PUBLIC_BASE_URL=http://localhost:8001
# Shared signing secret for short-lived relay/viewer tokens
CAPTURE_RELAY_TOKEN_SECRET=change-me-relay-secret
# Optional overrides:
# CAPTURE_RELAY_TOKEN_TTL_SECONDS=300
# CAPTURE_RELAY_SESSION_TTL_SECONDS=300
# CAPTURE_RELAY_IDLE_TIMEOUT_SECONDS=30
# CAPTURE_RELAY_HEARTBEAT_TIMEOUT_SECONDS=20
# CAPTURE_RELAY_AUDIO_BUFFER_CHUNKS=32
# Robot Gateway - Migrations
# ROBOT_GATEWAY_AUTO_MIGRATE=true
# ROBOT_GATEWAY_AUTO_MIGRATE_FAIL_FAST=true