openvibers/openvibe.space .env.example
.env.example
| 1 | # ═══════════════════════════════════════════════════════════════ |
| 2 | # openvibe.space — Environment Configuration |
| 3 | # Copy to .env and fill in values. |
| 4 | # In production this lives at /etc/openvibe/space.env (0600). |
| 5 | # ═══════════════════════════════════════════════════════════════ |
| 6 | |
| 7 | # Server |
| 8 | PORT=4940 |
| 9 | HOST=127.0.0.1 |
| 10 | NODE_ENV=development |
| 11 | BASE_URL=http://localhost:4940 |
| 12 | # Proxy hops that set X-Forwarded-For (Cloudflare → nginx → Node = 2) |
| 13 | TRUST_PROXY=2 |
| 14 | |
| 15 | # Identity provider — OpenVibe.Network (OAuth2 authorization server + JWKS) |
| 16 | OV_NETWORK_URL=https://openvibe.network |
| 17 | OV_NETWORK_INTERNAL_URL=http://127.0.0.1:4000 |
| 18 | |
| 19 | # OAuth2 client credentials (client `space` registered in the Network DB, |
| 20 | # redirect https://openvibe.space/auth/callback) |
| 21 | OV_OAUTH_CLIENT_ID=space |
| 22 | OV_OAUTH_CLIENT_SECRET=change-me-to-the-registered-space-secret |
| 23 | # Production: https://openvibe.space/auth/callback |
| 24 | OV_OAUTH_REDIRECT_URI=http://localhost:4940/auth/callback |
| 25 | |
| 26 | # Cookies — production default is Secure; set false for plain-http local dev |
| 27 | #COOKIE_SECURE=false |
| 28 | |
| 29 | # OpenVibe.Community — the hub, and where the forum lives (owner decision, 2026-10-08): every |
| 30 | # forum URL on this site redirects to the same path and query there. |
| 31 | OV_COMMUNITY_URL=https://openvibe.community |
| 32 | |
| 33 | # OpenVibe.Live — the legal pages the shared footer links |
| 34 | OV_LIVE_URL=https://openvibe.live |
| 35 | |
| 36 | # PostgreSQL (ADR-035), written by OpenVibe.Host roles/data/add-service.sh space. Space owns static hosting |
| 37 | # state as well as the historical forum schema and feeds /api/ready. |
| 38 | # Without DATABASE_URL, development uses an embedded PGlite database in data/pglite. |
| 39 | DATABASE_URL= |
| 40 | DATABASE_DIRECT_URL= |
| 41 | |
| 42 | # Static hosting engine (Stage B). Public project creation remains off until launch. |
| 43 | SPACE_PUBLIC_HOSTING=off |
| 44 | # Spaces (server/spaces/, docs/spaces.md): the AI builder and spaces' AI go through OpenVibe.AI (space.* workflows). |
| 45 | #SPACE_AI=on |
| 46 | # Who builds a space when a person describes one (plan 2026-10-22 §Z, stage Z1). |
| 47 | # legacy Space's own AI loop (the way it was) |
| 48 | # agent a task of the person's own agent (OpenVibe.Actor), with the space_* tools |
| 49 | # The old path stays until the new one is proven; nothing is deleted. |
| 50 | #SPACE_BUILDER=legacy |
| 51 | # OpenVibe.Actor, the person's one agent (the task Space starts, and the tools it works with). |
| 52 | #OV_ACTOR_INTERNAL_URL=http://127.0.0.1:4950 |
| 53 | # OpenVibe.Events → Space (account export and deletion, server/account-data.js): signs deliveries to /internal/events (32+ characters). |
| 54 | #SPACE_EVENTS_SECRET= |
| 55 | #OV_AI_INTERNAL_URL=http://127.0.0.1:4700 |
| 56 | #SPACE_SPACES_PER_OWNER=25 |
| 57 | #SPACE_AI_BUILDS_PER_DAY=20 |
| 58 | #SPACE_AI_ASKS_PER_SPACE_PER_DAY=500 |
| 59 | SPACE_SITES_DOMAIN=openvibe.website |
| 60 | SPACE_STORAGE_DIR=./data/objects |
| 61 | # SPACE_OBJECT_STORE=media |
| 62 | # OV_MEDIA_URL=http://127.0.0.1:4100 |
| 63 | # OV_MEDIA_NAMESPACE=space |
| 64 | # SPACE_FORM_SECRET= # set a stable random value for dashboard forms |
| 65 | # SPACE_WORKER=off # off only for tests; default on |
| 66 | # SPACE_PGLITE_DIR= # development-only embedded database path |
| 67 | # SPACE_MAX_UPLOAD_BYTES=104857600 |
| 68 | # SPACE_MAX_UNPACKED_BYTES=268435456 |
| 69 | # SPACE_MAX_CONCURRENT_UPLOADS=2 |
| 70 | # SPACE_MIN_FREE_BYTES=5368709120 |
| 71 | # SPACE_MAX_PROJECTS_PER_OWNER=10 |
| 72 | # SPACE_QUOTA_STORAGE_BYTES=1073741824 |
| 73 | # SPACE_QUOTA_DEPLOYS_PER_DAY=50 |
| 74 | # SPACE_QUOTA_MAX_FILES=10000 |
| 75 | # SPACE_QUOTA_MAX_FILE_BYTES=26214400 |
| 76 | # SPACE_QUOTA_SITES=10 |
| 77 | # SPACE_QUOTA_CUSTOM_DOMAINS=5 |
| 78 | # SPACE_SANDBOX_QUOTA_STORAGE_BYTES=104857600 |
| 79 | # SPACE_SANDBOX_QUOTA_DEPLOYS_PER_DAY=20 |
| 80 | # SPACE_SANDBOX_QUOTA_MAX_FILES=2000 |
| 81 | # SPACE_SANDBOX_QUOTA_MAX_FILE_BYTES=10485760 |
| 82 | # SPACE_SANDBOX_QUOTA_SITES=3 |
| 83 | # SPACE_SANDBOX_QUOTA_CUSTOM_DOMAINS=0 |
| 84 | # SPACE_CNAME_TARGET= |
| 85 | # SPACE_ORIGIN_IPV4= |
| 86 | # SPACE_ORIGIN_IPV6= |
| 87 | # SPACE_DNS_SERVERS= |
| 88 | # SPACE_DOMAIN_RECHECK_MS=600000 |
| 89 | # SPACE_DOMAIN_PENDING_DAYS=7 |
| 90 | # SPACE_DOMAIN_LAPSE_DAYS=7 |
| 91 | # SPACE_RESERVED_DOMAINS= |
| 92 | # SPACE_RESERVED_SITE_NAMES= |
| 93 | # SPACE_ACTOR_LIMITS=on |
| 94 | # EVENTS_URL= |
| 95 | # EVENTS_RELAY_INTERVAL_MS=2000 |
| 96 | # SPACE_BILLING_INTERVAL_MS=0 # >0: daily gb-month storage readings to Billing (local store only) |
| 97 | # OV_BILLING_URL= # Billing base URL; unset keeps readings queued |
| 98 | # OV_BILLING_AUDIENCE=openvibe.billing |
| 99 | # SPACE_BILLING_TIMEOUT_MS=10000 |
| 100 | # INDEXNOW_KEY= |
| 101 | # VALKEY_URL= |
| 102 | # VALKEY_PREFIX=ov:space: |
| 103 | # API_CORS_ORIGINS=https://openvibe.network,https://openvibe.codes |
| 104 | |
| 105 | # Guest drafts (openvibe.website, plan 5.9): a visitor makes a draft on openvibe.space without an account and |
| 106 | # edits it with a secret link; a signed-in person claims it later. These limits are the abuse screen's first half. |
| 107 | #SPACE_GUEST_DRAFTS=on # off: no guest drafts at all |
| 108 | #SPACE_GUEST_DRAFTS_PER_IP_PER_DAY=3 # drafts one address may make a day |
| 109 | #SPACE_GUEST_AI_BUILDS_PER_IP_PER_DAY=2 # AI builds (and changes) one address may ask for a day |
| 110 | #SPACE_GUEST_AI_EDITS_PER_DRAFT=20 # AI changes one draft may have |
| 111 | #SPACE_GUEST_DRAFTS_PER_DAY=500 # drafts the whole service makes a day |
| 112 | #SPACE_GUEST_TTL_DAYS=7 # a draft lives this long after its last edit |
| 113 | #SPACE_GUEST_CLEANUP_INTERVAL_MS=3600000 # the job that removes the drafts whose time is up |
| 114 |