What "on GitHub" usually means
A search for an NSFW generator on GitHub tends to turn up two different things. One is the weights, the trained model itself, usually published on Hugging Face. The other is code that loads those weights and runs them: an inference script, a web interface, a node graph. The code is often the easy part. The weights and the licence attached to them are what decide what you may do.
Open does not mean one thing. FLUX.1 [schnell] is described on its model card as a 12 billion parameter model released under Apache 2.0, usable for personal, scientific and commercial purposes. Its sibling FLUX.1 [dev] sits behind a download gate where you must accept a non-commercial licence first. Stable Diffusion XL base 1.0 ships under the CreativeML Open RAIL++-M licence, whose Attachment A lists use restrictions, and paragraph 5 of that licence requires you to make everyone you let use the model comply with them.
Video weights are published too. The Wan2.2 repository states that its models are licensed under Apache 2.0, and its README adds, in its own words, "You are fully accountable for your use of the models". That sentence is the self-hosting trade in miniature.
The hardware line item
Image models are the lighter end; video is where memory becomes the deciding cost. The Wan2.2 README says its single-GPU command for the larger text-to-video model needs a GPU with at least 80GB of VRAM, and that the smaller combined text-and-image-to-video model runs on at least 24GB, giving an RTX 4090 as the example. Other models state other figures, and each one's own page is the place to read them.
Whether you buy that card or rent it by the hour, the cost runs while the GPU is reserved, not only while it is producing something you keep. A hosted API turns that into a per-run price: nothing is owed while you are not generating.
Renting brings a second rulebook with it: the host's. Section 7 of RunPod's terms of service, last updated 24 March 2026, names graphic adult content, images and other adult products as unauthorized content, and posting such content can end in immediate termination and a lifetime ban. We found no separate wording for its serverless product in that document, so anyone planning a RunPod NSFW setup should read those terms before the model card. Other GPU hosts write their own rules, and they deserve the same reading.
The work nobody lists on the model card
Getting a first image out of open weights can be quick. Keeping a working service is ongoing: drivers and libraries that must agree with each other, large weight files to download and store, new releases that change the loading code, a queue once more than one request arrives at a time, storage for outputs, and something that restarts the process when it falls over at night.
None of that is hard on its own, and some teams enjoy it. It is simply work that the model card does not mention and that still has to be done, week after week, by whoever runs the box.
Moderation and legal exposure move to you
Running weights yourself removes every filter you did not build. That is often the point, and it also means that nothing stands between a prompt and an output unless you put it there. If other people use your deployment, you are the operator: the rules on minors and on real people without consent are yours to write and enforce, and a RAIL-style licence expects you to pass its restrictions on to your users. What that means legally depends on where you operate, and it is worth advice from someone qualified before you open a service to the public.
On a hosted service those checks already exist. On Vellria, sexualising minors is prohibited, and prompts an automatic check recognizes as doing so are rejected before a single credit leaves the balance; the terms prohibit real people without consent, and the provider hosting a model may stop a job under its own rules, with the credits refunded.
What the hosted side looks like from code
The hosted route is one HTTPS request: a model id, a prompt and the parameters that model accepts, sent with a Bearer key beginning vll_. The API accepts the job, returns its id, and you ask for the result until it is ready. There are no weights to download and no GPU to reserve, and a failed job returns its credits by itself. The NSFW image API and NSFW video API pages show the request shapes, and model pages such as Wan 2.7 and Wan 3.0 show the hosted side of a family whose earlier versions you may know from open weights.
The image models, their ids and their prices are on the NSFW image API page, the video models on the NSFW video API page, and every endpoint is in the API reference. To wire a first request into an application, calling the API from your code walks through it.
One thing this page deliberately does not say is whether any model in our catalog has open weights. Catalog entries that share a family name with a published release are different versions, and we make no claim either way about their weights.
Choosing, in one paragraph
Self-host when control is the requirement: you need a model the catalog does not offer, you want to fine-tune it, outputs must never leave your own machines, or you already have the GPU and the hours to look after it. Use a hosted API when output is the requirement: you want images and clips inside a product this week, your volume is uneven, and you would rather pay per run than keep a card busy. Many teams do both, and the choice can be made again whenever the numbers change.
Sources
Every outside fact above comes from one of these five documents. The first four are published by the models' own authors and were read on the date shown at the top; the RunPod terms were read on 12 September 2026. The addresses are plain text; open them rather than taking this summary on trust.
FLUX.1 [schnell] model card, for its licence, parameter count and permitted uses: huggingface.co/black-forest-labs/FLUX.1-schnell
FLUX.1 [dev] model card, for its download gate and non-commercial licence: huggingface.co/black-forest-labs/FLUX.1-dev
Stable Diffusion XL base 1.0 licence, CreativeML Open RAIL++-M, with the use restrictions in its Attachment A: huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/raw/main/LICENSE.md
Wan2.2 README, for its Apache 2.0 licence, the accountability sentence and the VRAM figures: github.com/Wan-Video/Wan2.2
RunPod terms of service, section 7, for its clause on adult content and the account ban: runpod.io/legal/terms-of-service




