-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path.env.example
More file actions
107 lines (91 loc) · 5.19 KB
/
Copy path.env.example
File metadata and controls
107 lines (91 loc) · 5.19 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
# Copy this file to .env for local evaluation or deployment.
# Basic local /scan and MCP tests work without provider keys.
# Upstream provider keys. Set OPENAI_API_KEY if you want /v1/chat/completions
# to forward to OpenAI after Interlock scans the request. Without it, Interlock
# still scans and returns a placeholder response explaining the missing provider key.
# OPENAI_API_KEY=<YOUR_OPENAI_API_KEY>
# ANTHROPIC_API_KEY=<YOUR_ANTHROPIC_API_KEY>
# GROQ_API_KEY=<YOUR_GROQ_API_KEY>
# GEMINI_API_KEY=<YOUR_GEMINI_API_KEY>
# Bootstrap root token for /admin/* endpoints. Use it to issue scoped admin
# tokens, then avoid sharing it day-to-day.
# Generate one with: python -c "import secrets; print(secrets.token_urlsafe(32))"
# ADMIN_TOKEN=<GENERATE_LONG_RANDOM_ADMIN_TOKEN>
# If this is ever pasted into chat/logs/screenshots, rotate it immediately.
# Optional production Postgres connection.
# Leave unset for local SQLite at data/firewall.db.
# DATABASE_URL=postgresql://user:<URL_ENCODED_PASSWORD>@db.example.com:5432/interlock
# URL-encode special password characters such as ?, @, #, &, :, and /.
# Optional OIDC admin authentication. Keep disabled until your IdP values are known.
# ADMIN_TOKEN remains the bootstrap/break-glass credential.
# OIDC_ADMIN_ENABLED=false
# Generic IdP example:
# OIDC_ISSUER=https://idp.example.com/
# OIDC_AUDIENCE=interlock-admin
# OIDC_JWKS_URL=https://idp.example.com/.well-known/jwks.json
# Supabase Auth example:
# OIDC_ISSUER=https://project-ref.supabase.co/auth/v1
# OIDC_AUDIENCE=authenticated
# OIDC_JWKS_URL=https://project-ref.supabase.co/auth/v1/.well-known/jwks.json
# OIDC_GROUPS_CLAIM=groups
# OIDC_ROLE_CLAIM=interlock_role
# OIDC_EMAIL_CLAIM=email
# Optional hard boundary for human admins. Recommended for Supabase Auth or social-login pilots.
# OIDC_ADMIN_EMAIL_ALLOWLIST=founder@example.com,security@example.com
# OIDC_ADMIN_DOMAIN_ALLOWLIST=example.com
# OIDC_ALLOWED_ALGS=RS256,RS384,RS512,ES256
# OIDC_GROUP_ROLE_MAP={"interlock-owners":"owner","interlock-operators":"operator","interlock-security":"security_reviewer","interlock-auditors":"auditor"}
# OIDC_DEFAULT_ROLE=
# Runtime environment. Local/dev keeps permissive defaults. Production fails closed
# for unsafe CORS and hides public API docs unless explicitly enabled.
# INTERLOCK_ENV=development
# INTERLOCK_ENV=production
# Allowed CORS origins for the API gateway. Comma-separated list.
# Restrict to your deployed dashboard origin before any public deployment.
# Required in production; ALLOWED_ORIGINS=* is rejected in production.
# ALLOWED_ORIGINS=https://getinterlock.dev,https://interlock.onrender.com
# Leave unset for development (allows all origins).
# FastAPI docs are available in local/dev and disabled in production by default.
# ENABLE_API_DOCS=false
# SSRF-oriented outbound URL checks for MCP discovery/calls and SIEM tests.
# Defaults on in production and whenever a supported hosted marker is present.
# Keep private outbound disabled for shared hosted demos.
# INTERLOCK_PROTECT_OUTBOUND_URLS=true
# INTERLOCK_ALLOW_PRIVATE_OUTBOUND=false
# External MCP server registration allowlist. Public registrations outside this
# list are rejected; local/private targets are still governed by outbound URL
# protection above.
# Empty by default. Prefer exact hosts; opt into suffixes only when required.
# MCP_REGISTRY_ALLOWED_HOSTS=
# MCP_REGISTRY_ALLOWED_HOST_SUFFIXES=
# Optional Redis for shared rate limits across multiple workers/pods.
# Strongly recommended before running more than one Interlock instance.
# REDIS_URL=redis://localhost:6379/0
# RATE_LIMIT_NAMESPACE=interlock
# Retention is managed through /admin/retention. Defaults:
# scan_history_days=30, mcp_audit_days=90, admin_audit_days=365, usage_log_days=365
# Optional SIEM/webhook integration.
# SLACK_WEBHOOK_URL=https://hooks.slack.com/services/...
# Outbound events contain hashes and byte lengths by default. Enabling this
# exports bounded raw prompt and reason previews to every configured destination;
# treat that as a deliberate sensitive-data disclosure decision.
# SIEM_INCLUDE_CONTENT=false
# Optional local database path.
# FIREWALL_DB_PATH=data/firewall.db
# Optional shadow scanning. Keep disabled for first local runs.
# SHADOW_SCAN_ENABLED=false
# SHADOW_SCAN_INTERVAL=3600
# Optional CI boundary-review gate. Unset (or empty) uses the documented
# default. A value that IS set but unparsable or out of range STOPS STARTUP
# rather than being silently replaced. Breaching a limit at run time is
# reported inconclusive, never clean.
# See docs/integrations/ci-boundary-review-gate.md.
# INTERLOCK_BOUNDARY_REVIEW_TIMEOUT_S=10 # floor 0.1; ceiling 120
# INTERLOCK_BOUNDARY_REVIEW_MAX_RESPONSE_BYTES=2097152 # floor 1 KiB; ceiling 20 MiB
# INTERLOCK_BOUNDARY_REVIEW_MAX_TOOLS=200 # floor 1; ceiling 2000
# INTERLOCK_BOUNDARY_REVIEW_MAX_FINDINGS=100 # floor 1; ceiling 1000
# INTERLOCK_BOUNDARY_REVIEW_IDEMPOTENCY_TTL_S=86400 # floor 60; ceiling 604800
# INTERLOCK_CI_BOUNDARY_REVIEW_MAX_REQUEST_BYTES=8192 # floor 0; ceiling 1 MiB
# Frontend dashboard public OIDC variables live in interlock-web/.env.example.
# Optional SIEM provider examples live in docs/siem-integrations.md.
# Secret rotation runbook: docs/secret-rotation.md