# Names only; never commit real values. Copy to .env (gitignored) and fill in. # ── Persistence (ADR-0007 decision 5: PostgreSQL 18 + Valkey through openvibe-sdk) ── # Pooled PostgreSQL URL (through PgBouncer, transaction mode). Required in production. DATABASE_URL= # Owner-role direct connection migrations run on (a session, not PgBouncer). Required with DATABASE_URL. DATABASE_DIRECT_URL= # Development only: embedded PGlite directory when DATABASE_URL is unset (never production). DATABASE_DIR=data # Optional: another SQL migrations directory (default: @openvibe/persistence's own, from any working directory). GAMES_MIGRATIONS_DIR= # The place this instance serves; world rows and meta are keyed by it. GAMES_PLACE_ID=scraplandia # In-process rooms for this place; 1 preserves the existing single-room behavior. GAMES_INSTANCES_PER_PLACE=1 # Per-room player capacity and replication grid/radius (metres). MAX_PLAYERS=64 GAMES_INTEREST_CELL=16 GAMES_INTEREST_RADIUS=80 # Creator worlds (/worlds): running at once, kept per account, idle stop (seconds), players per world. # GAMES_CREATOR_WORLDS_MAX=2 # GAMES_CREATOR_WORLDS_PER_PERSON=5 # GAMES_CREATOR_ASSETS_PER_PERSON=50 # GAMES_CREATOR_WORLD_IDLE_SECONDS=180 # GAMES_CREATOR_WORLD_PLAYERS=16 # ── Valkey (optional): shared per-actor rate-limit counters across instances ── VALKEY_URL= VALKEY_PREFIX=ov:games: # ── Server ── PORT=8000 HOST=0.0.0.0 # Proxies whose client-address headers (X-Real-IP, X-Forwarded-For, CF-Connecting-IP) are trusted for per-address # limits and logs: empty = none (the TCP peer is the client), true = all (reachable only through the proxy), else a # comma-separated IP/CIDR list. Production: 127.0.0.1 (the local nginx, which overwrites those headers). TRUST_PROXY= MAP_PATH=data/map.json # ── AI vs AI Vibe Heroes draft matches (off by default; billable when enabled) ── GAMES_AI_MATCHES_ENABLED=0 GAMES_AI_MATCHES_DAILY_CAP=0 GAMES_AI_MATCHES_GAMES=2 # JSON array of two pinned OpenVibe.AI offers: [{"provider":"...","model":"..."},...] GAMES_AI_MATCHES_OFFERS= GAMES_AI_URL= GAMES_BENCH_URL=https://bench.openvibe.services # ── IndexNow (optional) ── # The IndexNow protocol key (8-128 hex or alphanumeric), as IndexNow's own key generator produces it. # When set, GET /.txt serves the key file the protocol requires engines to fetch; unset means # off. This site has no user-created public pages, so a key alone pings nothing. INDEXNOW_KEY=