One frontend.
Every image model.

Paintball is a fast, local app for generating with every modern image model: OpenAI, Google, Replicate, or any custom checkpoint you can name. Compare side-by-side, iterate in an editor, search your gallery semantically. Your keys never leave your browser.

Plays nicely with
OpenAIGoogle GeminiReplicateFLUXSDXLIdeogramImagen 3+ any Replicate model
The app

A gallery, an editor, and a prompt bar walk into your browser.

Generate in parallel from any model, drop reference images, and iterate from a single prompt. Everything is one keystroke away.

Paintball gallery view: prompt sidebar on the left with model selector, aspect ratio, and resolution controls; masonry gallery of generated images on the right tagged by model.
Features

Built for people who actually generate.

Twelve practical things that compound when you use them together.

Concurrent generations

Fire one prompt at every model you care about, all at once. Watch them race in.

Editor view

Iterate on a single image with side-by-side comparison and a full edit history you can rewind.

Semantic search

Search your gallery by meaning, not filenames. Embeddings run locally in the background — no upload.

Prompt rewriting

Plug in a text model and one click turns a sketch of an idea into something a diffusion model can actually read.

Upscalers, built in

Promote a thumbnail-grade output to a 4K asset without leaving the gallery. Same models you'd reach for anyway.

Any Replicate model

Paste a Replicate URL. A text model adapts to whatever input and output schema the model exposes. Done.

Reference images

Drop any image as a reference for editing or style transfer. Drag from the gallery, paste from clipboard.

Custom ratios & res

1:1, 16:9, 9:16, 4:3, 21:9 — or punch in arbitrary dimensions and resolution tiers up to 4K.

Masonry gallery

Grid, list, or masonry — whichever helps you spot the keeper faster.

Multi-select actions

Bulk download, delete, or attach as references. Built for sessions, not single shots.

Local-first, keys-local

Your API keys live in your browser. The only thing on a server is a thin Cloudflare Worker that proxies requests.

Prompt variations

Spawn N variants of a prompt with a text model, run them as a batch, keep what works.

Models

If it has an API, it works.

First-class support for the obvious ones. Trivial to add anything else — just paste a Replicate model URL.

gpt-image-1OpenAI
gemini-3.1-flashGoogle
imagen-3Google
flux-1.1-proReplicate
flux-schnellReplicate
sdxl-lightningReplicate
ideogram-v2Replicate
recraft-v3Replicate
real-esrganUpscale
clarity-upscalerUpscale
nano-bananaEdit
+ paste any URLCustom
How it works

From zero to generating in about ninety seconds.

No accounts. No subscriptions. No image upload to a stranger's server.

01 / Open

Open Paintball

It's a web app. Bookmark it, open it, you're in. No installer, no signup gate.

02 / Paste keys

Paste your API keys

OpenAI, Google, Replicate. They're stored locally in your browser. Pull them out anytime.

# settings → keys
REPLICATE_KEY="r8_••••••••••"
OPENAI_KEY="sk-••••••••••"
03 / Generate

Generate, edit, repeat

Type a prompt, pick the models you want to race, hit ⌘↩. Cherry-pick a winner, open it in the editor, keep going.

Stop juggling tabs. Generate everywhere from one place.

Free, open source, runs in your browser. You bring the keys.