Deployment
Self-hosting the studio
The studio needs a long-running Node process, PostgreSQL with pgvector, FFmpeg and disk space for output files. One small VM is enough.
bun install --frozen-lockfile
bunx prisma migrate deploy
bun run build
bun run start # listens on port 3000
- Put it behind a reverse proxy such as Caddy or nginx with HTTPS, and set
AUTH_URLto the public address. - Keep
public/videos,public/imagesandpublic/audioon persistent disk. - Run one instance, because the SSE event bus lives in memory.
- Back up the database with
pg_dumpon a schedule.
Serverless hosts are a poor fit for the studio itself. Generation runs for minutes in the background, FFmpeg needs a native binary, and outputs are written to local disk.
The public site
The landing page and these docs are deployed to Vercel with KALKI_SITE_ONLY=1, which turns every app route into a redirect home, so no database is needed. Vercel deploys every push to main.
Releases
Releases are cut from tags. Bump version in package.json, add a section to CHANGELOG.md, merge, then:
git tag v0.3.0
git push origin v0.3.0
The Release workflow runs the checks and the build, then publishes a GitHub Release with that version's changelog section as its notes.