October 20, 2026 · 7 min read

Run Vision Models Locally: Local LLMs That Read Images

A local vision model is a chat model that can look at a picture you give it and answer questions about it. In Locally Uncensored that works offline, on your own graphics card. There is one catch: the model file alone cannot see. This guide explains the second file it needs, how LU fetches both since version 3.0.6, which models to start with, and what happens when your card runs out of room.

Why a Vision Model Is Two Files

The LU Engine, the built-in chat engine, runs on llama.cpp and loads models in the GGUF format. A GGUF chat model carries no image tower. To take pictures it needs a second file next to it, which llama.cpp calls mmproj and LU calls the image part. When that file is there, the engine passes it along at start and the model can read images. When it is missing, the same model loads fine and answers text, but it is blind.

Many repositories list the image part as a separate file with a name like mmproj-F16.gguf, so a download of only the model looks complete. Before 3.0.6 it was easy to end up with only the first file.

Since 3.0.6: One Download, Two Checksums

LU now fetches the model and its image part as one download. That holds on the Models page, in onboarding and for a model you find through the hub search. You see one progress bar, and each of the two files is checked against its own checksum. The download only counts as finished when both files are.

The download dialogs have a box that is ticked by default: Include image input, followed by the size it adds, for example "Include image input (+0.9 GB)". Untick it if you only want text and would rather save the space. In onboarding the size line of a model shows the extra part the same way.

If you download through the hub search and the drive has no room for the extra file, the model downloads without it and LU tells you so. You can add the part later.

Add Image Input to a Model You Already Have

A model you downloaded before 3.0.6, or with the box unticked, can get its image part afterwards. Add image input fetches the missing file, with its size on the button. You find it in two places:

If the model is already loaded, LU loads it again with the image part as soon as no answer is being written.

Every image part in the catalog is listed with its exact size in bytes and its SHA-256, read from its repository.

Which Models to Start With

These are the vision models from the starter list in our README. The download sizes are the recommended builds. The image part column is the extra size the dialog shows for the LU Engine download.

ModelDownloadImage partNotes
Qwen 3.8 27B Uncensored18 GB+0.9 GBVision, tools and switchable thinking, 262K context. The IQ2_M build is 11 GB and fits a 12 GB card
Gemma 4 12B Heretic7.4 GB+0.2 GBVision, a different voice from the Qwen line. The IQ4_XS build is for 8 GB cards
Qwen3-VL 8B Abliterated5 GB+1.1 GBImage understanding on an 8 GB card
Qwen 3.6 35B MoE Abliterated24 GBin the Ollama tag35B total with 3B active, vision and agentic coding

One note on that table. The catalog entry named Qwen 3.6 35B MoE Abliterated is an Ollama download, so it has no separate image part (more on Ollama below). Its sibling Qwen 3.6 35B MoE Abliterated Heretic is a GGUF for the LU Engine, 21 GB with a 0.8 GB image part.

All four are abliterated builds, edited to drop refusals. If that term is new, the abliterated models guide explains it. For the Qwen line in particular, the Qwen overview collects every guide we have.

What You Do With It

Ask About a Picture

The paper clip next to the message box attaches up to five images. Attach a screenshot, a photo or a scan, then ask. A few prompts that work well as a first test:

If the selected model cannot read images at all, the chat says "This model can't read images. Switch to a vision model (Gemma 4, LLaVA, Qwen-VL) to use the attachment." The Models tab marks vision models with an image icon. For documents such as PDFs, use the Documents panel instead. The chat chapter of the handbook covers both.

Let It Look at the Screen

Computer control (Beta) lets a model use the mouse and keyboard in apps you approve. It is off until you switch it on. By default the model that looks at the screen is your chat model. If that model can see images, it gets screenshots. A local model sees images only while it is loaded with its image part.

On Windows a model without image input can still work from the list of buttons and fields the app exposes. On macOS and Linux there is no such list, so there the model needs image input to see the screen at all. On a Mac, computer control is in the app but not fully tested yet.

When the Graphics Memory Is Too Small

The image part needs memory on the card in addition to the model and its context. If the model alone fits and the part does not, LU still loads the model, without image input. The model menu and the Models page then say:

"Loaded without image input: the graphics memory has no room for the image part next to the model. A smaller context makes room."

So the fix is usually the context dropdown above the message box. On the LU Engine a change there reloads the model, and a smaller context window leaves more memory for the part. If you attach a picture while the model runs without its part, the chat says so instead of letting the model guess: "This model was loaded without its image part, so it cannot read the attachment. The model menu says why."

If the engine itself refuses the image part, LU starts the model again without it, and the note reads "Loaded without image input: the engine could not load this model's image part."

Image Parts You Placed by Hand

If you download GGUF files yourself, note the naming rule. Before 3.0.6 the engine found an image part only under the name LU's own downloads write: <model>.mmproj.gguf, next to the model. Since 3.0.6 (from discussion 67) it also uses a part under its original name, as long as it is clear which model it belongs to:

Where that is not clear, for example a file named mmproj-F16.gguf next to several models, no model gets it. Rename it to <model file name without .gguf>.mmproj.gguf and it pairs with that model. Image parts named like <model>.mmproj-Q8_0.gguf no longer show up as chat models in the picker. This part has run in automated tests only.

Ollama and LM Studio

LU can also use Ollama or LM Studio as the chat backend. With Ollama there is no second file to manage: an Ollama tag brings its projector as a layer of the tag, so a vision model pulled through Ollama can see without anything extra.

For LM Studio we can say less. When LU lists the models in LM Studio's folder, a projector file (mmproj-*.gguf) is not shown as a model of its own. Whether a given model sees images then depends on LM Studio, which runs the model in that setup.

Limits You Should Know


Locally Uncensored is AGPL-3.0 licensed and built by PurpleDoubleD. Corrections welcome on GitHub Discussions or in the Discord.

In the handbook

Locally Uncensored is free, open source and runs on your own machine

Download for Windows Download for Mac (Apple Silicon) Download for Linux

No GPU? LU Cloud runs in a browser, paid from credit packs that start at 15 EUR and need no subscription. See what it costs or open LU Cloud.