# ---- ktrade (apps/api) — all variables are prefixed KTRADE_ ---- KTRADE_ENV=dev KTRADE_APP_BASE_URL=http://localhost:8471 # used for same-origin (CSRF) checks and cookies KTRADE_API_HOST=127.0.0.1 KTRADE_API_PORT=8470 KTRADE_DATABASE_URL=postgresql://ktrade:ktrade@127.0.0.1:5432/ktrade KTRADE_REDIS_URL=redis://127.0.0.1:6379/3 KTRADE_SECRET_KEY=change-me-64-hex # signs session cookies: openssl rand -hex 32 KTRADE_OWNER_PASSWORD_HASH= # ktrade set-owner-password → bcrypt hash (never the password) KTRADE_COOKIE_SECURE=false # true behind HTTPS # Kraken — least-privilege keys. DATA key: "Query funds" + "Query open orders & trades" ONLY (no order creation, # never withdrawal). TRADE key: only configured when live mode is being prepared (Phase 5); unused otherwise. KTRADE_KRAKEN_API_KEY= KTRADE_KRAKEN_API_SECRET= KTRADE_KRAKEN_TRADE_API_KEY= KTRADE_KRAKEN_TRADE_API_SECRET= KTRADE_KRAKEN_TIER=starter # starter|intermediate|pro — drives the local rate limiter KTRADE_UNIVERSE=BTC/USD,ETH/USD,SOL/USD,XRP/USD,ADA/USD,LINK/USD,DOT/USD,LTC/USD KTRADE_CANDLE_INTERVALS=1,5,60,1440 # minutes; REST OHLC returns ≤720 bars per poll, history accumulates KTRADE_BACKFILL_POLL_SECONDS=60 KTRADE_BOOK_DEPTH=25 KTRADE_STALE_DATA_SECONDS=120 KTRADE_TRADING_MODE=offline # offline | paper | live (live also needs the flag below + UI activation) KTRADE_LIVE_TRADING_ENABLED=false KTRADE_LOG_LEVEL=INFO KTRADE_LOG_JSON=true # ---- web (apps/web) ---- API_UPSTREAM=http://127.0.0.1:8470 PORT=8471