-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path.env.example
More file actions
140 lines (113 loc) · 6.78 KB
/
.env.example
File metadata and controls
140 lines (113 loc) · 6.78 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
# === OpsLens Configuration ===
# Copy this file to .env and fill in values for your deployment.
# ── Core ─────────────────────────────────────────────────────────────
APP_NAME=OpsLens
APP_HOST=0.0.0.0
APP_PORT=8000
LOG_LEVEL=INFO
ENVIRONMENT=development # development | production
# ── Notion MCP Server ────────────────────────────────────────────────
NOTION_MCP_URL=http://localhost:3100/mcp
MCP_AUTH_TOKEN=your-mcp-auth-token-here
# ── Notion Integration ───────────────────────────────────────────────
NOTION_TOKEN=ntn_xxxxxxxxxxxxxxxxxxxx
NOTION_ROOT_PAGE_ID=your-root-page-id-here
# Notion Database IDs (populated after workspace setup via `make setup-workspace`)
NOTION_INCIDENTS_DB_ID=
NOTION_INCIDENTS_DS_ID=
NOTION_RUNBOOKS_DB_ID=
NOTION_SERVICES_DB_ID=
NOTION_POSTMORTEMS_DB_ID=
NOTION_ONCALL_DB_ID=
NOTION_CONFIDENCE_DB_ID=
NOTION_COMMAND_CENTER_PAGE_ID=
# ── LLM Provider ────────────────────────────────────────────────────
LLM_PROVIDER=gemini # gemini | anthropic
LLM_FALLBACK_PROVIDER= # optional: anthropic (if primary is gemini)
# Claude API
ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxxxxxxxxxxxx
ANTHROPIC_MODEL=claude-sonnet-4-20250514
# Google Gemini API
GEMINI_API_KEY=your-gemini-api-key-here
GEMINI_MODEL=gemini-2.0-flash
# ── Database (PostgreSQL) ────────────────────────────────────────────
# Required for auth, enterprise features, and audit logging.
# If unavailable, OpsLens runs in Notion-only mode.
DATABASE_URL=postgresql+asyncpg://opslens:opslens@localhost:5432/opslens
# ── Cache / Message Broker (Redis) ───────────────────────────────────
# Used for rate limiting, caching, WebSocket pub/sub, and Celery.
# If unavailable, in-memory fallbacks are used.
REDIS_URL=redis://localhost:6379/0
# ── Authentication (JWT) ─────────────────────────────────────────────
# IMPORTANT: Set a strong, persistent secret in production!
# Generate with: python -c "import secrets; print(secrets.token_urlsafe(64))"
JWT_SECRET=change-me-to-a-random-secret-in-production
JWT_ACCESS_TOKEN_EXPIRE_MINUTES=15
JWT_REFRESH_TOKEN_EXPIRE_DAYS=7
# ── Security / Encryption ────────────────────────────────────────────
# Fernet key for encrypting secrets in settings.json.
# Generate with: python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
# If unset, a key is auto-generated (changes on restart -- not for production!)
OPSLENS_ENCRYPTION_KEY=
# ── CORS ─────────────────────────────────────────────────────────────
# Comma-separated list of allowed origins. In development mode, localhost
# origins are added automatically. In production, this MUST be set.
CORS_ORIGINS=http://localhost:5173,http://localhost:3000
# ── OAuth Providers (optional) ───────────────────────────────────────
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
OAUTH_REDIRECT_BASE_URL= # e.g. https://opslens.example.com
# ── Observability (optional) ─────────────────────────────────────────
# Sentry DSN for error tracking
SENTRY_DSN=
# OpenTelemetry OTLP exporter endpoint (e.g. http://localhost:4317)
OTEL_EXPORTER_OTLP_ENDPOINT=
# ── Task Queue (Celery) ─────────────────────────────────────────────
# Defaults to REDIS_URL if empty
CELERY_BROKER_URL=
# ── Data Retention ───────────────────────────────────────────────────
DATA_RETENTION_DAYS=365
# ── Webhook Security (optional) ──────────────────────────────────────
ALERTMANAGER_SECRET=
GRAFANA_SECRET=
PAGERDUTY_WEBHOOK_SECRET=
# ── Slack Notifications ──────────────────────────────────────────────
SLACK_WEBHOOK_URL=
SLACK_CHANNEL=#incidents
SLACK_BOT_TOKEN=
SLACK_CREATE_WAR_ROOMS=true
# ── GitHub Integration ───────────────────────────────────────────────
GITHUB_TOKEN=
GITHUB_ORG=
GITHUB_DEFAULT_BRANCH=main
# ── Jira Integration ────────────────────────────────────────────────
JIRA_BASE_URL=
JIRA_EMAIL=
JIRA_API_TOKEN=
JIRA_PROJECT_KEY=
JIRA_DEFAULT_ISSUE_TYPE=Task
# ── Linear Integration ──────────────────────────────────────────────
LINEAR_API_KEY=
LINEAR_TEAM_ID=
# ── AWS Cloud Integration ───────────────────────────────────────────
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_REGION=us-east-1
# ── GCP Cloud Integration ───────────────────────────────────────────
GCP_PROJECT_ID=
GCP_CREDENTIALS_JSON=
GCP_REGION=us-central1
# ── Azure Cloud Integration ─────────────────────────────────────────
AZURE_TENANT_ID=
AZURE_CLIENT_ID=
AZURE_CLIENT_SECRET=
AZURE_SUBSCRIPTION_ID=
# ── Ticket Management ───────────────────────────────────────────────
TICKET_PROVIDER= # jira | linear
# ── Operational ──────────────────────────────────────────────────────
DEDUP_WINDOW_SECONDS=300
AUTO_ESCALATION_MINUTES=30
MAX_CONCURRENT_AGENTS=5
NOTION_POLL_INTERVAL_SECONDS=30