privacy-first · open source · bring your own provider

Type a description.
Get an image.

Limn is a small text-to-image tool that stays out of your way and out of your data. No account, no telemetry, no cloud lock-in — prompts go only to the image provider you choose, and every image lands on your own machine.

Free & open source (MIT) · ~2 MB installer · or pip install limn

The Limn app: a prompt box and a gallery of three generated images
A generated watercolour fox
a watercolour fox curled up asleep · seed 11

Get the app

A native desktop app for macOS, Windows and Linux. The installer is a couple of megabytes; on first launch it sets up a private Python runtime and you pick your image provider in Settings.

Builds are unsigned for now: on macOS, right-click the app and choose Open the first time; on Windows, pick More info → Run anyway. All releases are on GitHub.

Prefer the terminal?

The same engine is a Python package — a one-line CLI, plus a local web UI with a session gallery.

On PyPI · works with self-hosted SwarmUI, any OpenAI-compatible endpoint, OpenAI, or Google Imagen.

$ pip install limn
$ limn "a red bicycle against a brick wall" -o bike.png
# or the local web UI:
$ pip install "limn[serve]" && limn serve

Private by design

Most image tools are someone else's app around someone else's server. Limn is the simplest possible "text → image" surface that you own.

🔒

No account. No telemetry.

Nothing to sign up for, nothing phones home. The only network traffic is the generation request to the provider you configured.

🔌

Bring your own provider

Point it at your self-hosted SwarmUI, any OpenAI-compatible endpoint, or a cloud key (OpenAI, Google Imagen). Swap with one setting.

💾

Yours, locally

Images save straight to your disk. Minimal knobs — prompt, size, count, seed — because simple beats powerful.

Kick the tyres first

A shared, rate-limited demo — a few images per hour, nothing stored, images vanish after a while. No install, no sign-up.

Open the demo →