Prism is a local Electron + React browser with a dark, Chromium-powered shell and real webviews for website access.
- Tab strip with live favicons and per-tab loading spinners, toolbar, omnibox, bookmark bar, Prism-branded new-tab search surface, styled error + warning pages.
- Multi-tab state with back, forward, reload/stop, home, close, new tab, and keyboard shortcuts:
Cmd/Ctrl+L(omnibox),Cmd/Ctrl+T(new tab),Cmd/Ctrl+R(reload),Cmd/Ctrl+K(command palette),Cmd/Ctrl+F+Cmd/Ctrl+G(find in page),Esc(stop loading). - A Cmd/Ctrl+K command palette: jump to open tabs, bookmarks, and recent history, run browser actions, or route free text straight to the local AI.
- Real website loading through Electron/Chromium
<webview>tabs. - Local Ollama agent overlay with full-session browser context, persisted local chat history, structured browser tools, private local memory, approval-gated risky actions, and contextual entry points: one-click Summarize this page, explain selection, compare tabs, and quick-action chips — all running on-device.
- Security pipeline for URL normalization, HTTPS upgrading, suspicious host/path detection, executable download blocking, permission denial, and non-web scheme blocking.
- A hardened Electron host process with sandboxed webviews, disabled Node integration, denied permission prompts, blocked downloads, and blocked popup windows.
- Fast UI response through a local React chrome layer while remote pages load in shared-cache, sandboxed Chromium webviews.
npm install
npm run desktopThe assistant expects Ollama at http://127.0.0.1:11434. It defaults to the fast qwen2.5:7b model for snappy everyday answers, lists every locally installed model (including Gemma) in the picker, and auto-tunes generation per task: page summaries stay responsive, agent planning can route to balanced/deep Gemma models, and final self-checks prefer the strongest installed local model. The agent can read pages, inspect tabs, extract links, navigate, bookmark, find text, and remember useful preferences locally. YOLO mode lets user-requested actions run without approval; with YOLO off, Prism asks before changing browser state. Prompt-injection guards still apply in both modes. Model guidance in Settings:
gemma4:31b(or your largest Gemma): best for complex multi-tab reasoning and long-page synthesis.gemma4:26b: balanced Gemma option when you want depth with slightly less weight.qwen2.5:7b: fast default for quick questions, short summaries, and browser actions.
npm run build
npm run smoke:electron
npm run test:assistant