Reference
Configuration reference
Generated page — do not edit.
Generated by docs-site/gen-config.mts from .env.example, ConfigSchema
(packages/shared/src/config.ts) and BinEnvSchema (bin/lib/wiring.ts).
The generator fails the docs build if the schemas and .env.example drift
apart. Edit those sources, then rerun npm run docs:build.
Contractual configuration is validated by ConfigSchema; config errors name
variables, never values, so a misconfigured secret cannot leak through an
error message. Variables marked SDK/tooling are read by the Azure/Opik SDKs
or the build, never by Argus code. No credentials belong anywhere but your
deployment secret store — .env files exist only on dev machines.
Service configuration (.env.example)
Service version (baked into the image by the root Dockerfile)
| Variable |
Example / default |
Required |
Purpose |
ARGUS_VERSION |
— |
SDK/tooling |
Read by serviceVersion() in packages/shared/src/version.ts and surfaced in /health, logs, eval reports, and reviewer.event_log. Leave unset for local dev: the fallback is the root package.json version + gitSha "unknown". |
ARGUS_GIT_SHA |
— |
SDK/tooling |
|
Azure DevOps
| Variable |
Example / default |
Required |
Purpose |
ADO_ORG_URL |
https://dev.azure.com/example-org |
yes |
Base URL of the ADO organisation, e.g. https://dev.azure.com/my-org |
ADO_AUTH_MODE |
entra |
no |
entra (default, PRIMARY) | pat (fallback) — OD-5. entra = Entra ID via @azure/identity DefaultAzureCredential: a service principal through the standard AZURE_* vars below, or managed identity / az login with no further config. |
AZURE_TENANT_ID |
— |
SDK/tooling |
Standard Azure identity variables for a service principal — read directly by @azure/identity (never by Argus code). Leave unset on managed identity or az-login environments. |
AZURE_CLIENT_ID |
— |
SDK/tooling |
|
AZURE_CLIENT_SECRET |
— |
SDK/tooling |
|
ADO_PAT |
— |
no |
FALLBACK: required only when ADO_AUTH_MODE=pat. Host-side only — never enters model context or logs (PRD 9.3). |
ARGUS_IDENTITY_ID |
00000000-0000-0000-0000-000000000000 |
yes |
Identity GUID of the argus-reviewer ADO service account — the ingress self-trigger filter key and the mention-detection identity (PRD 9.4, 9.5). |
Webhook (ingress) auth (PRD 9.1: ADO service hooks do not sign payloads)
| Variable |
Example / default |
Required |
Purpose |
WEBHOOK_BASIC_USER |
argus-hooks |
yes |
|
WEBHOOK_BASIC_PASS |
change-me |
yes |
|
WEBHOOK_SHARED_SECRET |
change-me-high-entropy |
yes |
High-entropy shared secret sent as a custom header on every subscription. |
State store
| Variable |
Example / default |
Required |
Purpose |
DATABASE_URL |
postgres://argus:argus@localhost:5432/argus |
yes |
Tests use pg-mem; this is only read by real deployments. |
Queue
| Variable |
Example / default |
Required |
Purpose |
QUEUE_MODE |
memory |
no |
memory | servicebus (memory = in-process queue for local dev and tests) |
SERVICEBUS_NAMESPACE |
— |
no |
PRIMARY for QUEUE_MODE=servicebus: fully-qualified namespace, authenticated with DefaultAzureCredential (same AZURE_* vars / managed identity as above). Wins over SERVICEBUS_CONNECTION when both are set. |
SERVICEBUS_CONNECTION |
— |
no |
FALLBACK: SAS connection string, used only when no namespace is set. |
Model / inference endpoint (PRD 6.1, OD-1)
| Variable |
Example / default |
Required |
Purpose |
ANTHROPIC_API_KEY |
— |
no |
|
CLAUDE_CODE_USE_FOUNDRY |
0 |
no |
1 = route inference through Claude on Microsoft Foundry; 0/unset = Anthropic first-party. |
MODEL_ID |
claude-opus-5 |
no |
|
AGENT_MAX_TURNS |
— |
no |
Max agent turns per review run. Empty = tier defaults (50 agentic / 6 single-shot). |
Review tiering (PRD 10)
| Variable |
Example / default |
Required |
Purpose |
REVIEW_TIER_MAX_CHANGED_LINES |
1500 |
no |
Scoped diffs at or below this size are eligible for the single-shot tier; larger or risky diffs use the full agentic tier. |
RISKY_PATH_GLOBS |
application/backend/commons/**,application/frontend/src/common/**,databricks/** |
no |
Comma-separated picomatch globs; a diff touching any matching path always uses the full agentic tier ("shared paths, large or risky diffs" — the path half of tier selection). Empty/unset = size-only tiering. |
Evals: Opik export (optional observability, PRD 6.5)
| Variable |
Example / default |
Required |
Purpose |
ARGUS_OPIK |
0 |
SDK/tooling |
1 = export eval runs to Opik (same as npm run evals -- --opik). Off by default: the opik SDK is never imported and no network is touched. Opik failures never fail the eval run or the regression gate. |
OPIK_API_KEY |
— |
SDK/tooling |
Standard Opik SDK variables (read by the SDK itself, not by Argus code). For data residency, self-host Opik via docker-compose from https://github.com/comet-ml/opik and set OPIK_URL_OVERRIDE; API key is only needed for Comet cloud. |
OPIK_URL_OVERRIDE |
http://localhost:5173/api |
SDK/tooling |
|
OPIK_WORKSPACE |
default |
SDK/tooling |
|
OPIK_PROJECT_NAME |
argus-evals |
SDK/tooling |
|
Volume / cost caps (PRD OD-4, 9.5, 10)
| Variable |
Example / default |
Required |
Purpose |
MAX_FINDINGS_PER_PR |
10 |
no |
|
MAX_AGENT_COMMENTS_PER_PR_PER_HOUR |
20 |
no |
|
MAX_THREAD_REPLY_DEPTH |
4 |
no |
Agent replies per thread before "escalating to a human". |
PER_PR_TOKEN_CEILING |
5000000 |
no |
Per-PR token ceiling; on breach post a "review truncated" note. |
ORG_DAILY_TOKEN_CEILING |
100000000 |
no |
Org-level daily ceiling; on breach pause new reviews and alert. |
Composition switches (BinEnvSchema, read by bin/)
Composition-only switches select implementations (mock vs real) and ports;
everything contractual lives above.
| Variable |
Default |
Purpose |
PORT |
3000 |
Ingress HTTP port. |
MOCK_RUNNER |
0 |
1 = deterministic MockRunner; 0 = Claude Agent SDK runner. |
MOCK_ADO |
0 |
1 = in-memory FakeAdoClient (seeded demo PR); 0 = ADO REST client. |
INLINE_WORKER |
1 |
With QUEUE_MODE=memory the queue lives in-process, so dev:ingress also runs the worker consume loop on the same queue unless this is 0. |
ARGUS_QUEUE_NAME |
argus-jobs |
Service Bus queue entity name (sessions enabled). |
RULES_REGISTRY_FILE |
registry.local.json |
JSON-file rules registry used when DATABASE_URL=memory. |
CHECKOUT_MODE |
git |
git = clone the PR head; fixture = copy FIXTURE_CHECKOUT_DIR (offline). |
FIXTURE_CHECKOUT_DIR |
— |
|
PROTECTED_BRANCHES |
— |
Comma-separated protected-branch allowlist (OD-3); empty = review all. |
DOCS_PORT |
— |
argus-docs HTTP port; wins over PORT, which wins over the 4100 default. |
DOCS_SITE_DIR |
docs-site/dist |
Directory argus-docs serves — the static docs build output. |