npu-vision-fallback
π npu-vision-fallback
β οΈ Archived experiment β no longer actively developed
An Intel NPU screen-vision + MCP integration experiment. Backend routing and Windows-native OCR integration worked; the NPU-first product hypothesis did not find a stable user need. Code preserved for reference.
English | δΈζ
ποΈ Why This Is Archived
This project tested whether desktop AI agents would benefit from running low-level screen perception β "find the button", "read this region" β locally on an Intel NPU, exposed as an MCP server. That was a hypothesis, not a verified need; it never crystallized into stable demand, so development stopped.
Two things the experiment did prove:
Backend routing with graceful fallback β NPU β CPU β system OCR β cross-platform OCR, driven by a power policy, with heavy dependencies kept optional.
Windows-native OCR over MCP β WinRT OCR wired into the same tool surface as the OpenVINO NPU UI detector.
What I still use it for: batch OCR of long screenshots. Note that the implementation has no complete tiling guarantee for very long images β it may drop content on extreme captures. Treat the code as a reference, not a maintained dependency.
π§± Original Design
Three constraints that shaped the project:
Cheapest path first. OS-native OCR, then a local detector. A cloud multimodal model was the last resort β for reasoning, not for finding buttons.
Isolate compute. Inference on the NPU so the GPU stays free for the app the agent is watching. The service requests NPU or CPU only β never any GPU.
Local, period. Screenshots stay in memory and are never written to disk; OCR text is never logged; nothing leaves the machine.
Pipeline: mcp_server.py β core/orchestrator.py β
core/backend_selector.py β selected backend β screen-space remap. Full
detail: docs/ARCHITECTURE.md.
π Reference
MCP Tools
Tool | Purpose | Key Arguments |
| Server status | β |
| Available backends | β |
| Extract text from region |
|
| Find UI elements |
|
| Combined OCR + detection |
|
| Analyze an image file |
|
| Batch-analyze images in a directory |
|
analyze_screen fuses detection + OCR into spatially-sorted elements with
text annotations. analyze_image_file and analyze_image_directory reuse the
same pipeline on image files.
CLI
# Single image
uv run npu-vision-fallback-cli analyze-image path/to/image.png --mode all
# Directory batch
uv run npu-vision-fallback-cli analyze-dir path/to/dir --output-dir out/ --recursiveInstallation (reference only β not recommended for new deployments)
pip install "npu-vision-fallback[ocr-win,detect]"
python scripts/download_ui_model.py # one-time model export to OpenVINO IRFurther extras are listed in pyproject.toml.
Supported Backends
Backend | Type | Device | Platform | Status |
| System OCR | CPU/NPU | Windows | β Primary |
| UI Detection | NPU | Win/Linux + Intel NPU | β Primary |
| UI Detection | CPU | Win/Linux/macOS | β Fallback |
| OCR | CPU | All | β Cross-platform |
| OCR | CPU | All | β Last-resort |
| System OCR | ANE | macOS | π§ Never implemented |
Measured Performance
Intel Core Ultra 9 275HX, 2560Γ1600, on battery:
Task | Backend | Latency | Energy | Notes |
OCR | WinOCR | ~1100ms | 2.5J | Native Windows API |
OCR | RapidOCR | ~6300ms | 14.5J | Cross-platform ONNX CPU |
UI Detection | OpenVINO NPU | ~80ms | 0.3J | YOLOv8n on Intel AI Boost |
UI Detection | OpenVINO CPU | ~120ms | β | No-NPU fallback |
Full details: outputs/power_report.md
Examples
Example | Description |
OCR a screen region | |
Find and click UI elements | |
Vision fallback in remote desktop |
uv run python examples/basic_ocr.py --region 0 0 1280 800Docs
Architecture Β· Backends Β· FAQ
π License
MIT Β© npu-vision-fallback contributors
π Acknowledgments
Built with MCP (Anthropic), OpenVINO, Ultralytics YOLO, RapidOCR, Tesseract, and python-mss.
Development assisted by Claude Code (Anthropic).
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Byte-Naut/npu-vision-fallback'
If you have feedback or need assistance with the MCP directory API, please join our Discord server