openvibers/openvibe.exchange .env.example

.env.example

main 4.6 KB · 98 lines · plaintext

1# OpenVibe.Exchange — environment (production: /etc/openvibe/exchange.env). Names only; never commit values.
2
3NODE_ENV=production
4PORT=5150
5HOST=127.0.0.1
6BASE_URL=https://openvibe.exchange
7TRUST_PROXY=2
8# PostgreSQL (ADR-035), written by OpenVibe.Host roles/data/add-service.sh: the runtime role through PgBouncer,
9# the owner on a direct connection (migrations), and Valkey (shared limit counters).
10# Without DATABASE_URL, development uses an embedded PGlite database in data/pglite.
11DATABASE_URL=
12DATABASE_DIRECT_URL=
13VALKEY_URL=
14VALKEY_PREFIX=ov:exchange:
15# Per-address limits (server/app.js) and the chat's per-person limit on top.
16#EXCHANGE_RATE_LIMIT_PER_MIN=300
17#EXCHANGE_CHAT_PER_DAY=40
18#EXCHANGE_CHAT_MODELS=3
19#EXCHANGE_CHAT_MAX_CHARS=8000
20
21# OpenVibe.Network: SSO (OAuth client `exchange`, PKCE S256) and its JWKS; the client-credentials token for
22# OpenVibe.AI is made from the same client secret (Network grants it ai.run.create, ns ai.complete).
23OV_NETWORK_URL=https://openvibe.network
24OV_NETWORK_INTERNAL_URL=http://127.0.0.1:4000
25# OV_NETWORK_ISSUER=https://openvibe.network
26OV_OAUTH_CLIENT_ID=exchange
27OV_OAUTH_CLIENT_SECRET=
28# OV_OAUTH_REDIRECT_URI=https://openvibe.exchange/auth/callback
29# EXCHANGE_AUDIENCE=openvibe.exchange
30# OV_SESSION_AUDIENCE=openvibe.network
31# EXCHANGE_PGLITE_DIR=./data/pglite
32
33# OpenVibe.AI: the public catalog and usage reads, and the ai.complete runs a chat or a Try it makes on the
34# person's behalf. The reads are public; the runs carry this service's token (OV_OAUTH_CLIENT_SECRET).
35#OV_AI_URL=https://ai.openvibe.services
36#OV_AI_AUDIENCE=openvibe.ai
37#OV_AI_SCOPE=ai.run.create
38# OpenVibe.Sources: the github source's repository rankings and its live GitHub search (category code).
39# Exchange's own client-credentials grant (sources.item.read) reads it over loopback; nothing here calls GitHub.
40#OV_SOURCES_URL=http://127.0.0.1:4720
41#OV_SOURCES_AUDIENCE=openvibe.sources
42#OV_SOURCES_SCOPE=sources.item.read
43#EXCHANGE_CODE_REPOS_CACHE_MS=60000
44#EXCHANGE_CODE_SEARCH_CACHE_MS=600000
45#EXCHANGE_CODE_SEARCH_PER_MIN=20
46
47# The owner console uses this Exchange service grant to read/write AI's admin JSON API.
48# Network grants these capabilities to the existing `exchange` client; keep this scope to the needed AI capabilities.
49#OV_AI_CONSOLE_SCOPE=ai.usage.read ai.workflow.manage ai.provider.manage
50#EXCHANGE_AI_TIMEOUT_MS=30000
51#EXCHANGE_AI_WAIT_MS=25000
52
53# OpenVibe.Report: the public AI performance rows behind a model's Measured panel, and a signed-in person's own
54# AI usage (their Network session token is forwarded; no service token is involved). A public row floor of 20
55# calls in 30 days; the performance rows are cached for five minutes.
56#OV_REPORT_URL=https://openvibe.report
57#EXCHANGE_REPORT_TIMEOUT_MS=2000
58#EXCHANGE_REPORT_CACHE_MS=300000
59
60# /openapi.json reads the API host's document and keeps it for ten minutes.
61#OV_EXCHANGE_API_URL=https://api.openvibe.exchange
62#OV_EXCHANGE_OPENAPI_URL=https://api.openvibe.exchange/openapi.json
63#EXCHANGE_OPENAPI_CACHE_MS=600000
64#EXCHANGE_OPENAPI_TIMEOUT_MS=15000
65
66# OpenVibe.Events: account export/deletion deliveries to POST /internal/events. The secret signs a delivery
67# (comma-separated for rotation, 32+ characters each; unset makes the route answer 503).
68EXCHANGE_EVENTS_SECRET=
69EXCHANGE_EVENTS_URL=
70#EXCHANGE_EVENTS_ENDPOINT=http://127.0.0.1:5150/internal/events
71#EXCHANGE_EVENTS_INTERVAL_MS=5000
72
73# A restore drill starts no subscriptions and creates no Events subscription.
74# EXCHANGE_DRILL=0
75
76# OpenVibe.Chat: the companions' answers are read aloud in each character's own voice. The call carries
77# the person's own Network token, so the read-aloud is on their own allowance and on Chat's per-person rate
78# limit. The site's own voices only; a cloned voice is never asked for here.
79#OV_CHAT_URL=https://openvibe.chat
80#EXCHANGE_TTS_TIMEOUT_MS=20000
81
82# The companions' images (step 6 of the design): OFF until an image provider is configured. While the switch is
83# off no provider is ever called and the route refuses with the reason.
84#EXCHANGE_COMPANIONS_IMAGES_ENABLED=false
85#EXCHANGE_COMPANIONS_IMAGES_PROVIDER=
86
87# optional: defaults to true in production
88# COOKIE_SECURE=true
89
90# openvibe.compare: the comparison site is served by this same service behind its own name (its vhost
91# deploy/nginx/openvibe.compare.conf proxies to this process). The host makes a request the compare site's.
92#COMPARE_HOST=openvibe.compare
93#COMPARE_BASE_URL=https://openvibe.compare
94
95# IndexNow (openvibe-shared/indexnow): a key lets a new page or a changed sitemap be submitted for recrawl.
96# Unset → off; nothing is mounted and nothing is sent. The key file is served at /<key>.txt.
97#INDEXNOW_KEY=
98