Connections
All your keys, grouped by what they do, with deep-links to where you create them. Values are stored in Firestore so every backend picks them up automatically. Platform-level bootstrap secrets are listed at the bottom — those have to go on their respective platforms.
One-click connect
Sign in once and the right keys land in the right places. No copying tokens between browser tabs.
GitHub
not connectedAuto-pushes
HF_TOKEN + RENDER_TRIGGER_KEY to your repo's Actions secrets — no manual paste in GitHub Settings.Hugging Face
not connectedSkip the "create a new token" tab. OAuth token is stored directly as
HF_TOKEN and works with the Inference API.Other providers (NIM, Groq, Pexels, etc.) don't support OAuth and require manual token paste — they have
Get key deep-links in their section below.Recommended coverage
0 / 10 setHitting 100% on recommended is enough to render flawlessly. Optional keys add resilience.
AI & Language
LLMs for scripts + storyboards + vision-judging shot fits, and AI image generation for shots not covered by stock providers.
NVIDIA NIMrecommended
NVIDIA_NIM_API_KEYPrimary LLM (Nemotron-3-Super-120B) and vision judge. Free tier: 40 req/min. Apply for the free dev tier and you get an API key instantly.
not set
Groq (LLM fallback)optional
GROQ_API_KEYUsed when NIM rate-limits. Free tier: 30 req/min on Llama 3 models.
not set
Stock Footage
Sources for video clips + images that match the storyboard's per-shot search queries. At least one is highly recommended — without any, the pipeline falls back to AI image generation only.
Pexelsrecommended
PEXELS_API_KEYFree stock videos + photos. 200 req/hour. Excellent for atmospheric horror.
not set
Shutterstock (user token)optional
SHUTTERSTOCK_API_TOKENPremium licensed previews. 500/month free trial. Generated from your app's Authentication tab.
not set
Shutterstock Consumer Keyoptional
SHUTTERSTOCK_CLIENT_IDRequired only if you don't have a long-lived user token.
not set
Shutterstock Consumer Secretoptional
SHUTTERSTOCK_CLIENT_SECRETPaired with the Consumer Key. Treat as a password.
not set
Alerts & Automation
Webhook for Discord notifications + shared secret that authenticates GitHub Actions cron triggers to the dashboard gateway.
Discord webhookrecommended
DISCORD_WEBHOOK_URLChannel that gets notified on pipeline complete/fail/YouTube publish/cleanup. In Discord: Server settings → Integrations → Webhooks → New Webhook → copy URL.
not set
GitHub Actions shared secretrecommended
RENDER_TRIGGER_KEYRandom string. The SAME value must be set as a GitHub repo secret (or matches the Coolify env var) so the cron job can call your dashboard maintenance routes. Click Generate to get a fresh value.
not set
Storage (R2 + SFTP)
Credentials for video storage. Moved into Firestore so Kaggle (which loses its Add-ons → Secrets attachments on every new notebook version) only needs ONE platform-level secret (the Firebase service account). Colab + HF Space pick these up the same way.
Cloudflare R2 Account IDrecommended
R2_ACCOUNT_IDFind it at https://dash.cloudflare.com/?to=/:account/r2/overview — top-right of the R2 page.
not set
R2 Access Key IDrecommended
R2_ACCESS_KEY_IDFrom R2 → Manage R2 API Tokens → Create API token (Read & Write).
not set
R2 Secret Access Keyrecommended
R2_SECRET_ACCESS_KEYPaired with the access key ID. Treat as a password.
not set
R2 Bucket Namerecommended
R2_BUCKETThe bucket where videos land (e.g. yt-agent-videos).
not set
R2 Public URLrecommended
R2_PUBLIC_URLThe pub-xxxxx.r2.dev URL Cloudflare assigns when you enable public access on the bucket.
not set
Hostinger SFTP Hostoptional
SFTP_HOSTOptional. Used as R2 overflow archive when R2 hits R2_MAX_GB.
not set
Hostinger SFTP Useroptional
SFTP_USEROptional.
not set
Hostinger SFTP Passwordoptional
SFTP_PASSOptional. Treat as a password.
not set
Hostinger SFTP Portoptional
SFTP_PORTOptional. Default 65002 on Hostinger.
not set
Hostinger SFTP Base Directoryoptional
SFTP_BASE_DIROptional. e.g. domains/yourdomain.com/public_html/videos.
not set
Hostinger Public Base URLoptional
PUBLIC_BASE_URLOptional. e.g. https://yourdomain.com — the URL prefix the SFTP files are served from.
not set
Auto-Publish
YouTube credentials. The refresh token is set automatically by the 'Connect YouTube' button on the Automation tab — don't paste it manually here.
YouTube OAuth refresh tokenoptionalauto-managed
YOUTUBE_REFRESH_TOKENCreated by the OAuth consent flow. Don't edit manually — use the 'Connect YouTube' button on the Automation tab.
not set
Platform-level secrets
These can't be set from the dashboard because they're read at platform boot (dashboard server init, Colab notebook cell, HF Space startup, GitHub Actions runner). Each card tells you what to set and where.
Firebase / Firestore credentials
(Legacy Firebase deployments only.) Required to write to Firestore from each platform. Same JSON service-account file goes on the dashboard + Colab + HF Space, in different env var names per environment. Coolify/Pocketbase deployments skip this entirely.
▸
FIREBASE_SERVICE_ACCOUNT_JSON (server-side; dashboard env vars)▸
NEXT_PUBLIC_FIREBASE_CONFIG (client-side; dashboard env vars)Firebase / Firestore credentials (workers)
Same service-account JSON, pasted into the Colab Secrets panel and the HF Space Variables and secrets list.
▸
GOOGLE_APPLICATION_CREDENTIALS_JSONYouTube OAuth Client (for auto-publish flow)
Used by /api/youtube/auth + /callback to run the consent screen. Only needed if you want auto-publish. The Web Application redirect URI MUST exactly match https://<your-vercel-url>/api/youtube/callback.
▸
YOUTUBE_OAUTH_CLIENT_ID▸
YOUTUBE_OAUTH_CLIENT_SECRETGitHub Actions secrets
For automatic HF Space sync + daily render cron + cleanup. Set as repository secrets.
▸
HF_TOKEN (Write-scope HuggingFace token; lets the sync workflow push to your Space)▸
RENDER_TRIGGER_KEY (same value as the Firestore key, above)▸
DASHBOARD_BASE_URL (optional repo variable; defaults to whatever your deployment's public URL is)Kaggle on-demand GPU worker
Free T4 / P100 fallback when Colab is offline. The kaggle-dispatch.yml workflow wakes a Kaggle notebook whenever the queue has work and no GPU is alive. Notebook self-terminates after 10 min idle so it doesn't burn the 30 GPU hr/week budget. See kaggle/README.md for the full setup.
▸
KAGGLE_USERNAME (from kaggle.json — Account → Create New Token)▸
KAGGLE_KEY (from kaggle.json — same place)▸
HF_SPACE_URL (optional repo variable; defaults to your space)