The Problem

Developers and power‑users often need to compare responses from several large language model (LLM) providers (ChatGPT, Gemini, Claude, etc.). Switching browsers or copying results between tabs is time‑consuming and error‑prone.

What This Does

llm-god is an Electron‑based desktop wrapper that opens the web consoles of supported LLMs in separate BrowserViews and forwards a single prompt to all of them. The UI lives in src/renderer.ts and the main process logic in src/main.ts. Model selection is handled by src/dropdown.ts and persisted via src/saveprompt.ts / src/saveeditedprompt.ts. Answer‑scraping helpers (answerscrapers/answersavergpt.js, answerscrapers/answersaver_gemini.js) extract the text from each provider’s page for display in the shared textarea.

How To Use It

Setup

git clone https://github.com/czhou578/llm-god.git cd llm-god npm install # installs Electron, TypeScript, Jest, etc.

Development workflow (as described in README)

Terminal 1 – continuous TypeScript compilation npx tsc --watch

Terminal 2 – run the Electron app with hot‑reloading npx electronmon dist/main.js

Production build

npm run make # invokes electron‑builder per .github/workflows/build.yml

The resulting installer appears under out/app-win32-x64.

Running the app

Launch the generated Setup.exe (Windows) or the compiled binary on macOS/Linux (experimental). Use the dropdown (bottom‑right) to add/remove LLM tabs; the defaults (ChatGPT, Gemini, Llama) are locked. Paste a prompt and press Ctrl + Enter to broadcast it. Close the app with Ctrl + W.

No external configuration files or environment variables are required; the only prerequisite is an active login to each LLM’s web console inside the embedded browser.

Real‑World Use

A data‑science team can embed llm-god in their local workstation to benchmark model outputs for a given query:

// Example: automate a batch prompt import { ipcRenderer } from 'electron'; const prompt = "Explain the bias‑variance trade‑off in 3 sentences."; ipcRenderer.send('broadcast-prompt', prompt); // internal channel used in src/main.ts

All open LLM tabs will display the answer side‑by‑side, enabling rapid comparison without manual copy‑paste.

Code Health & Issues

Low – Missing code‑signing – forge.config.cjs builds unsigned Windows binaries; users must bypass Windows SmartScreen. Medium – External webview security – src/main.ts loads third‑party LLM URLs in Electron BrowserViews without CSP or sandboxing, exposing the app to potential XSS or credential leakage. Low – Platform limitation – README states Windows‑only; macOS/Linux support is experimental and not CI‑tested. Low – Hard‑coded model list – src/dropdown.ts defines default models; adding new providers requires code changes, reducing extensibility. Low – No runtime config – No .env or config file for API keys; the app relies entirely on user‑session cookies, which may break if sessions expire. Low – Good test coverage – 10 Jest test files (tests/*.test.ts) cover main process, renderer, and utility functions. Low – CI present – GitHub Actions workflow (.github/workflows/build.yml) runs npm run lint && npm test, indicating a basic CI pipeline. Low – License – MIT license present (LICENSE).

No obvious dead code or lint failures detected from the tree; TypeScript compilation passes per npm run start instructions.

The Bottom Line

llm-god delivers a functional, Electron‑packaged UI for simultaneous prompting of multiple LLM web consoles, with a clear development script and basic test suite. It is suitable for solo developers or small teams needing quick side‑by‑side model comparison, but the lack of code‑signing, limited platform support, and security exposure of embedded webviews make it less appropriate for production‑grade deployments without further hardening.