Repository navigation
Expand file tree
/
Copy path.example.env
More file actions
200 lines (165 loc) 路 7.02 KB
/
Copy path.example.env
File metadata and controls
200 lines (165 loc) 路 7.02 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
193
194
195
196
197
198
199
200
# copy this file to .env and fill in the values
# path to google cloud credentials file
ANOMSTACK_GOOGLE_APPLICATION_CREDENTIALS=
# can also be set as json string
ANOMSTACK_GOOGLE_APPLICATION_CREDENTIALS_JSON=
# gcp related env vars
ANOMSTACK_GCP_PROJECT_ID=
# snowflake related env vars
ANOMSTACK_SNOWFLAKE_ACCOUNT=
ANOMSTACK_SNOWFLAKE_USER=
ANOMSTACK_SNOWFLAKE_PASSWORD=
ANOMSTACK_SNOWFLAKE_WAREHOUSE=
# aws related env vars
ANOMSTACK_AWS_ACCESS_KEY_ID=
ANOMSTACK_AWS_SECRET_ACCESS_KEY=
# admin authentication (for Fly.io deployment and admin access)
ANOMSTACK_ADMIN_USERNAME=admin
ANOMSTACK_ADMIN_PASSWORD=anomstack2024
# local duckdb path for testing/dev quickstart
# For local development (outside containers)
# ANOMSTACK_DUCKDB_PATH=tmpdata/anomstack-duckdb.db
# For container deployments (Docker Compose, Fly.io, etc.)
ANOMSTACK_DUCKDB_PATH=/data/anomstack.db
# example using motherduck
# https://motherduck.com/docs/getting-started/connect-query-from-python/choose-database/
# ANOMSTACK_DUCKDB_PATH=md:anomstack
# local sqlite path for testing/dev quickstart
ANOMSTACK_SQLITE_PATH=tmpdata/anomstack-sqlite.db
# example using turso
# https://docs.turso.tech/sdk/python/quickstart
# ANOMSTACK_SQLITE_PATH=libsql://<your-database-url>.turso.io
# table id to store metrics in
ANOMSTACK_TABLE_KEY=tmp.metrics
# path for where to store models
# local path
ANOMSTACK_MODEL_PATH=local://./tmp/models
# for gcs bucket
# ANOMSTACK_MODEL_PATH=gs://your-bucket/models
# for s3 bucket
# ANOMSTACK_MODEL_PATH=s3://your-bucket/models
# home directory for anomstack (defaults to current working directory)
# used for docker volume mounts in dagster_docker.yaml
ANOMSTACK_HOME=.
# slack bot token for alerting
# ANOMSTACK_SLACK_BOT_TOKEN=
# slack channel for alerting
# ANOMSTACK_SLACK_CHANNEL=
# flag to ignore examples folder
ANOMSTACK_IGNORE_EXAMPLES=no
# email alerting related env vars
ANOMSTACK_ALERT_EMAIL_FROM=
ANOMSTACK_ALERT_EMAIL_TO=
ANOMSTACK_ALERT_EMAIL_SMTP_HOST=smtp.gmail.com
ANOMSTACK_ALERT_EMAIL_SMTP_PORT=587
ANOMSTACK_ALERT_EMAIL_PASSWORD=
# email failure alerting related env vars
# ANOMSTACK_FAILURE_EMAIL_FROM=
# ANOMSTACK_FAILURE_EMAIL_TO=
# ANOMSTACK_FAILURE_EMAIL_SMTP_HOST=smtp.gmail.com
# ANOMSTACK_FAILURE_EMAIL_SMTP_PORT=587
# ANOMSTACK_FAILURE_EMAIL_PASSWORD=
# dagster related env vars - LIGHTWEIGHT DEFAULTS
# Use smaller, more manageable directories to prevent disk space issues
ANOMSTACK_DAGSTER_LOCAL_ARTIFACT_STORAGE_DIR=tmp_light/artifacts
ANOMSTACK_DAGSTER_OVERALL_CONCURRENCY_LIMIT=5 # Reduced from 10
ANOMSTACK_DAGSTER_DEQUEUE_USE_THREADS=false
ANOMSTACK_DAGSTER_DEQUEUE_NUM_WORKERS=2 # Reduced from 4
ANOMSTACK_DAGSTER_LOCAL_COMPUTE_LOG_MANAGER_DIRECTORY=tmp_light/compute_logs
ANOMSTACK_DAGSTER_SQLITE_STORAGE_BASE_DIR=tmp_light/storage
# =============================================================================
# LLM Alert Configuration (anomaly-agent)
# =============================================================================
# LLM Platform: "openai" (default) or "openrouter"
ANOMSTACK_LLM_PLATFORM=openai
# API Key (works for both OpenAI and OpenRouter)
OPENAI_API_KEY=
# Model selection for LLM alerts
# Set to "random" to A/B test across multiple models
# Comma-separated list of models when using random selection
# With OpenRouter, use provider/model format:
# openai/gpt-4o-mini,anthropic/claude-3.5-sonnet,google/gemini-2.0-flash-exp
ANOMSTACK_LLMALERT_MODELS=gpt-4o-mini
# LangSmith tracing (optional)
LANGSMITH_TRACING=true
LANGSMITH_ENDPOINT="https://api.smith.langchain.com"
LANGSMITH_API_KEY=""
LANGSMITH_PROJECT="anomaly-agent"
# Legacy config (deprecated)
ANOMSTACK_OPENAI_KEY=
ANOMSTACK_OPENAI_MODEL=gpt-4o-mini
ANOMSTACK_ANTHROPIC_KEY=
ANOMSTACK_ANTHROPIC_MODEL=claude-3-haiku-20240307
# some dagster env vars
DAGSTER_LOG_LEVEL=DEBUG
DAGSTER_CONCURRENCY=4
# Code server host for workspace configuration
# For Docker Compose: leave blank (defaults to "anomstack_code")
# For Fly.io single container: set to "localhost"
DAGSTER_CODE_SERVER_HOST=
# max runtime for a job in dagster
# https://docs.dagster.io/deployment/run-monitoring#general-run-timeouts
ANOMSTACK_MAX_RUNTIME_SECONDS_TAG=900
# kill runs that exceed this many minutes
ANOMSTACK_KILL_RUN_AFTER_MINUTES=15
# ===== RETENTION CONFIGURATION =====
# Custom retention job configuration (SQLite doesn't support built-in Dagster retention)
# Number of days to keep Dagster runs (default: 1)
ANOMSTACK_RETENTION_DAYS=1
# Cron schedule for retention job (default: every 6 hours)
ANOMSTACK_RETENTION_SCHEDULE=0 */6 * * *
# Whether retention is enabled (default: true)
ANOMSTACK_RETENTION_ENABLED=true
# Whether to vacuum SQLite database after deletions (default: true)
ANOMSTACK_RETENTION_VACUUM=true
# Batch size for deletions to manage memory usage (default: 1000)
ANOMSTACK_RETENTION_BATCH_SIZE=1000
# Base path to Dagster storage (default: /data/dagster_storage)
ANOMSTACK_DAGSTER_STORAGE_PATH=/data/dagster_storage
# postgres related env vars
ANOMSTACK_POSTGRES_USER=postgres_user
ANOMSTACK_POSTGRES_PASSWORD=postgres_password
ANOMSTACK_POSTGRES_DB=postgres_db
# leave blank if you don't want to forward the port locally for monitoring etc.
ANOMSTACK_POSTGRES_FORWARD_PORT=5432
# motherduck related env vars
ANOMSTACK_MOTHERDUCK_TOKEN=
# turso related env vars
ANOMSTACK_TURSO_DATABASE_URL=
ANOMSTACK_TURSO_AUTH_TOKEN=
# clickhouse related env vars
ANOMSTACK_CLICKHOUSE_HOST=localhost
ANOMSTACK_CLICKHOUSE_PORT=8123
ANOMSTACK_CLICKHOUSE_USER=anomstack
ANOMSTACK_CLICKHOUSE_PASSWORD=anomstack
ANOMSTACK_CLICKHOUSE_DATABASE=default
# dashbooard port
ANOMSTACK_DASHBOARD_PORT = 5001
# PostHog API key for metrics ingestion (querying PostHog's API for data)
# Also used by anomaly-agent for LLM analytics tracking when POSTHOG_ENABLED=true
POSTHOG_API_KEY=
# PostHog frontend API key for analytics tracking (website analytics)
POSTHOG_FRONTEND_API_KEY=
# PostHog LLM Analytics for anomaly-agent (optional)
# Tracks LLM calls (tokens, latency, costs) via posthog.ai.langchain integration
POSTHOG_ENABLED=false
POSTHOG_HOST=https://us.i.posthog.com
POSTHOG_DISTINCT_ID=
# POSTHOG_PRIVACY_MODE=false # Set true to not log prompt/response content
# example to enable some jobs via env vars
# ANOMSTACK__PYTHON_INGEST_SIMPLE__INGEST_DEFAULT_SCHEDULE_STATUS=RUNNING
# ANOMSTACK__PYTHON_INGEST_SIMPLE__TRAIN_DEFAULT_SCHEDULE_STATUS=RUNNING
# ANOMSTACK__PYTHON_INGEST_SIMPLE__SCORE_DEFAULT_SCHEDULE_STATUS=RUNNING
# ANOMSTACK__PYTHON_INGEST_SIMPLE__ALERT_DEFAULT_SCHEDULE_STATUS=RUNNING
# ANOMSTACK__PYTHON_INGEST_SIMPLE__PLOT_DEFAULT_SCHEDULE_STATUS=RUNNING
# ANOMSTACK__PYTHON_INGEST_SIMPLE__CHANGE_DEFAULT_SCHEDULE_STATUS=RUNNING
# ANOMSTACK__PYTHON_INGEST_SIMPLE__LLMALERT_DEFAULT_SCHEDULE_STATUS=RUNNING
# ANOMSTACK__PYTHON_INGEST_SIMPLE__DELETE_DEFAULT_SCHEDULE_STATUS=RUNNING
# automatic configuration reloading
# Enable scheduled config reload job (runs every N minutes)
ANOMSTACK_AUTO_CONFIG_RELOAD=false
ANOMSTACK_CONFIG_RELOAD_CRON="*/5 * * * *"
ANOMSTACK_CONFIG_RELOAD_STATUS=STOPPED
# Enable smart config file watcher sensor (reloads only when files change)
ANOMSTACK_CONFIG_WATCHER=true
ANOMSTACK_CONFIG_WATCHER_INTERVAL=30