Local-first · Open source · MIT

Built secure by default

Every design decision in omni-vision-pro starts from one question ... where does this data go? Here is the honest answer, plus the safeguards and settings behind it.

Where your data goes

  • No key / AI off ... everything stays local via Tesseract
  • Gemini mode ... only a resized image goes to Google
  • OpenAI mode ... only a resized low-detail image goes to OpenAI
  • Code & ZIP context ... read locally, never sent to vision providers
  • API keys ... stored in the private Omni .env, never in client JSON/TOML

Built-in safeguards

  • ZIPs inspected in memory ... no filesystem extraction
  • Path traversal, duplicate, encryption, CRC, ratio & ZIP-bomb checks
  • No symlink traversal
  • Skips node_modules, .git, binaries & secret files automatically
  • Returned contents are marked untrusted ... models must not follow instructions inside files

Settings & environment

Private by location

Most users only need the provider menu. For fine-grained control, optional settings live in a private file that is never part of client JSON or TOML.

Environment variables & optional settings
OMNI_ALLOWED_ROOTSRestrict code/ZIP reading to these roots ... semicolon on Windows, colon on macOS/Linux
OMNI_INCLUDE_ABSOLUTE_PATHS=trueInclude absolute paths in output
GEMINI_MODELChoose the Gemini model, e.g. gemini-2.5-flash
GEMINI_FALLBACK_MODELGemini fallback model
OMNI_MAX_IMAGESMax images per request (default 10)
OMNI_CLOUD_TIMEOUT_MSCloud timeout (default 30000)
OMNI_OCR_TIMEOUT_MSOCR timeout (default 90000)
OMNI_VISION_PROVIDERauto · gemini · openai · ocr
Where settings are stored
Windows%APPDATA%\omni-vision-pro\.env
macOS / Linux${XDG_CONFIG_HOME:-~/.config}/omni-vision-pro/.env

The easiest setup is one line: GEMINI_API_KEY=your_key or OPENAI_API_KEY=your_key. Save the file and restart the AI client. With no OMNI_VISION_PROVIDER line, automatic mode is used ... a saved key enables AI vision and local OCR stays the final fallback.

Never pass API keys as command arguments. The CLI rejects key flags because shell history and process lists can expose them.

This website

Hardened delivery

The site itself is served with strict security headers on every response ... HTTPS everywhere, no inline scripts, no third-party trackers.

🔒

HTTPS everywhere

Served over TLS with HSTS preload headers on every route.

🛡️

Strict CSP

Scripts, styles, fonts and images are locked to approved origins.

🚫

No clickjacking

X-Frame-Options DENY plus frame-ancestors none.

👀

No tracking

Zero analytics, zero cookies, zero third-party scripts.

Private by default, by design

Install it locally ... it's open source, so you can verify every line.

See the features