Skip to content

Setup Wizard

OpenCauldron ships with an interactive setup wizard for forkers — developers who want to take the codebase, customize it, and ship their own version. The wizard prompts for database, storage, and AI provider settings, then writes a configured .env.local for you.

After cloning the repo, run pnpm setup from the project root:

Terminal window
git clone https://github.com/opencauldron/opencauldron.git my-studio
cd my-studio
pnpm install
pnpm setup

The wizard reads .env.example, asks you a handful of questions, and writes the result to .env.local. It does not clone anything, install dependencies, or run git init — those are your call. (If you want to detach from OpenCauldron’s git history before iterating: rm -rf .git && git init.)

If .env.local already exists, the wizard asks before overwriting it.


◆ Studio name (used for branding, optional)
│ Acme Studio

If provided, the studio name is saved as NEXT_PUBLIC_ORG_NAME in your .env.local so the UI displays it. Leave blank to skip.

◆ Database
│ ● Local Postgres (docker compose up db -d)
│ ○ Neon (serverless Postgres)
│ ○ Skip — I'll set DATABASE_URL myself
  • Local Postgres — Sets DATABASE_URL to postgresql://cauldron:cauldron@localhost:5432/cauldron, matching the included docker-compose.dev.yml.
  • Neon — Prompts for your Neon connection string (must include neon.tech in the URL).
  • Skip — Leaves the value from .env.example as-is. Use this if you’re pointing at Supabase, RDS, or any other Postgres.
◆ Storage
│ ● Local filesystem (saves to ./uploads/)
│ ○ Cloudflare R2 (production storage)
  • Local filesystem — Generated media is saved to the uploads/ directory. Good for development.
  • Cloudflare R2 — Prompts for your R2 Account ID, Access Key ID, Secret Access Key, and Bucket Name. Required for image-to-video workflows where AI providers need a publicly accessible URL.

The wizard displays all available providers grouped by type, then presents a multi-select. Pick the providers you want to enable; the wizard prompts for each selected key (entered as a password field). You can skip this step entirely and add keys to .env.local later.

Image Models

ProviderKeyModels
Google GeminiGEMINI_API_KEYImagen 4, Flash, Flash Lite
xAI GrokXAI_API_KEYGrok Imagine, Grok Pro
Black Forest LabsBFL_API_KEYFlux Pro 1.1, Flux Dev
IdeogramIDEOGRAM_API_KEYIdeogram 3
RecraftRECRAFT_API_KEYRecraft V3, Recraft 20B

Video Models

ProviderKeyModels
Google Veo 3GEMINI_API_KEY(shares Gemini key)
RunwayRUNWAY_API_KEYGen-4 Turbo
Kling (fal.ai)FAL_KEYKling 2.1
MiniMaxMINIMAX_API_KEYHailuo 2.3
Luma AILUMA_API_KEYRay 2

Tools

ProviderKeyPurpose
MistralMISTRAL_API_KEYPrompt enhancement

When you finish, the wizard writes a single file: .env.local. It is generated from .env.example with your choices substituted in. A random NEXTAUTH_SECRET is generated automatically.

The wizard prints a configuration summary and the next commands to run.


Terminal window
docker compose -f docker-compose.dev.yml up -d # start local Postgres (if you chose it)
pnpm exec drizzle-kit migrate # apply schema migrations
pnpm dev # start dev server

Open http://localhost:3000 to access your studio.

If you skipped the AI provider step, add API keys to .env.local before generating. See the API Keys guide for instructions on obtaining each key.