# ============================================================================= # Personal CFO Agent — environment template # Copy to .env and fill in values: cp .env.example .env # Never commit .env. Secrets are redacted in logs but still belong only here. # ============================================================================= # --- Core -------------------------------------------------------------------- DATABASE_PATH=./data/agent.db NODE_ENV=development LOG_LEVEL=info # --- Safety ------------------------------------------------------------------ # Live money moves require BOTH LIVE_EXECUTION=true AND: pnpm dev --live LIVE_EXECUTION=false # --- Policy ------------------------------------------------------------------ # Copy config/policy.example.yaml → config/policy.yaml and customize first. POLICY_PATH=./config/policy.yaml # --- Wallet (EVM) ------------------------------------------------------------ WALLET_KEYSTORE_PATH=./data/keystore.json WALLET_PASSPHRASE= WALLET_CONFIG_PATH=./config/wallet.yaml # --- LI.FI ------------------------------------------------------------------- LIFI_CONFIG_PATH=./config/lifi.yaml LIFI_INTEGRATOR=personal-cfo-agent # --- Paystack Index (MCP) ---------------------------------------------------- INDEX_MCP_URL= INDEX_MCP_API_KEY= # Optional MCP tool name overrides (auto-discovered when omitted) INDEX_MCP_BALANCE_TOOL= INDEX_MCP_AIRTIME_TOOL= INDEX_MCP_TRANSFER_TOOL= # USD/NGN fallback when off-ramp FX quote is unreachable FX_FALLBACK_USD_NGN=1500 # Yellow Card engineering docs were down at build time; Juicyway is the default. # Docs: https://docs.juicyway.com/home # Flow: USDC/USDT → FX convert → NGN payout to your float beneficiary. # Create beneficiary first (your NGN bank account for Index float), then paste ID. OFFRAMP_PROVIDER=juicyway JUICYWAY_API_KEY= JUICYWAY_BASE_URL=https://api-sandbox.spendjuice.com JUICYWAY_BENEFICIARY_ID= JUICYWAY_PAYOUT_PIN= # --- Off-ramp (alternatives) ------------------------------------------------- # yellowcard — blocked until docs.yellowcard.engineering is reachable again # onramp — not wired yet; see docs/offramp-providers.md # YELLOWCARD_API_KEY= # YELLOWCARD_SECRET_KEY= # ONRAMP_API_KEY= # ONRAMP_APP_ID= # --- Agent (Claude) ---------------------------------------------------------- ANTHROPIC_API_KEY= ANTHROPIC_MODEL=claude-sonnet-4-20250514 # --- Triggers ---------------------------------------------------------------- REBALANCE_TARGET_NGN=100000 REBALANCE_CRON=0 */6 * * * # Proactive triggers (default off; never auto-start in test NODE_ENV) TRIGGERS_ENABLED=false TRIGGERS_REBALANCE_CRON=*/15 * * * * # --- Demo UI ----------------------------------------------------------------- # Interactive showcase for recordings (LI.FI + Index story). No API keys needed. DEMO_PORT=4173