Skip to content

Environment Variables Reference

All operational variables across the stack.

Orchestra

Variable Where Description
NUM_WORKERS shell or .env Number of RPC/KasWallet worker pairs (1-20, default: 5)
W{N}_WALLET_TO_ADDRESS .env Wallet address for worker N (set by sync-wallet-addresses.sh)
W{N}_KASWALLET_PASSWORD .env Wallet password for worker N
WALLET_API_BASICAUTH .env BasicAuth credentials for wallet balance API (htpasswd format, $$-escaped)
RPC_READ_ONLY .env Transaction submission enabled by default (false); set to true for read-only RPC

Health Check

Variable Where Description
RPC_WALLET_AUTH_{i} health-check .env BasicAuth user:pass to query node's wallet API
RPC_MIN_BALANCE_KAS_{i} health-check .env Min wallet balance threshold in KAS (default: 1.0)
SLACK_WEBHOOK_URL health-check .env Slack webhook for alerts including low-balance warnings

ATAN-Only Mode

Variable Where Description
NETWORK .env Network to connect to (mainnet, testnet)
TX_ID_PREFIX .env Legacy/pre-KIP21 transaction ID prefix for ATAN filtering, and the ATAN import namespace — the network-specific CDN path segment ({CDN_BASE_URL}/{NETWORK}/{TX_ID_PREFIX}/index.pb) in the auto-constructed import URL. Required everywhere. Compose refuses to render docker-compose.yml and docker-compose.atan.yml if unset (${TX_ID_PREFIX:?…} guards on RPC, execution-layer, and atan-uploader env), and the kaspad entrypoints additionally hard-exit at runtime — an empty prefix would render as --atan-transaction-id-prefix= and silently match every transaction, degrading the post-Toccata "lane AND prefix" gate to lane-only mode. Not used for post-KIP21 transaction construction.
IGRA_LANE_ID .env Canonical post-KIP21 dedicated IGRA lane namespace, currently 97b10000 (4 bytes / 8 lowercase hex chars, no 0x). Required everywhere. Compose refuses to render docker-compose.yml and docker-compose.atan.yml if unset (${IGRA_LANE_ID:?…} guards on RPC, execution-layer, and atan-uploader env), and the kaspad and kaswallet entrypoints additionally hard-exit at runtime, mirroring post-Toccata kaspad's own enforcement (kaspad/src/daemon.rs:828). Reaches kaspad as --igra-lane-id, kaswallet as --subnetwork-id, and RPC as IGRA_LANE_ID directly. Not used for the ATAN import URL (that uses the network-specific TX_ID_PREFIX). RPC, kaspad, and kaswallet must all see the same value.
CDN_BASE_URL .env CDN base URL for ATAN data import
ATAN_IMPORT_URL .env Optional override for auto-constructed import URL
KASPAD_ADD_PEER .env Optional peer address
KASPAD_RETENTION_PERIOD_DAYS .env Optional block-data retention window in days, passed to kaspad as --retention-period-days; omit to use kaspad's default. Applies to all kaspad modes
AWS_ACCESS_KEY_ID .env AWS credentials for atan-uploader
AWS_SECRET_ACCESS_KEY .env AWS credentials for atan-uploader
DATADIR .env Data directory path for atan-uploader
S3_BUCKET .env S3 bucket name for atan-uploader (default: atan-import)
AWS_REGION .env AWS region for atan-uploader (default: us-east-1)
UPLOAD_JITTER_MAX_SECONDS .env Max jitter seconds before upload (default: 60)