Skip to content
Ichnois
docs/configuration

Configuration

All runtime configuration is supplied via environment variables. Triage policies are JSON files that control per-service approval gates and severity routing.

Environment variables

Copy the template below and fill in your values. The variables marked with a * are required for live ingestion. The replay CLI works without any of them.

.env (template — never commit real values)
1# Sentry webhook secret (from Project Settings → Client Keys)
2SENTRY_WEBHOOK_SECRET=
3
4# GitHub App (Recommended — automatic installation token rotation)
5GITHUB_APP_ID=
6GITHUB_APP_PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
7...
8-----END RSA PRIVATE KEY-----"
9# or GITHUB_APP_PRIVATE_KEY_PATH=/etc/secrets/github_app.pem
10# or GITHUB_APP_PRIVATE_KEY_BASE64=
11
12# Fallback: GitHub fine-grained PAT (see /docs/github-token)
13GITHUB_TOKEN=
14
15# GitHub target repository (org/repo or user/repo)
16GITHUB_REPO=
17
18# LLM provider endpoint + key
19LLM_PROVIDER=openai # openai | anthropic | google | groq
20LLM_MODEL=gpt-4o-mini
21LLM_API_KEY=
22
23# Slack incoming webhook URL (optional — omit to disable Slack alerts)
24SLACK_WEBHOOK_URL=
25
26# Severity thresholds (deterministic arithmetic — no AI involved)
27SEVERITY_P1_USERS=50 # affected users ≥ N → P1
28SEVERITY_P1_EVENTS=500 # events ≥ N → P1
29SEVERITY_P2_USERS=10
30SEVERITY_P2_EVENTS=100
Never commit your .env file. The .gitignore in the repository already excludes it.

Severity thresholds

Severity (P1 / P2 / P3) is computed by fixed arithmetic from the affected user count and raw event count in the Sentry payload. The LLM plays no part in severity determination.

SeverityAffected usersEvent count
P1≥ 50 (default)≥ 500 (default)
P2≥ 10 (default)≥ 100 (default)
P3below P2 thresholdsbelow P2 thresholds

Override thresholds via SEVERITY_P1_USERS, SEVERITY_P1_EVENTS, etc. in your environment.

Triage policies

Policy JSON files in policies/ let you configure per-service approval gates and Slack routing.

policies/checkout-service.json
1# Example triage policy (JSON stored in backend/policies/)
2{
3 "name": "checkout-service",
4 "auto_approve_domains": ["payments", "checkout"],
5 "gate1_require_human": true,
6 "max_diff_bytes": 6144,
7 "notify_slack": true
8}

LLM providers

Set LLM_PROVIDER to one of: openai, anthropic, google, or groq. Token costs vary by provider; use the cost estimator on the Pricing page to project monthly spend.