-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenv.example
More file actions
174 lines (156 loc) · 6.56 KB
/
Copy pathenv.example
File metadata and controls
174 lines (156 loc) · 6.56 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
# MONITOR repository environment variables
# Copy this file to .env and fill in your own values.
# =============================================================================
# UI Backend
# =============================================================================
UI_HOST=0.0.0.0
UI_PORT=8000
# Comma-separated list of allowed CORS origins for the FastAPI server
UI_CORS_ORIGINS=http://localhost:3000
# =============================================================================
# Core database credentials (used by infra/docker-compose.yml)
# =============================================================================
NEO4J_PASSWORD=changeme-neo4j
MONGODB_PASSWORD=changeme-mongodb
MINIO_PASSWORD=changeme-minio
OPENSEARCH_PASSWORD=changeme-opensearch
POSTGRES_PASSWORD=changeme-postgres
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
# Pydantic Settings does NOT expand ${VAR}; hardcode the password here.
# When changing MONGODB_PASSWORD, update this URI in lockstep.
MONGODB_URI=mongodb://monitor:changeme-mongodb@localhost:27017/monitor?authSource=admin
QDRANT_URI=http://localhost:6333
# Storage backend selector:
# minio = local MinIO or any S3-compatible service via MINIO_* / STORAGE_ENDPOINT
# s3 = AWS S3 (leave STORAGE_ENDPOINT blank for AWS)
# folder = store uploaded files directly on disk
STORAGE_BACKEND=minio
STORAGE_ENDPOINT=
STORAGE_FALLBACK_TO_LOCAL=true
LOCAL_STORAGE_PATH=.local_storage
MINIO_ENDPOINT=http://localhost:9000
MINIO_ACCESS_KEY=monitor
MINIO_SECRET_KEY=${MINIO_PASSWORD}
OPENSEARCH_URL=https://localhost:9200
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_USER=monitor
POSTGRES_DB=monitor
REDIS_URL=redis://localhost:6379/0
REDIS_ENABLED=true
REDIS_KEY_PREFIX=monitor
# =============================================================================
# MCP server configuration
# =============================================================================
MCP_SERVER_PORT=8080
MCP_AUTH_SECRET=replace-with-random-secret
# =============================================================================
# Performance tuning
# =============================================================================
NEO4J_HEAP_INITIAL=512m
NEO4J_HEAP_MAX=2G
NEO4J_PAGECACHE=1G
MONGODB_CACHE_SIZE=1024
QDRANT_M=16
QDRANT_EF_CONSTRUCT=100
# =============================================================================
# LLM + embedding configuration
# =============================================================================
# LLM_PROVIDER is intentionally NOT set here — the runtime resolves provider
# from the `llm_providers` PostgreSQL table (seeded by `monitor init` or the
# scripts/seed_*_provider.py scripts). See docs/architecture/LLM_REGISTRY.md.
LLM_MODEL=claude-sonnet-4-20250514
LLM_TEMPERATURE=0.7
LLM_MAX_TOKENS=4096
ANTHROPIC_API_KEY=
OPENAI_API_KEY=
# GitHub Models (PAT with models:read scope — any of these three is accepted)
GITHUB_MODELS_TOKEN=
# GITHUB_TOKEN=
# GH_TOKEN=
GITHUB_MODELS_BASE_URL=https://models.github.ai/inference
GITHUB_MODELS_MODEL=gpt-4.1-mini
# Google AI Studio (Gemini)
GOOGLE_API_KEY=
GOOGLE_MODEL=gemini-2.5-flash
# Z.AI (ZhipuAI)
Z_AI_API_KEY=your_z_ai_api_key_here
Z_AI_MODEL=glm-5.1
Z_AI_BASE_URL=https://api.z.ai/api/coding/paas/v4
# MiniMax AI
MINIMAX_API_KEY=
MINIMAX_BASE_URL=https://api.minimax.io/anthropic
# Local Ollama
OLLAMA_ENDPOINT=http://localhost:11434
OLLAMA_MODEL=qwen2.5:latest
EMBEDDING_PROVIDER=ollama
EMBEDDING_MODEL=nomic-embed-text:latest
EMBEDDING_DIMENSION=768
# Vision model for image ingestion (must support image_url content)
# Options: gpt-4o-mini, gpt-4o, claude-3-5-sonnet-20241022, gemini/gemini-1.5-flash
VISION_MODEL=gpt-4o-mini
# =============================================================================
# Ingestion queue tuning
# =============================================================================
# Keep at 1 unless you have measured that your machine and LLM provider can
# safely handle parallel ingestion.
MONITOR_INGEST_MAX_WORKERS=1
MONITOR_INGEST_TIMEOUT=2700
MONITOR_MAX_INGEST_FILE_BYTES=209715200
REDIS_CACHE_TTL_SECONDS=30
REDIS_SOLO_PLAY_TTL_SECONDS=15
REDIS_SOCKET_TIMEOUT=0.15
REDIS_CONNECT_TIMEOUT=0.15
# =============================================================================
# Observability + flags
# =============================================================================
LOG_LEVEL=INFO
ENABLE_METRICS=true
METRICS_ENDPOINT=http://prometheus:9090
ENVIRONMENT=development
DEBUG=false
ENABLE_CORS=true
CORS_ORIGINS=http://localhost:3000,http://localhost:5173
# =============================================================================
# NLP / GLiNER (Named Entity Recognition)
# =============================================================================
NLP_ENABLED=true
# Default to spaCy (bundled, fast). GLiNER is opt-in via --profile gliner.
NLP_BACKEND=spacy
GLINER_PORT=8082
GLINER_MODEL=knowledgator/gliner-base-v0.1
GLINER_MAX_LENGTH=384
GLINER_BATCH_SIZE=8
GLINER_CPUS=2.0
GLINER_MEMORY=4G
ENTITY_EXTRACTION_ENABLED=true
ENTITY_TYPES=person,location,organization,product,event,work_of_art,law,language,date,time,percent,money,quantity,ordinal,cardinal
# ── Observability (T-044) ────────────────────────────────────
# Agent calls are traced with logfire (OpenTelemetry-compatible).
# Local-only by default. To export spans:
# LOGFIRE_TOKEN=... # send to logfire cloud, or
# OTEL_EXPORTER_OTLP_ENDPOINT=... # any OTLP collector (e.g. http://localhost:4318)
LOGFIRE_SEND_TO_LOGFIRE=false
#LOGFIRE_TOKEN=
#OTEL_EXPORTER_OTLP_ENDPOINT=
# --- Docker networking ---
# When the backend runs in Docker and a provider row points at a service on
# the HOST (ollama http://localhost:11434, LM Studio, ...), rewrite localhost
# to this hostname. docker-compose sets this automatically; leave empty for
# bare-metal runs.
MONITOR_LOCALHOST_REWRITE=
# =============================================================================
# Image generation settings (Task 10 — defaults for the /api/image/settings UI)
# Mode: provider_default passes everything through; lines_and_veils blocks
# prompts that directly violate an active campaign's agreements_lines/veils.
# =============================================================================
IMAGE_MODERATION_MODE=provider_default
IMAGE_MAX_PER_SCENE=4
IMAGE_MAX_PER_CONVERSATION=8
IMAGE_MAX_PER_ACTOR_HOUR=12
IMAGE_SUGGESTIONS_ENABLED=true
# When set, PUT /api/image/settings requires the same value in the
# X-Monitor-Admin-Key header. Leave unset to keep the endpoint open
# for local dev (a structlog warning is emitted on every write).
IMAGE_SETTINGS_ADMIN_KEY=