openvibers/openvibe.meme .env.example

.env.example

main 6.5 KB · 155 lines · plaintext

1# OpenVibe.Meme — environment (production: /etc/openvibe/meme.env). Names only; never commit values.
2
3NODE_ENV=production
4PORT=5120
5HOST=127.0.0.1
6BASE_URL=https://openvibe.meme
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:meme:
15# Per-actor limits (server/http/api.js) and per-address limits (server/app.js).
16#MEME_LIMITS_MINUTE=120
17#MEME_LIMITS_HOUR=3000
18#MEME_API_RATE_LIMIT_PER_MIN=240
19#MEME_RATE_LIMIT_PER_MIN=300
20
21# OpenVibe.Network: SSO (OAuth client `meme`, PKCE S256) and its JWKS; app tokens for audience openvibe.meme.
22OV_NETWORK_URL=https://openvibe.network
23OV_NETWORK_INTERNAL_URL=http://127.0.0.1:4000
24# OV_NETWORK_ISSUER=https://openvibe.network
25OV_OAUTH_CLIENT_ID=meme
26OV_OAUTH_CLIENT_SECRET=
27# OV_OAUTH_REDIRECT_URI=https://openvibe.meme/auth/callback
28# MEME_AUDIENCE=openvibe.meme
29# OV_SESSION_AUDIENCE=openvibe.network
30# MEME_PGLITE_DIR=./data/pglite
31
32# OpenVibe.Events: account export/deletion deliveries to POST /internal/events. The secret signs a delivery
33# (comma-separated for rotation, 32+ characters each; unset makes the route answer 503).
34MEME_EVENTS_SECRET=
35MEME_EVENTS_URL=
36# Relay queued public caption events after Contracts #444 is released and Events accepts the topic.
37MEME_CAPTION_EVENTS_ENABLED=off
38#MEME_EVENTS_ENDPOINT=http://127.0.0.1:5120/internal/events
39# OpenVibe.Search's owner API: the queued Search documents (meme_outbox) are delivered there. Unset: they wait.
40#MEME_SEARCH_URL=http://127.0.0.1:4710
41#MEME_EVENTS_INTERVAL_MS=5000
42
43# The public APIs the importer and the citation re-verifier read. No service grant is used for them.
44OV_CHAT_URL=https://openvibe.chat
45OV_LIVE_URL=https://openvibe.live
46OV_VIDEO_URL=https://openvibe.video
47#MEME_UPSTREAM_TIMEOUT_MS=8000
48
49# OpenVibe.AI: the judge and the encyclopedia's writing pass. Meme calls ai.generate as the service `meme` with a
50# Network client-credentials token (audience openvibe.ai, scope ai.run.create); Network grants the ai.generate
51# namespace. Meme never names a provider — AI's routing decides.
52OV_AI_INTERNAL_URL=http://127.0.0.1:4700
53#MEME_AI_AUDIENCE=openvibe.ai
54#MEME_AI_SCOPE=ai.run.create
55#MEME_AI_WAIT_MS=55000
56#MEME_AI_TIMEOUT_MS=120000
57#MEME_AI_POLL_MS=1500
58#MEME_AI_MAX_TOKENS=1400
59
60# The judge: it scores a candidate from its own citations and writes the entry. Only what clears the bar is
61# published; everything else stays hidden for staff with its score.
62#MEME_JUDGE_INTERVAL_MS=1800000
63#MEME_JUDGE_MIN_SCORE=0.75
64#MEME_JUDGE_MIN_USES=3
65#MEME_JUDGE_MIN_DAYS=2
66#MEME_JUDGE_MIN_CHANNELS=2
67#MEME_JUDGE_MAX_PER_RUN=10
68#MEME_JUDGE_CONTEXT_LINES=6
69
70# The encyclopedia and the templates: Wikipedia (CC BY-SA), Wikidata (CC0) and Wikimedia Commons (each file under
71# its own licence). Read-only public APIs; a site whose terms forbid it is never scraped.
72#MEME_WIKIPEDIA_URL=https://en.wikipedia.org
73#MEME_WIKIDATA_URL=https://www.wikidata.org
74#MEME_COMMONS_URL=https://commons.wikimedia.org
75#MEME_WIKI_USER_AGENT=OpenVibe.Meme/0.2 (+https://openvibe.meme; [email protected])
76#MEME_WIKI_TIMEOUT_MS=20000
77#MEME_WIKI_MIN_INTERVAL_MS=250
78#MEME_ENCYCLOPEDIA_LIMIT=400
79#MEME_ENCYCLOPEDIA_LISTS=List_of_Internet_phenomena
80#MEME_ENCYCLOPEDIA_CATEGORIES=Internet memes,Memes
81#MEME_ENCYCLOPEDIA_MIN_SCORE=0.75
82#MEME_TEMPLATES_LIMIT=40
83
84# The candidate importer: every 30 minutes, hidden candidates only, off under MEME_DRILL.
85#MEME_IMPORTER_INTERVAL_MS=1800000
86#MEME_IMPORTER_MIN_USES=2
87#MEME_IMPORTER_MIN_DAYS=2
88#MEME_IMPORTER_MAX_TOPICS=12
89#MEME_IMPORTER_MAX_VODS=12
90#MEME_IMPORTER_MAX_CANDIDATES=10
91
92# Citation re-verification: daily, off under MEME_DRILL.
93#MEME_REVERIFY_INTERVAL_MS=86400000
94
95<<<<<<< HEAD
96<<<<<<< HEAD
97<<<<<<< HEAD
98# Reddit's official API (OAuth2 client credentials; create a "script" app at reddit.com/prefs/apps). The trends
99# importer is off while either credential is empty. Never commit the secret.
100MEME_REDDIT_CLIENT_ID=
101MEME_REDDIT_CLIENT_SECRET=
102#MEME_REDDIT_USER_AGENT=web:openvibe.meme:v0.2 (by /u/OpenVibe)
103#MEME_REDDIT_SUBREDDITS=memes,dankmemes,MemeEconomy,wholesomememes
104#MEME_REDDIT_INTERVAL_MS=900000
105#MEME_REDDIT_MAX_POSTS=100
106#MEME_REDDIT_MIN_TEMPLATE_POSTS=3
107#MEME_REDDIT_MAX_IMAGE_BYTES=8388608
108
109# OpenVibe.Media object API v2 for trend pictures and generated memes (namespace `meme`). Needs the Network
110# client secret and a grant of media.object.upload/read for namespace meme; without it the source URL is kept.
111OV_MEDIA_INTERNAL_URL=
112#MEME_MEDIA_NAMESPACE=meme
113
114# Register the Reddit source (disabled) in OpenVibe.Sources once. Needs sources.source.read/manage.
115OV_SOURCES_INTERNAL_URL=
116#MEME_SOURCES_REGISTER=0
117=======
118# OpenVibe.AI for analyse (pics.describe_image + ai.extract), later research and generation. Off without the
119# internal URL and the Network client secret. Needs ai.run.create/read and the workflow namespaces it calls.
120# The URL above is the judge's; this runner uses the same URL and is off when it is not set.
121#MEME_AI_DAILY_CALLS=200
122#MEME_AI_DAILY_BUDGET_USD=5
123#MEME_AI_WAIT_MS=60000
124
125# Reddit's official API, for a Reddit URL's spread and comments (and the trends importer). Off while empty.
126MEME_REDDIT_CLIENT_ID=
127MEME_REDDIT_CLIENT_SECRET=
128#MEME_REDDIT_USER_AGENT=web:openvibe.meme:v0.3 (by /u/OpenVibe)
129>>>>>>> 827a65d (Meme M4: analyse a meme with OpenVibe.AI vision and a structured call, inside a daily budget)
130=======
131# Deep dives (M5): research.gather + ai.generate. Off without OV_AI_INTERNAL_URL and the Network client secret.
132# Needs ai.run.create/read plus the research.* and ai.* workflow namespaces.
133OV_AI_INTERNAL_URL=
134#MEME_RESEARCH_MAX_SOURCES=12
135#MEME_RESEARCH_DAILY_CALLS=40
136#MEME_RESEARCH_DAILY_BUDGET_USD=5
137#MEME_RESEARCH_WAIT_MS=180000
138>>>>>>> b07c350 (Meme M5: AI-researched deep dives whose every claim carries its source)
139=======
140# The generator (M6): research.gather + ai.extract, then a server-side PNG stored in OpenVibe.Media. Off without
141# OV_AI_INTERNAL_URL or Media. Needs media.object.upload/read for namespace meme.
142OV_MEDIA_INTERNAL_URL=
143#MEME_MEDIA_NAMESPACE=meme
144#MEME_GENERATE_DAILY_CALLS=60
145#MEME_GENERATE_DAILY_BUDGET_USD=5
146#MEME_GENERATE_MAX_SOURCES=6
147#MEME_GENERATE_WAIT_MS=150000
148>>>>>>> bdce686 (Meme M6: generate a meme from the template's own layout and bundled fonts, stored in Media)
149
150# A restore drill starts no jobs and creates no subscriptions.
151#MEME_DRILL=0
152
153# optional: defaults to true in production
154# COOKIE_SECURE=true
155