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:
- On the model's row under Models, Installed
- At the top of a chat, once you attach a picture to a model whose image part is missing. The line reads "This model can take images, but its image part is not installed." and the button sits next to it
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.
| Model | Download | Image part | Notes |
|---|---|---|---|
| Qwen 3.8 27B Uncensored | 18 GB | +0.9 GB | Vision, tools and switchable thinking, 262K context. The IQ2_M build is 11 GB and fits a 12 GB card |
| Gemma 4 12B Heretic | 7.4 GB | +0.2 GB | Vision, a different voice from the Qwen line. The IQ4_XS build is for 8 GB cards |
| Qwen3-VL 8B Abliterated | 5 GB | +1.1 GB | Image understanding on an 8 GB card |
| Qwen 3.6 35B MoE Abliterated | 24 GB | in the Ollama tag | 35B 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:
- "What does this error dialog say, and what should I click?"
- "Read the text in this photo of a receipt and list the items."
- "Describe this chart. Which line goes up the most?"
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:
- Its name carries the model's name, or
- It is the only image part in a folder that holds this one model
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
- The Mac build is in beta, for Apple Silicon on macOS 14 or newer, and Intel Macs are not supported
- A model whose repository ships no image part, and for which no other part was proven to fit, stays text only in the catalog
Locally Uncensored is AGPL-3.0 licensed and built by PurpleDoubleD. Corrections welcome on GitHub Discussions or in the Discord.
In the handbook
- Chat, attaching images, the model picker and the context window
- Agent, the tools and permissions behind computer control
- Settings and troubleshooting, what the engine sentences mean and where the log file is