Open Source MIT Licensed Self-Hosted

Your smartest model is blind. Fix that.

VisionBridge is a tiny open-source proxy that gives text-only LLMs vision. Your reasoning model thinks. A separate vision model sees. One OpenAI-compatible endpoint ties them together — no training, no fine-tuning, no new weights.

terminal
$ docker run -p 8080:8080 \
    -e REASONING_MODEL=deepseek-r1 \
    -e VISION_MODEL=llava:13b \
    ghcr.io/thomasunise/visionbridge:latest

Point your chat UI at localhost:8080/v1. Done — your text model can see.

5 visual tools look, ocr, scan, crop, compare
1 endpoint OpenAI-compatible, drop-in
0 new weights No training, no fine-tuning

DeepSeek-V4, R1, Qwen3 — frontier reasoning, zero image support. Meanwhile LLaVA and Qwen-VL can see perfectly well but reason like models a tenth their size. Today you pick one.

VisionBridge means you don't have to. It sits between your chat UI and your models as a plain OpenAI-compatible proxy. Text-only requests pass straight through. The moment an image shows up, the bridge turns your reasoning model into an investigator and your vision model into its eyes.

The vision model does the seeing. The reasoning model does the thinking.

How it works.

One request in, one sourced answer out. The investigation happens in between.
01Send

You send an image

Any OpenAI-compatible request from OpenWebUI, LibreChat, or your own app. No client changes, no special format — the same call you'd make to any vision-capable API.

02Investigate

The reasoning model investigates

It can't see the image — so it asks for evidence: look at this, OCR that, zoom into this region, compare these two. The vision model answers each question. Errors get fed back so it self-corrects.

03Answer

You get one answer, fully sourced

Streamed token-by-token, with the complete investigation available at /v1/traces/{id} — every question, every observation, every crop box.

Built for real backends, not happy paths.

Everything a bridge between two imperfect models actually needs.
01 / Tools
Five visual tools
look ocr scan crop_and_look compare — targeted inspection, tiled full-document sweeps, and small crops auto-upscaled before the VLM sees them.
02 / Resilience
Works with weak models too
Native tool calling when your backend supports it; automatic fallback to a prompt-JSON protocol when it doesn't. Hallucinated image IDs and malformed JSON become corrections, not crashes.
03 / Speed
Fast where it counts
Scene descriptions primed in parallel, tool calls executed concurrently, repeated images served from a content-addressed cache.
04 / Traces
Explainable answers
The trace endpoint shows exactly why the model said what it said. "Why did it answer that?" takes ten seconds, not a debugging session.
05 / Security
Hardened by default
SSRF-guarded image fetching, size caps, decompression-bomb protection, optional API keys. Your models, your machines, your data — nothing leaves your network.
06 / Compatibility
Drop-in everywhere
One /v1/chat/completions endpoint. Ollama, LM Studio, vLLM, OpenRouter, or any OpenAI-compatible backend on either side. Serve multiple model pairs from one instance.
MIT licensedSelf-hostedNo telemetryPython, ~1,500 lines you can read in an afternoon

Three env vars between you and a seeing model.

Docker above, pip below. Either way you're running in minutes.
quickstart
$ pip install visionbridge
$ visionbridge doctor   # verifies both backends before you blame the bridge
$ visionbridge serve

Your reasoning model thinks. Your vision model sees. VisionBridge does the rest.

Stop choosing between thinking and seeing.

docker run it in the next five minutes. VisionBridge is open source under the MIT license — built for people who run their own models.

Get started