Repository navigation
Expand file tree
/
Copy path.env.example
More file actions
61 lines (55 loc) · 3.92 KB
/
Copy path.env.example
File metadata and controls
61 lines (55 loc) · 3.92 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
# Copy to .env and fill in. `scan` only needs the model provider key(s) you reference in
# config/agents.yaml — XC_* and GITHUB_TOKEN are only for the live apply / PR steps. Never commit .env.
# --- Model providers (set the one(s) you use) ---
ANTHROPIC_API_KEY=
OPENAI_API_KEY=
GEMINI_API_KEY=
# Local models via Ollama:
# OLLAMA_API_BASE=http://localhost:11434
# --- F5 Distributed Cloud (live apply/validate/retire) ---
XC_API_URL= # e.g. https://yourtenant.console.ves.volterra.io/api
XC_API_TOKEN= # scoped, least-privilege; never commit
XC_NAMESPACE= # target namespace
# XC_DASHBOARD_URL= # optional deep link to your XC security dashboard (else derived from XC_API_URL)
# --- GitHub (code-fix PRs) ---
GITHUB_TOKEN= # repo-scoped PAT for opening PRs (or use `gh auth login`)
# --- BIG-IP lab (L2): the appliance the declarative WAF policy is validated against ---
# Management is usually NOT published — point BIGIP_URL at your own tunnel (see docs/USAGE.md §7b).
# BIGIP_URL=https://127.0.0.1:18443
# BIGIP_USER=admin
# BIGIP_PASSWORD=
# VPCOPILOT_PROTECTED_BIGIP_TENANTS= # comma-separated AS3 tenants that refuse mutation.
# /Common is ALWAYS refused and is not overridable.
# --- The `live` test suite (pytest -m live). Absent = skipped, never failed. See docs/CI.md ---
# VPCOPILOT_LIVE_NET=1 # allow the OSV suite to reach api.osv.dev
# VPCOPILOT_LIVE_LB=vpcopilot-lab # the LB the safety-spine suite may MUTATE and restore.
# An allowlist, not a default: never a protected LB.
# VPCOPILOT_LIVE_ORIGIN=http://… # the L1 app, reached THROUGH the lab BIG-IP
# --- Optional tuning (sensible defaults; override to taste) ---
# CHANGE_CONTROL_DAYS=25 # the "vs N-day change control" contrast in the hero/report
# VPCOPILOT_PROTECTED_LBS=nimbus-www # comma-separated LBs that refuse mutation without an override
# VPCOPILOT_REFINE_ATTEMPTS=3 # max self-heal attempts when a policy doesn't block the exploit
# VPCOPILOT_REQUIRE_PROBE=1 # fail-closed: don't validate a finding that has no derived probe
# VPCOPILOT_ACTOR=jane.doe # audit-log attribution — default: the OS user; set it in CI
# VPCOPILOT_SIM_THRESHOLD=0.01 # would-block rate that flags a policy in `vpcopilot simulate`
# VPCOPILOT_SIM_LOGS=traffic.jsonl # traffic sample the refiner also checks each candidate against
# VPCOPILOT_MINISIGN_KEY=~/.minisign/vpcopilot.key # sign exported bundles (unencrypted key: minisign -G -W)
# VPCOPILOT_MINISIGN_BIN= # path to minisign, if not on PATH
# VPCOPILOT_ESCALATION_WEBHOOK= # POST target for `reconcile` escalations (the audit record is the durable one)
# --- Audit event sink (J3): ship every audit entry off the box as it is written ---
# https://… | syslog://host:514 | syslog:///var/run/syslog | stdout | off (`vpcopilot audit-sink` to check)
# VPCOPILOT_AUDIT_SINK= # the local audit.log stays authoritative; a sink is a copy
# VPCOPILOT_AUDIT_SINK_TOKEN= # optional bearer token for an https sink
# --- Validation auth (auth-protected targets: let the probe log in so it can demonstrate the exploit) ---
# VPCOPILOT_PROBE_USER= # username the validation probe logs in with (cookie or token app)
# VPCOPILOT_PROBE_PASS= # its password
# VPCOPILOT_PROBE_LOGIN_PATH=/api/login # login endpoint (default /api/login)
# VPCOPILOT_PROBE_TOKEN= # OR a bearer token to inject directly (instead of user/pass)
# VPCOPILOT_PROBE_USER_FIELD=username # login JSON field names, if the app isn't username/password
# VPCOPILOT_PROBE_PASS_FIELD=password
# Console action defaults (so the UI isn't pinned to one app):
# VPCOPILOT_DEFAULT_LB=your-lb
# VPCOPILOT_DEFAULT_URL=https://your-app.example.com
# VPCOPILOT_DEFAULT_REPO=owner/repo
# VPCOPILOT_DEFAULT_BASE=main
# VPCOPILOT_DEFAULT_PREFIX=