🌐 ollama-web (oweb)
Universal live web search, deep HTML table scraper, desktop GUI proxy daemon, and MCP server for Ollama on Linux, macOS, and Windows.
ollama-web bridges the gap between local AI and the live internet. It works universally across any model you have downloaded locally (llama3.1, dolphin-llama3, gemma2, qwen2.5, mistral, etc.), requires zero API keys, converts sports scores and fixture lists into structured markdown tables, and provides a transparent proxy daemon so desktop GUI apps (like Chatbox, LibreChat, and Open WebUI) get real-time internet search out of the box.
✨ Features
- Universal Model Agnostic: Automatically queries your local Ollama daemon (
/api/tags). Never assumes specific models are installed; dynamically resolves and fuzzy-matches whatever you have on disk. - Interactive First-Run Setup: If you don't specify a model, an interactive numbered menu shows your local models and lets you select a default with one keystroke, remembered across sessions.
- Zero API Key Requirement: Combines DuckDuckGo and Google News RSS out of the box. Zero accounts, zero credit cards, zero rate-limit blocks.
- Deep HTML Table & JavaScript Scraper: Automatically converts HTML tables into clean Markdown tables, and falls back to Jina Reader (
r.jina.ai) for JavaScript-rendered scoreboards. - Explicit URL Deep Reader: Pass any URL in your prompt to scrape full page text (up to 7,500 chars) directly into your model context.
- Real-Time Terminal Streaming (Never Stare at a Blank Screen): Live search queries and page-reading progress appear immediately so you always know what the tool is doing. Model tokens stream live token-by-token directly to your terminal—fully visible, readable, and copy-pasteable.
- Zero-Flag Spoken Audio: Answers are automatically spoken aloud as soon as generation completes when the lightweight companion
ollama-speakis installed. No complex pipes or extra flags needed! If you prefer silence, simply pass-qor--mute. - Unix Composable Voice: Seamlessly pairs with companion
ollama-speakfor multilingual spoken readout via pipes (| ollama-speak) or automatic background narration. Pipes never swallow text! - Syntax Guardrails: Proactively detects common CLI slip-ups like unclosed quotes (
") or accidental-m webflags without crashing. - Transparent Desktop GUI Proxy (
--proxy): Runs a lightweight local proxy on127.0.0.1:11435. Point any Ollama GUI client (Ollama Desktop, Chatbox, LibreChat, Open WebUI) to port 11435 for instant live web search. - Native MCP Server (
--mcp): Plugs directly into Claude Desktop, Cursor, and Antigravity as a Model Context Protocol tool provider.
🚀 Quickstart and Installation
Option 1 (Recommended) — One-Line Turnkey Installer
Works cleanly on fresh Linux, macOS, and WSL systems without requiring manual virtual environments or tripping PEP 668 system python locks.
Linux and macOS:
curl -fsSL https://raw.githubusercontent.com/AjarnSpencer/ollama-web/main/install.sh | bash
Windows (PowerShell):
irm https://raw.githubusercontent.com/AjarnSpencer/ollama-web/main/install.ps1 | iex
What the turnkey installer does:
- Sets up an isolated virtual environment in
~/.local/share/ollama-web/venv(zero system conflicts). - Symlinks
ollama-webandoweblaunchers into~/.local/bin/. - Configures user
PATHif not already set.
Option 2 — Install from GitHub with pipx or pip
If you prefer managing Python CLI tools via pipx (recommended by Python Packaging Authority for standalone tools) or an active virtual environment:
Using pipx (Recommended for Python users):
pipx install git+https://github.com/AjarnSpencer/ollama-web.git
Using pip in a virtual environment:
pip install git+https://github.com/AjarnSpencer/ollama-web.git
Option 3 — Standalone Single-File Binaries (Zero Python Required)
Download the standalone executable for your operating system from the Latest Releases:
- Windows:
ollama-web-windows-x64.exe - macOS:
ollama-web-macos-universal - Linux:
ollama-web-linux-x86_64/ollama-web-linux-arm64
📦 Publishing to PyPI (For Maintainers)
To unlock global installation via pip install ollama-web worldwide:
- Build distributions:
python3 -m build(generates wheels and tarballs indist/). - Upload to PyPI:
twine upload dist/*with your PyPI token. Once published, users can install directly viapip install --upgrade ollama-web.
📖 Complete Command Line Reference and Flags
ollama-web accepts flexible argument ordering. You can pass flags anywhere or use positional tokens.
Flags Table
| Flag | Short | Default | Description |
|---|---|---|---|
--model MODEL |
-m |
config.default_model |
Specify target Ollama model (fuzzy-matched against local models) |
--install-hook |
Seamlessly add live search and voice to native ollama run in your terminal |
||
--remove-hook |
Remove terminal shell hook from .bashrc / .zshrc |
||
--mute |
-q, --quiet |
False |
Mute spoken audio output (silent text-only terminal mode) |
--speak |
-s |
True (auto) |
Force spoken voice output (voice is already ON by default if companion is installed) |
--proxy |
False |
Launch transparent desktop GUI proxy daemon | |
--port PORT |
11435 |
Custom TCP port for the proxy daemon | |
--mcp |
False |
Run as standard Model Context Protocol (stdio MCP) server | |
--list-models |
-l |
Print table of all locally installed Ollama models and exit | |
--no-search |
False |
Query model directly without live web search | |
--think |
False |
Enable reasoning thinking stream (DeepSeek-R1, QwQ, etc.) | |
-h, --help |
Show full help manual and flag descriptions |
💡 Practical Tutorials and Workflows
Tutorial 1 — Quick Real-Time Web Search (Text + Automatic Voice)
Run a live web search using your configured default model:
ollama-web "What are the latest breakthroughs in fusion energy this week?"
ollama-web will:
- Search live web sources and Google News RSS.
- Scrape top resulting pages with live status updates on stderr so you know what is happening.
- Stream tokens directly to your terminal in real time (fully readable and copy-pasteable).
- Automatically speak the summary aloud when finished if companion
ollama-speakis installed.
Tutorial 2 — Silent Terminal Mode (-q / --mute)
If you want to read in silence without audio playback:
ollama-web -q "Latest developments in quantum computing"
Or use --mute anytime.
Tutorial 3 — Native Terminal Integration (ollama-web --install-hook)
If you want your standard ollama terminal command to automatically gain live web search and voice without changing your habits:
ollama-web --install-hook
source ~/.bashrc # or source ~/.zshrc
Now, whenever you use ollama in the terminal:
- One-shot prompt with live search + voice:
ollama run llama3.1 "What are today's top tech headlines?"
- Direct web search shortcut:
ollama web "Champions League fixtures this week"
- Standard Ollama commands:
ollama list,ollama pull, and interactive sessions continue to pass through directly to the nativeollamabinary without modification.
To remove the hook at any time:
ollama-web --remove-hook
Tutorial 4 — Targeting a Specific Local Model
You can specify the model either with -m or by typing the model name directly as the first argument:
# Using the -m flag:
ollama-web -m dolphin-llama3:70b "Latest UEFA Champions League results and standings"
# Or using natural positional syntax:
ollama-web qwen2.5:32b "Summarize today's top artificial intelligence headlines"
Tutorial 5 — Extracting HTML Tables into Markdown
Ask for tables directly—ollama-web automatically converts complex HTML tables from web pages into clean Markdown tables:
ollama-web -m llama3.1 "Latest 5 English Premier League results and table standings"
Tutorial 6 — Deep Scraping Explicit URLs
If you want your local LLM to read and analyze an exact web article or blog post, simply include the URL in your prompt:
ollama-web "https://arstechnica.com/science/ Summarize the lead space exploration article"
ollama-web will detect the URL, fetch its full clean text (up to 7,500 characters), and feed it directly into the prompt context alongside any web search results.
Tutorial 7 — Reasoning Models with Thinking Mode (--think)
For reasoning models (like deepseek-r1, qwq, or thinking-enabled checkpoints), pass --think to stream internal reasoning tokens before the final answer:
ollama-web -m deepseek-r1:14b --think "Analyze the current economic trends from today's market news"
Tutorial 8 — Pure Local Inference Without Web Search (--no-search)
Need to ask your model a general programming or logic question without scraping the web? Pass --no-search:
ollama-web --no-search -m llama3.1 "Write a Python script to sort a dictionary by values"
Tutorial 9 — Interactive REPL Session
Running ollama-web without arguments launches an interactive shell with conversation memory:
ollama-web
Inside the interactive prompt:
/model <name>— Switch the active local model on the fly/models— List all local Ollama models and their parameters/muteor/speak— Toggle companion voice audio on or off/clear— Reset conversational memory/exit— Quit the session
Tutorial 10 — Spoken Voice with Companion ollama-speak
ollama-web pairs natively with ollama-speak:
Method A — Zero-Flag Automatic Voice:
Just run ollama-web "...". The terminal prints text live while you listen to the spoken answer.
Method B — Unix Pipe (Zero-Swallow Output):
ollama-web "Who won yesterday's basketball matches?" | ollama-speak
ollama-speak mirrors the text directly to stdout so pipes never swallow your screen output.
Tutorial 11 — Transparent Desktop GUI Proxy (--proxy)
Enable live web search inside your favorite Ollama desktop apps (Chatbox, LibreChat, Open WebUI, Jan.ai):
- Start the proxy in a background terminal:
ollama-web --proxy --port 11435
- Point your desktop app's Ollama Base URL to port 11435:
- Change
http://127.0.0.1:11434tohttp://127.0.0.1:11435
- Change
- Submit any question from your GUI: The proxy automatically searches the web, deep-scrapes tables, injects context, and streams tokens back into your graphical desktop app!
Tutorial 12 — Model Context Protocol (MCP) in Claude Desktop
To expose web search tools directly to Claude Desktop, Cursor, or Antigravity, add this to your claude_desktop_config.json:
{
"mcpServers": {
"ollama-web": {
"command": "ollama-web",
"args": ["--mcp"]
}
}
}
⚙️ Persistent Configuration
Your defaults are saved in ~/.config/ollama-web/config.json (or %APPDATA%\ollama-web\config.json on Windows):
{
"default_model": "llama3.1:70b",
"search_mode": "auto",
"num_ctx": 16384,
"max_search_results": 5,
"voice_enabled": true
}
🤝 Contributing
Contributions, issues, and feature requests are welcome! Feel free to check the Issues page.
📄 License
This project is licensed under the MIT License.
Metadata
Release files for ollama-web 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| ollama_web-1.0.0.tar.gz | 26.4 kB | Without provenance | Details for ollama_web-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ollama_web-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for ollama_web-1.0.0-py3-none-any.whl |
Total release size: 55.2 kB
Release files / ollama_web-1.0.0.tar.gz
| Download URL | ollama_web-1.0.0.tar.gz |
|---|---|
| Size | 26.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
793f5be4f83b8af6dc4e3801bc0b664e4ede0ea2c0e3d23580b9331642b9fc3c
|
|
BLAKE2b-256 checksum How to use checksums |
a5a5916b1d8cac2b9896f135a7a4c20ca16a2652a38f2914b1a723f57c254027
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / ollama_web-1.0.0-py3-none-any.whl
| Download URL | ollama_web-1.0.0-py3-none-any.whl |
|---|---|
| Size | 28.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9fed3590e229ec6360f5c65db63157a69bbb12a5b853f5209b6906092f319504
|
|
BLAKE2b-256 checksum How to use checksums |
d11ae685937570ce4985bc305744abc772ae053776f3b60e9653c39d7e9fff0c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for ollama-web 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.