modlens
liustack
Vision bridge for text-only models: paste an image, get structured JSON evidence (OCR, layout, semantics).
ysr666/dsh-vision-router
Free vision for text-only agents: built-in keyless vision chain plus pixel tools (Q&A, grounding, crop, pixel diff, colors, OCR, SVG trace, cutout, screenshots); paste an image to use it.
Install
via npm
Resolves a published tarball rather than cloning the repository, and installs without any extra setup. Swap `web` for your profile name if you run another one.
via GitHub · npm package
Installing from GitHub runs the project's build script, which pnpm blocks until you allowlist it — run the command once and pnpm prints the exact key to add under `allowBuilds` in ~/.dsh/profiles/web/pnpm-workspace.yaml.
Due diligence

dsh-vision-router is a DeepSeek Harness plugin that routes image turns to vision models while leaving DeepSeek responsible for reasoning. It keeps the original image available to the vision side instead of first converting it into a text description. The plugin uses agent/request waterfalls and the bundled dsh.bundle.patch to add a composition row, an admission wrapper and attachment limits. dsh plugin add applies that wiring automatically; taking over the official DeepSeek route is an optional stealth-mode setting, disabled by default.
Vision requests use user-provided vision models first, followed by a built-in keyless OVHcloud fallback chain. The README describes pixel tools for Q&A, grounding, cropping, pixel comparison, colour extraction, OCR, SVG tracing, cutout and screenshots. Named tools include vision_ground, vision_crop, vision_describe and vision_pixel_diff. Image answers are cached by image content, while uploaded images remain visible in the conversation UI and the routing rewrite stays inside the model call.
This is intended for text-only agents that need iterative image inspection without switching their main model. It is a poor fit where the existing harness already provides the required vision route, or where external anonymous endpoints are unsuitable: the fallback is rate-limited to 2 requests per minute per IP per model. The plugin also reaches the terminal surface because its local pipeline uses sharp, potrace, tesseract and system Chrome for image processing and HTML screenshots.
Image handling is performed as an ordinary tool-calling turn. A multi-step sequence can call vision_ground, then vision_crop, vision_describe or vision_pixel_diff, apply a change, and inspect a new screenshot. The uploaded image remains an image in the session UI; the internal rewrite that directs the model to vision tools is not added to the session log. Text turns continue using the normal model, cost and context path.
The README describes a pixel-tool set covering visual Q&A, grounding, cropping, pixel diffs, colour sampling, OCR, SVG tracing, cutout and screenshots. It explicitly shows these tool names:
| Tool | Documented use |
|---|---|
vision_ground |
Locate an element in an image |
vision_crop |
Crop an image region |
vision_describe |
Produce an image description |
vision_pixel_diff |
Compare image pixels |
User-provided vision models are tried first. If they are unavailable, the built-in OVHcloud anonymous fallback chain provides five models without an account or key. The README states a limit of 2 requests/minute per IP per model, with roughly 10 RPM in theory across independent buckets. Answers are cached by image content.
The package requires Node.js >=22 and does not require Python. Its processing pipeline uses sharp, potrace, tesseract and system Chrome; system Chrome is used for HTML screenshots. The README identifies dsh.bundle.patch as the composition patch applied by the plugin. A bundled DSH Web profile is also referenced by cordis.patch.yml.
Taking over the official DeepSeek route is available through an optional stealth-mode setting and is off by default. The README does not specify a configuration key or command-line flag for that setting.
Written from the project's own documentation and kept in sync with it. Where the two disagree, the source is authoritative — read the README on GitHub
Same category
liustack
Vision bridge for text-only models: paste an image, get structured JSON evidence (OCR, layout, semantics).
Anionex
Vision tasks for text-only models: intent-aware image Q&A, long-screenshot OCR, UI reproduction, grounding, and pixel diff.
linenxi-ctrl
External vision plugin for DeepSeek Harness: whale-button config panel, image recognition with auto-reply, and agent screenshot/recognize tools.
Flyvhidbwo
DeepSeek brain + automatic image transcription: attach images in the GUI and each one is transcribed to text via any OpenAI-compatible VLM before reaching the text-only DeepSeek — a keyed fast path (default qwen3.7-flash; DashScope/Zhipu/OpenRouter or any OpenAI-compatible endpoint) with your own key, or local Ollama auto-detected with zero config.
jyh20030112
Gives text-only models vision: forwards user images to an OpenAI-compatible vision model and shows the descriptions in a Web UI right panel.
ConsoleSun
MCP bridge to gemini.google.com: vision analysis of images and videos, Imagen image and Veo video generation, and conversation management using the logged-in browser session with no API key.