Web browsing for Open WebUI powered by Plasmate - the browser engine for AI agents.
10-100x token compression compared to raw HTML, making web content accessible to LLMs without burning through your context window.
- Fetch Webpages - Get readable, structured content from any URL
- Web Search - Search the web and fetch top results automatically
- Extract Links - Get all links from a page for navigation
- Automatic URL Detection - Filter function auto-fetches URLs shared in chat
- Open WebUI (v0.3.0+)
- Plasmate binary installed and accessible
Download from GitHub releases or build from source:
git clone https://github.com/nicholasarner/plasmate.git
cd plasmate
cargo build --release
sudo cp target/release/plasmate /usr/local/bin/- Download
tool.jsonandfunction.jsonfrom this repository - In Open WebUI, go to Workspace > Tools > Import
- Upload
tool.jsonto add the web browsing tools - Go to Workspace > Functions > Import
- Upload
function.jsonto add the URL filter
- In Open WebUI, go to Workspace > Tools > Create New
- Copy the contents of
src/openwebui_plasmate/tool.pyinto the editor - Save as "Plasmate Web Browsing"
- Repeat for
src/openwebui_plasmate/function.pyunder Functions
pip install openwebui-plasmateOr from source:
git clone https://github.com/nicholasarner/openwebui-plasmate.git
cd openwebui-plasmate
pip install -e .| Setting | Default | Description |
|---|---|---|
plasmate_path |
plasmate |
Path to Plasmate binary |
output_format |
text |
Output format: text or json |
timeout_seconds |
30 |
Fetch timeout |
max_content_length |
50000 |
Max content characters |
search_engine |
duckduckgo |
Search engine: duckduckgo, google, bing |
search_results_count |
5 |
Number of search results to fetch |
| Setting | Default | Description |
|---|---|---|
enabled |
true |
Enable automatic URL fetching |
max_urls_per_message |
3 |
Max URLs to fetch per message |
max_content_per_url |
10000 |
Max content per URL |
exclude_domains |
localhost,... |
Domains to skip |
inject_position |
after |
Where to inject content |
The LLM can call these tools directly when enabled:
Example: Fetch a webpage
User: What does the Plasmate homepage say?
Assistant: [calls fetch_webpage("https://plasmate.app")]
The Plasmate homepage describes it as a browser engine for AI agents...
Example: Web search
User: Search for the latest news about Open WebUI
Assistant: [calls search_web("Open WebUI latest news")]
Here are the latest developments...
Example: Extract links
User: What links are on the Hacker News front page?
Assistant: [calls extract_links("https://news.ycombinator.com")]
Here are the current links on HN...
When the URL filter is enabled, sharing URLs automatically fetches content:
User: Can you summarize this article? https://example.com/article
[Filter automatically fetches the page content]
Assistant: Based on the article content, here is a summary...
Screenshots coming soon
- User sends message with URL or requests web content
- Plasmate fetches the webpage using HTTP/1.1 or HTTP/2
- HTML is compiled to Semantic Object Model (SOM)
- SOM is converted to readable text or structured JSON
- Content is returned to Open WebUI with 10-100x fewer tokens
Plasmate achieves dramatic token compression by:
- Removing non-semantic HTML (scripts, styles, metadata)
- Extracting meaningful structure (headings, paragraphs, lists)
- Preserving links and interactive elements
- Converting to clean, readable text
| Page Type | Raw HTML | Plasmate | Compression |
|---|---|---|---|
| News Article | 150K tokens | 2K tokens | 75x |
| Documentation | 80K tokens | 4K tokens | 20x |
| E-commerce | 200K tokens | 5K tokens | 40x |
If running Open WebUI in Docker, mount the Plasmate binary:
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
volumes:
- /usr/local/bin/plasmate:/usr/local/bin/plasmate:roOr install Plasmate in a custom image:
FROM ghcr.io/open-webui/open-webui:main
COPY plasmate /usr/local/bin/plasmate
RUN chmod +x /usr/local/bin/plasmateEnsure Plasmate is in your PATH or update the plasmate_path valve:
- Go to Workspace > Tools > Plasmate Web Browsing
- Click the gear icon to open settings
- Set
plasmate_pathto the full path (e.g.,/usr/local/bin/plasmate)
Increase the timeout_seconds valve for slow pages or networks.
Increase max_content_length to fetch more content per page.
Contributions welcome! Please open an issue or PR on GitHub.
MIT License - see LICENSE file for details.
- Plasmate - The browser engine for AI agents
- Open WebUI - Self-hosted LLM interface
- GitHub Repository