-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path.env.example
More file actions
109 lines (83 loc) · 4.95 KB
/
Copy path.env.example
File metadata and controls
109 lines (83 loc) · 4.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# koreanpulse environment template.
# Copy to `.env` (same directory) and fill in your real values.
# `.env` is gitignored. Never commit secrets.
# ── Required ────────────────────────────────────────────────────────────────
# DART OpenAPI key — get one (free) at https://opendart.fss.or.kr/
DART_API_KEY=your-40-char-dart-key-here
# ── Optional ────────────────────────────────────────────────────────────────
# LLM provider for server-side translation/summary.
# Options: "openai" (default, recommended — cheaper) or "anthropic".
# KOREANPULSE_TRANSLATE_PROVIDER=openai
# OpenAI API key — required if provider=openai (the default).
# Default model: gpt-5-mini ($0.25/M input, $2/M output, ~3x cheaper than Haiku).
OPENAI_API_KEY=skeu
# Anthropic API key — required if provider=anthropic.
# Without either key, tools still work but return Korean-only fields.
ANTHROPIC_API_KEY=
# Override the LLM model used for translation/summary.
# Default per provider: openai → gpt-5-mini, anthropic → claude-haiku-4-5-20251001
# KOREANPULSE_TRANSLATE_MODEL=gpt-5-mini
# ── Translator dispatch mode ────────────────────────────────────────────────
# local — call OpenAI/Anthropic directly with your key + local FileCache.
# Suitable for free / BYOK use. Default.
# hosted — call the koreanpulse-cache Cloudflare Worker. Worker holds our
# OpenAI key, fronts a global KV cache, and validates your license.
# Requires KOREANPULSE_LICENSE_KEY. No local cache used.
# KOREANPULSE_CACHE_MODE=local
# Hosted-mode Worker base URL. Default points at our production deployment.
# Override only if you self-host or are pointing at a preview Worker.
# KOREANPULSE_CACHE_URL=https://cache.koreanpulse.dev
# Subscription key (issued by Polar webhook on subscription.created and
# emailed to the customer; persisted in the license store).
# Required when KOREANPULSE_CACHE_MODE=hosted; ignored when mode=local.
# KOREANPULSE_LICENSE_KEY=kp_...
# Override DART daily soft quota (default 32000 = 80% of DART's 40K hard limit).
# Raise this only if you have an off-the-record higher allotment from DART.
# DART_DAILY_QUOTA=32000
# Override DART burst rate (default 5 req/s). Don't raise above ~8/s without reason.
# KIS_BUCKET_RPS=5
# Set to "1" in production to enforce license-key validation on paid tools.
# Off by default for local development.
KOREANPULSE_REQUIRE_LICENSE=0
# Force-load a specific env file (overrides the default search order):
# KOREANPULSE_ENV_FILE=/etc/koreanpulse/secrets.env
# ── Billing (Polar — sole billing provider) ───────────────────────────────
# Required only when running the Cloudflare webhook-worker (the billing
# endpoint). Polar is our only Merchant of Record, active since 2026-05-06.
# Polar webhook signing secret — Settings → Webhooks → endpoint signing key.
# Format: polar_whs_...
POLAR_WEBHOOK_SECRET=
# Polar API token — used to read subscription state. subscriptions:read scope.
# Format: polar_oat_...
POLAR_API_TOKEN=
# Polar product UUIDs — copy from each product's settings page.
POLAR_PRODUCT_SOLO= # Cloud Solo $29/mo
POLAR_PRODUCT_ANALYST= # Cloud Analyst $79/mo
POLAR_PRODUCT_DESK= # Cloud Desk $249/mo
# Resend API key for license-key delivery email on subscription.created.
RESEND_API_KEY=
# ── Lemon Squeezy (NOT IN USE — store application declined 2026-05-06) ────
# Polar is our only billing provider. The slots below are documented only
# because the LS handler code is still in the repo as a historical
# implementation reference; setting them in production would attempt to
# dispatch licenses against a provider we have no MoR relationship with.
# Do NOT set in production.
# LEMONSQUEEZY_WEBHOOK_SECRET=
# LEMONSQUEEZY_VARIANT_SOLO=
# LEMONSQUEEZY_VARIANT_ANALYST=
# LEMONSQUEEZY_VARIANT_DESK=
# LEMONSQUEEZY_VARIANT_LIFETIME=
# Deprecated / back-compat only:
# LEMONSQUEEZY_VARIANT_PRO=
# LEMONSQUEEZY_VARIANT_STARTER=
# LEMONSQUEEZY_VARIANT_INDIE=
# LEMONSQUEEZY_VARIANT_ENTERPRISE=
# ── Cache Worker (Cloudflare Workers + KV) ─────────────────────────────────
# Required only when the koreanpulse-cache Worker is deployed and points at
# this webhook process. Both sides must share the same secret. Generate with:
# python -c "import secrets; print(secrets.token_urlsafe(48))"
KOREANPULSE_CACHE_SHARED_SECRET=
# Postgres DSN — required in production so the webhook process and the MCP
# server share the same license store. Set this together with
# KOREANPULSE_REQUIRE_LICENSE=1; either both or neither.
DATABASE_URL=