by uclanlp
Official Code for OpenVLHarness: Real-World Visual Agentic Tool‑Use with Multimodal Memory
# Add to your Claude Code skills
git clone https://github.com/uclanlp/OpenVLHarnessGuides for using ai agents skills like OpenVLHarness.
See how OpenVLHarness compares with popular alternatives.
OpenVLHarness is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by uclanlp. Official Code for OpenVLHarness: Real-World Visual Agentic Tool‑Use with Multimodal Memory. It has 367 GitHub stars.
OpenVLHarness's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/uclanlp/OpenVLHarness" and add it to your Claude Code skills directory (see the Installation section above).
OpenVLHarness is primarily written in Python. It is open-source under uclanlp on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh OpenVLHarness against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
The model chooses tools, inspects their evidence, and continues until it can answer. Three components let it combine evidence across steps:
For example, an agent can locate objects, estimate depth, and compute their spatial relationship; or crop an unfamiliar object, search for visual matches, and verify the answer on a webpage.
| Capability | What it provides | Default backend |
|---|---|---|
| Visual Grounding | Locate objects by text; return boxes, masks, and an annotated image | SAM 3 |
| OCR | Read text in an image | PaddleOCR-VL |
| Depth Estimation | Estimate per-pixel depth; retain the numerical array and visualization | Depth Anything 3 |
| Camera Trajectory | Estimate camera poses across ordered images | Depth Anything 3 |
| Zoom-in | Crop a region for closer inspection | Built-in image processing |
| Text Search | Retrieve and summarize web, image, news, and other search results | Serper + Qwen |
| Image Search | Find visual matches with reverse image search | Serper Lens + Qwen |
| Webpage Visit | Extract evidence relevant to a goal from webpages | Serper scrape + Qwen |
| Python Coding Agent | Generate and execute computations over stored tool results | Orchestrator backbone + local Python |
Every preset uses Qwen3-VL-8B-Instruct for multimodal search summarization and webpage extraction, independently of the main model. The coding agent uses the same backbone as the main model.
Average score over the paper's 22 benchmarks (counting and grounding, multimodal search, general VQA and hallucination, and spatial understanding):
| Backbone | Base | + OpenVLHarness | Gain |
|---|---|---|---|
| Qwen3-VL-8B-Instruct | 34.24 | 45.41 | +11.17 |
| Qwen3-VL-32B-Instruct | 38.30 | 50.92 | +12.62 |
| Kimi K3 (max effort) | 56.43 | 66.09 | +9.66 |
| GPT-5 (medium effort) | 44.37 | 55.65 | +11.28 |
| GPT-6 Luna (medium effort) | 45.76 | 56.52 | +10.76 |
| GPT-6 Sol (medium effort) | 52.67 | 64.31 | +11.64 |
| GPT-6 Astra (medium effort) | 60.27 | 70.17 | +9.90 |
Qwen3-VL results are the mean of three runs. Per-benchmark results, comparisons with other harnesses, and recorded trajectories are on the project page.
Use Python 3.10 or newer. From a source checkout:
git clone https://github.com/uclanlp/OpenVLHarness.git
cd OpenVLHarness
python -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[qwen,server]'
This installs the agent, Qwen tokenizer support, and the tool router. The model
servers have separate environments and dependencies. For a client connecting to
an existing router, pip install -e . is sufficient; add the qwen extra when
using Qwen for local context counting or raw trace export. Add the eval extra to
run benchmarks (see Evaluation).
The release includes agent presets for seven of the paper's eight backbones:
| Main model | Configuration | API |
|---|---|---|
| Qwen3-VL-8B-Instruct | qwen3_8b_paper.yaml | Chat Completions |
| Qwen3-VL-32B-Instruct | qwen3_32b_paper.yaml | Chat Completions |
| GPT-5 | gpt5_paper.yaml | Responses |
| GPT-6 Luna | gpt6_luna_paper.yaml | Responses |
| GPT-6 Sol | gpt6_sol_paper.yaml | Responses |
| GPT-6 Astra | gpt6_astra_paper.yaml | Responses |
| Kimi K3 | kimi_k3_paper.yaml | Chat Completions |
The paper's Qwen2.5-VL-7B-Instruct results, compared with training-based harnesses in its appendix, used a separate configuration that this release does not include.
The registry also covers every Qwen3-VL Instruct size (2B to 235B-A22B, with FP8 builds) and OpenAI's GPT-5 to GPT-6.1 models; to use one, copy its family's preset and change one line (other registered models).
To run all nine capabilities, prepare these services before starting the agent:
AUXILIARY_MODEL_BASE_URL at it. The guide
includes the tested model revision, serving versions, and GPU configuration.SERPER_API_KEY or SERPER_API_KEY_FILE. Reverse image search
additionally needs a URL Serper can fetch for the query image: either the
built-in image host behind a tunnel (no cloud account) or an
Amazon S3 or
Google Cloud Storage bucket, where the
image is uploaded and handed to Serper as a signed URL. Follow the
search and storage setup.For the local Qwen setup, set these variables in both the router and agent terminals. Adjust the addresses to match your deployment:
export MODEL_BASE_URL=http://127.0.0.1:8222/v1
export MODEL_API_KEY=empty
export AUXILIARY_MODEL_BASE_URL=http://127.0.0.1:8222/v1
export AUXILIARY_MODEL_API_