An Electron-based web browser where every page is generated by an LLM. Instead of fetching real web content, all HTTP/HTTPS requests are intercepted and sent to a configured language model, which responds as if it were an HTTP server. The result is rendered in the browser exactly like a real web page.
Zero real HTTP requests leave the app (except to the LLM API endpoint itself).
- Tabbed browsing — multiple tabs with independent navigation history
- LLM-generated pages — every URL produces unique, AI-hallucinated content
- Response caching — SQLite-backed cache so revisiting pages is instant
- Cookie support — RFC 6265-compliant simulated cookie jar across tabs
- Browsing history — searchable, paginated history at
llm://history - Redirect support — follows 3xx redirects (up to 10 hops)
- Reprompt — force a fresh LLM generation for any URL
- Settings UI — configure provider, model, system prompt, and more at
llm://settings - 542 error page — friendly error display when the LLM fails
- Node.js (v18+)
- npm
npm install
npm run build
npm run devnpm run distBuilds for Windows (NSIS), macOS (DMG), and Linux (AppImage) via Electron Builder.
On first launch, open llm://settings in the address bar to configure your LLM provider.
| Provider | Notes |
|---|---|
| Anthropic | Uses native Messages API |
| OpenAI | OpenAI-compatible endpoint |
| Google Gemini | OpenAI-compatible endpoint |
| Ollama | Local, OpenAI-compatible |
| Custom | Any OpenAI-compatible base URL |
Enter your API key, select a model, and hit "Test Connection" to verify.
| URL | Description |
|---|---|
llm://newtab |
New tab home page |
llm://settings |
Browser settings |
llm://history |
Browsing history |
Enable verbose logging:
HALLUCINET_EXPLORER_DEBUG=1 npm run dev
# or
npm run dev -- --debugMain Process (Node.js)
├── LLM Client — provider abstraction + API calls
├── Request Interceptor — intercepts ALL outbound requests
├── HTTP Response Parser — lenient parser for LLM output
├── Cookie Jar — RFC 6265 cookie store (SQLite)
├── Cache Manager — disk-backed response cache (SQLite)
├── History Manager — browsing history (SQLite)
└── Settings Manager — persistent settings (SQLite)
Renderer Process (Chromium)
├── Browser Chrome UI — address bar, tabs, navigation buttons
└── WebContentsView — one per tab, renders LLM-generated HTML