# Google Gemini — Vertex AI (preferred; uses GCP credits) or public API # Set ONE of the two blocks below. # Vertex AI: GOOGLE_CLOUD_PROJECT= GOOGLE_CLOUD_LOCATION=global GOOGLE_APPLICATION_CREDENTIALS= # Public Gemini API (free tier; used only if GOOGLE_CLOUD_PROJECT is empty): GOOGLE_API_KEY= # Default reasoning model. Override per-deploy. # Strongest: gemini-3.1-pro-preview (preview) # Stable: gemini-2.5-pro # Cheap: gemini-3.1-flash-lite or gemini-2.5-flash GEMINI_MODEL=gemini-3.1-pro-preview # Comma-separated fallback chain — fires on 429 / 404 / 503 / empty-response. GEMINI_FALLBACK_MODELS=gemini-3-flash-preview,gemini-2.5-flash # Arc / EVM RPC= CHAIN_ID= DEPLOYER_PRIVATE_KEY= RECEIPT_REGISTRY_ADDRESS= # V2: Merkle-rooted reasoning DAG. Deployed by scripts/deploy-registry-v2.sh. RECEIPT_REGISTRY_V2_ADDRESS= # CanteenUSDC wrapper deployed in Part 1 of the Canteen walkthrough. CUSDC_ADDRESS= # Dashboard CORS — comma-separated origins. * for wide-open hackathon mode. CORS_ORIGINS=https://rrtrace.xyz,https://www.rrtrace.xyz # rr-trace/3 ensemble — flip to 1 in production once V2 contract is wired. RR_USE_ENSEMBLE= # Token-cost knobs. Defaults: stances on Flash (~50x cheaper output than Pro), # supervisor on Pro, capped max_tokens, role-tuned thinking budget. # Slow `RR_LOOP_INTERVAL_S` (seconds between ticks) to cut daily Gemini spend. RR_LOOP_INTERVAL_S= RR_LOOP_PER_TICK= RR_ENSEMBLE_STANCE_MODEL= RR_ENSEMBLE_SUPERVISOR_MODEL= RR_ENSEMBLE_STANCE_MAX_TOKENS= RR_ENSEMBLE_SUPERVISOR_MAX_TOKENS= RR_ENSEMBLE_STANCE_THINKING= RR_ENSEMBLE_SUPERVISOR_THINKING= # Per-subsystem mock toggles — set any to 1 to bypass that subsystem. RR_MOCK_ANALYST= RR_MOCK_CRITIC= RR_MOCK_SCANNER= RR_MOCK_TRADER= RR_MOCK_CIRCLE= RR_MOCK_IRYS= RR_MOCK_CHAIN= # Local x402 facilitator override (skips Circle Gateway, for offline dev). RR_LOCAL_FACILITATOR= # Circle CIRCLE_API_KEY= CIRCLE_ENTITY_SECRET= CIRCLE_WALLET_SET_ID= CIRCLE_PORTFOLIO_WALLET_ID= CIRCLE_CONSUMER_WALLET_ID= # Token id for testnet USDC on Arc — pulled from Circle Console. CIRCLE_USDC_TOKEN_ID= # x402 X402_FACILITATOR_URL= X402_RECEIVER_ADDRESS= # Markets POLYMARKET_API_KEY= POLYMARKET_SECRET= POLYMARKET_PASSPHRASE= KALSHI_API_KEY= KALSHI_SECRET= # Storage IRYS_PRIVATE_KEY= IRYS_NETWORK=devnet IRYS_TOKEN=ethereum # Serverless API calls its isolated Node uploader through this shared secret. IRYS_UPLOAD_SECRET= # Optional override; Vercel infers its deployment URL automatically. IRYS_UPLOAD_URL= # Database # Local development: sqlite:///./data/reasoning_receipt.db # Vercel production: pooled Neon Postgres URL from the Vercel integration. DATABASE_URL=sqlite:///./data/reasoning_receipt.db # Vercel Cron (Vercel sends CRON_SECRET as a Bearer token automatically). CRON_SECRET= RR_CRON_AGENT_ENABLED=0 RR_CRON_PER_TICK=1 RR_CRON_TRADER=0 RR_CRON_TIMEOUT_S=240 # Dashboard / deploy VERCEL_TOKEN= NEXT_PUBLIC_DASHBOARD_API_URL=http://localhost:8000 # Ops DISCORD_WEBHOOK_URL= LOG_LEVEL=INFO