A Place to Share Your Stable Diffusion Models (and Learn From Everyone Else's)
You've spent hours fine-tuning a model, training a textual inversion, or dialing in a hypernetwork—and now it just sits on your drive. Where do you put it so other people can actually use it, compare notes, and help you make it better? Civitai is an open-source platform built for exactly that. It's a place to upload your stable diffusion models, browse what others have shared, and leave comments and feedback so everyone learns from the work.
What It Does
Civitai is a sharing platform for stable diffusion customizations—the README lists textual inversions, hypernetworks, aesthetic gradients, VAEs, "and any other crazy stuff people do to customize their AI generations." Users can create an account, upload models, and browse models shared by others. Comments and feedback on each model are part of the design, with the stated goal of facilitating collaboration and knowledge sharing.
Under the hood, it's a fairly conventional modern JavaScript stack: Next.js handles both front-end and back-end, tRPC powers the API, and Prisma with Postgres takes care of the database. The UI is built on Mantine, and Cloudflare handles storage. The README's framing is that this combination produces something "scalable and maintainable" that's both user-friendly and powerful—and the stack choices back that up in a practical sense, since tRPC gives you end-to-end type safety between client and server without a separate API layer.
Why It's Cool
-
The stack is refreshingly cohesive. Next.js, tRPC, and Prisma are a well-trodden path, but seeing them applied to a real, non-trivial social platform is useful. If you've been curious how tRPC holds up outside a todo-app demo, this is a substantial codebase to poke through.
-
It's honest about its own setup. The prerequisites section doesn't hand-wave. Node is pinned to
24.19.0via.nvmrc, CI installs that exact version, and the production image is built on it too. The README even warns you thatpnpm installwill only printWARN Unsupported engineand carry on, so the wrong major surfaces later as "odd test failures rather than as a refusal at install time." That's the kind of detail you usually learn the hard way. -
pnpm is actually enforced. While the Node version is a soft nudge, the package manager is a hard rule—
npm installexits 1 through apreinstallonly-allow pnpmhook.corepack enablepicks up thepackageManagerfield for you. Small thing, but it means everyone's lockfile behavior matches. -
The local environment is containerized. Docker Compose (v2, specifically—the README calls out that the hyphenated
docker-composeis retired) brings up the database, Redis, MinIO, Meilisearch, ClickHouse, and a mail catcher. You're not installing six services by hand just to get the app running. -
A Nix flake exists, and the README is upfront about why. Rather than pretending Nix is the blessed path, it labels the flake optional and "not the supported default," explaining it exists because NixOS can't use Prisma's published engines—there's no
linux-nixosbuild. If you're not on NixOS, it tells you to skip it. That kind of scoping is rare and welcome.
How to Try It
The standard setup is short. You'll need Docker with Compose v2, Node 24.19.0, and pnpm.
git clone https://github.com/civitai/civitai.git
cd civitai
nvm use # reads .nvmrc -> 24.19.0
corepack enable
git submodule update --init event-engine-common
cp .env-example .env.development
docker compose -f docker-compose.base.yml up -d
pnpm install
pnpm dev
Note the submodule step—event-engine-common won't be there unless you initialize it. Make is listed as optional, presumably for convenience scripts.
If you're on NixOS, there's a one-liner:
nix run .#dev
The flake owns the toolchain, so you don't install Node or pnpm yourself. Everyone else can ignore that section entirely.
The full instructions live in the repository, including a "Known limitations" section and notes on data migrations if you plan to contribute.
Final Thoughts
Civitai is interesting less as a novel idea and more as a working reference for a full-stack Next.js and tRPC application with a real social feature set behind it. The README's insistence on pinned versions, enforced package managers, and containerized dependencies suggests a team that has been burned by "works on my machine" and decided to do something about it. If you're building a model-sharing tool, studying a tRPC codebase at this scale, or just want to contribute to a platform you might already use, it's worth a clone. The setup is a handful of commands—and the README tells you exactly which ones.
Follow @githubprojects for more developer tools and open source projects.