Argus0.1.5

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.