Skip to main content
.env lives at repo root, is gitignored, and is loaded via @darkpool/shared/env with strict zod validation. loadEnv() throws with a clean message on missing required vars.

Sui

VarDefaultPurpose
SUI_NETWORKtestnetNetwork for SuiClient
SUI_RPC_URLhttps://fullnode.testnet.sui.io:443RPC endpoint

DarkPool (filled by pnpm env:from-publish)

VarDefaultPurpose
DARKPOOL_PACKAGE_ID0x0Live package id
MARKET_REGISTRY_ID0x0Shared MarketRegistry id
AGENT_REGISTRY_ID0x0Shared AgentRegistry id
AUTO_REDEEM_QUEUE_ID0x0Shared AutoRedeemQueue id
OO_CONFIG_ID0x0Shared OOConfig id
VOTE_LEDGER_ID0x0Shared VoteLedger id

DeepBook Predict

VarDefaultPurpose
PREDICT_PACKAGE_IDlivePredict package (branch-pinned)
PREDICT_OBJECT_IDliveShared Predict object

DeepBook V3

VarDefaultPurpose
DEEPBOOK_PACKAGE_IDliveV3 package (testnet upgrade)
DEEPBOOK_REGISTRY_IDliveV3 registry

DUSDC

VarDefaultPurpose
DUSDC_COIN_TYPEliveDeepBook-allowlisted DUSDC type
DUSDC_RETURN_ADDRESS0x080% sweep destination (from DeepBook team)

Pyth

VarDefaultPurpose
PYTH_PACKAGE_IDlivePyth Sui package
PYTH_STATE_IDliveShared state
PYTH_BTC_USD_PRICE_INFO_OBJECT0x0Per-feed PriceInfoObject id
BTC_USD_FEED_IDlivePyth feed id (hex, no prefix)

Enoki + OAuth

VarDefaultPurpose
VITE_ENOKI_API_KEYenoki_public_TODOPublic key (browser)
ENOKI_PRIVATE_KEYenoki_secret_TODOBackend / resolver only
VITE_GOOGLE_CLIENT_IDTODOOAuth client (PKCE; no secret needed)

LLM

VarDefaultPurpose
LLM_PROVIDERgroqgroq | anthropic | openai | ollama
LLM_API_KEYemptyRequired for AGENT_STRATEGY=llm (except ollama)
LLM_MODELemptyOverride provider default
LLM_BASE_URLemptyOverride provider base URL
AGENT_PROMPT_FILEemptyMarkdown mandate path

Server (api / indexer / quote-worker)

VarDefaultPurpose
SERVER_PORT8081api HTTP + WS port
SERVER_HOST0.0.0.0Bind host
REDIS_URLredis://localhost:6379Cache + pubsub + sponsor caps
DATABASE_URLpostgres://darkpool:darkpool@localhost:5433/darkpoolPostgres
CORS_ORIGIN*CORS allowlist
QUOTE_POLL_MS2000Quote-worker tick
HOT_TTL_S60Strike-hot TTL
QUOTE_CACHE_TTL_S300Quote cache TTL
INDEXER_POLL_MS4000Indexer tick
INDEXER_PAGE_SIZE50queryEvents page size
LOG_LEVELinfopino level

Frontend

VarDefaultPurpose
VITE_SERVER_HTTP_URLhttp://localhost:8081REST base URL
VITE_SERVER_WS_URLws://localhost:8081/wsWS URL
VITE_AGENT_STATUS_URLScomma-listFleet status endpoints

Self-sponsorship

VarDefaultPurpose
SPONSOR_KEYemptySponsor signer (falls back to RESOLVER_KEY)
SPONSOR_DAILY_CAP_SUI5Global daily cap
SPONSOR_PER_USER_DAILY_CAP_SUI0.5Per-sender daily cap
SPONSOR_MAX_GAS_BUDGET_SUI0.03Per-tx hard ceiling

Signing keys

VarDefaultPurpose
RESOLVER_KEYemptyAuto-settle keeper + default sponsor signer
AGENT_KEYemptyAgent runtime signer
Format: suiprivkey1… (single line, no quotes). Get via sui keytool export --key-identity <addr>.

Demo markets / agents (filled after bootstrap)

VarPurpose
BTC_MARKET_LINK_IDOutput of pnpm market:register --kind price
SPORTS_OO_MARKET_LINK_IDOutput of pnpm market:register --kind oo
AGENT_PREDICT_MANAGER_IDOutput of pnpm predict:new-manager
TRADE_AGENT_IDOutput of pnpm agent:register
VAULT_OBJECT_IDOutput of scripts/create-darkpool-vault.ts
AGENT_SEAL_POLICY_IDOutput of scripts/create-seal-policy.ts