Settings
Secrets live in .env and are read from process.env only. This page shows which keys are set — never their values.
Generation
| Key | Status | Purpose |
|---|---|---|
| RUNPOD_API_KEY | set | RunPod API key for the on-demand 4090 ComfyUI pod. |
| RUNPOD_TEMPLATE_ID | not set | RunPod template the ComfyUI pod is deployed from. Required only for live pod deploys. |
| CIVITAI_API_KEY | set | Civitai (civitai.red) API key — needed to download extra LoRAs from the Models page. |
| KIE_AI_KEY | not set | Optional managed Veo 3.1 route (no GPU needed). Optional — the RunPod route is used instead. |
LLM
| Key | Status | Purpose |
|---|---|---|
| ANTHROPIC_API_KEY | not set | Claude API key for captions and Fanvue chat drafts. Drafts fall back to the template reply from the Fanvue tutorial. |
Fanvue
| Key | Status | Purpose |
|---|---|---|
| FANVUE_CLIENT_ID | not set | OAuth 2.0 client id (Builder area). Fanvue inbox and publishing run against the in-memory mock. |
| FANVUE_CLIENT_SECRET | not set | OAuth client secret — sent as client_secret_basic, server-side only. Confidential-client token exchange is unavailable. |
| FANVUE_REDIRECT_URI | not set | Must match the redirect URI registered for the app. Defaults to http://localhost:3000/api/fanvue/callback. |
| FANVUE_WEBHOOK_SECRET | not set | signingSecret from POST /webhooks/subscriptions (returned once). Incoming webhooks are rejected in live mode. |
Public socials
| Key | Status | Purpose |
|---|---|---|
| INSTAGRAM_ACCESS_TOKEN | not set | Instagram Graph API token (Business account). Instagram publishing is simulated. |
| INSTAGRAM_USER_ID | not set | Instagram Business user id used for /media and /media_publish. Instagram publishing is simulated. |
| YOUTUBE_CLIENT_ID | not set | YouTube Data API v3 OAuth client id. YouTube publishing is simulated. |
| YOUTUBE_CLIENT_SECRET | not set | YouTube OAuth client secret. YouTube publishing is simulated. |
| YOUTUBE_REFRESH_TOKEN | not set | Long-lived YouTube refresh token. YouTube publishing is simulated. |
Orchestration
| Key | Status | Purpose |
|---|---|---|
| N8N_WEBHOOK_BASE | not set | Base URL n8n webhooks are called on. Defaults to http://localhost:5678/webhook. |
Dashboard
| Key | Status | Purpose |
|---|---|---|
| DATABASE_URL | set | Prisma SQLite connection string. |
Fanvue connection
OAuth 2.0 + PKCE against auth.fanvue.com
Requests scopes: openid, offline_access, offline, read:self, read:chat, write:chat. The client secret is sent as client_secret_basic and never leaves the server.
Connect FanvueAge-safety blocklist
100 terms, checked before every generation
- minor51 terms
- familial-minor-coded12 terms
- school21 terms
- real-person16 terms
- numeric ages below 18pattern-matched
Personas are validated as 18+ by the schema itself, and a persona whose own description trips the blocklist will not load at all.
Paths
- Personas
- /root/ai-creator-stack/personas
- n8n
- http://localhost:5678/webhook