Skip to content
battastudioPublic

About

πŸ€– Claude, Gemini, DeepSeek & Qwen side-by-side in one macOS window β€” type once, send to all. Electron app using real logged-in browser panels, no API keys.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

6 Commits

Folders and files

Repository files navigation

Multi-AI icon

Multi-AI

One prompt in. Every AI out.

Claude Β· ChatGPT Β· Gemini Β· DeepSeek Β· Qwen Β· Grok Β· Perplexity Β· Copilot and more β€” side by side in one window. Type your prompt once and it goes to all of them at the same time. No API keys, no billing β€” each panel is a real, logged-in browser view.

Electron Cross-platform JavaScript Zero runtime deps License: MIT

🌐 Live page β†’


Multi-AI grid view: one prompt broadcast to Claude, Gemini, DeepSeek and Qwen side by side


🧰 The tools

Tool What it does
πŸ“’ Broadcast Type once, hit Send to all (or Enter). Every panel also has its own ➀.
🧩 AI picker 19 built-in AIs + add your own by URL β€” with an Advanced editor for custom selectors.
πŸ“š Prompt library Save prompts you reuse and drop them back into the composer in one click.
⬇️ Export / compare Grab every panel's latest answer into one Markdown file β€” prompt on top, one section per AI.
⌘ Command palette ⌘/Ctrl+K to run any action or jump to a panel, no mouse needed.
βš™οΈ Settings Default view, theme, paste-all, scroll-sync, and a User-Agent override β€” one home.
πŸͺ Import logins Pull auth cookies from Edge/Chrome (macOS/Windows/Linux) so you skip re-logging-in.

πŸ“Έ Screenshots

βš™οΈ AI picker + add your own ⌘ Command palette (⌘/Ctrl+K)
AI picker modal with 19 providers and an add-your-own form Command palette listing every action
πŸ“š Prompt library βš™οΈ Settings
Prompt library with saved reusable prompts Settings modal: view, theme, paste-all, sync, UA override

Mobile-columns view β€” panels side by side, scroll horizontally
Mobile-columns view


✨ Highlights

  • πŸ“’ Broadcast to every panel β€” one prompt, all models, at once.
  • 🧩 19 built-in AIs + custom sites β€” Claude, ChatGPT, Gemini, Grok, Perplexity, Copilot, DeepSeek, Qwen, Le Chat (Mistral), Kimi, Meta AI, Poe, Pi, You.com, Doubao, Groq, HuggingChat, Character.AI, LMArena. Add any site by URL; teach it selectors via Advanced.
  • πŸ” Dedicated login window β€” a real, full-size browser window sharing the panels' session (clean Chrome UA so Google/Cloudflare don't block sign-in). Log in once, everywhere.
  • πŸͺ Import logins from Edge/Chrome β€” decrypts your existing cookies (like yt-dlp --cookies-from-browser) on macOS, Windows and Linux.
  • πŸ–ΌοΈ Paste an image to all panels β€” ⌘/Ctrl+V an image and it uploads into every AI (verified before the prompt sends).
  • πŸŽ›οΈ Built for focus β€” 2Γ—2 grid ⇄ mobile columns, light/dark, drag headers to reorder, double-click to maximize, optional synced scroll, ↑/↓ prompt history, ⌘/Ctrl+K command palette.

Why no API keys?

These sites block plain web embedding (Cloudflare bot checks + anti-iframe rules). Multi-AI sidesteps that entirely: every panel is a genuine Chromium browser view pointing at the real website. You use your own logged-in accounts β€” nothing is proxied, no keys, no per-token cost.


πŸ›  How it works

flowchart LR
    U([You]) -->|one prompt| B["broadcast() Β· renderer/broadcast.js"]
    B --> I1[inject β†’ Claude webview]
    B --> I2[inject β†’ Gemini webview]
    B --> I3[inject β†’ DeepSeek webview]
    B --> I4[inject β†’ Qwen webview]
    I1 & I2 & I3 & I4 --> S{{Real AI websites Β· your logged-in session}}
    S -->|answers render in place| U
Loading

Each site in the catalog (renderer/catalog.js) holds its URL, login URL, brand color, and optional CSS selectors for the input box and send button. broadcast() injects a tiny script into every enabled panel to fill the box and click send.

Tech: Electron 33 (Chromium <webview> panels) Β· vanilla JS/HTML/CSS Β· no framework, no bundler, zero runtime dependencies. Auth persists in an Electron session partition; UI preferences in localStorage.


πŸš€ Quick start

git clone https://github.com/battastudio/MulAI.git
cd MulAI

npm install     # downloads Electron (~150 MB, one-time)
npm start       # opens the Multi-AI window

First run: click Log in (or Import) and sign in to the AIs you want. If a panel shows a Cloudflare check, complete it right inside the panel β€” it's a real browser. Then type a prompt and Send to all.

Build a standalone app bundle:

npm run package:mac      # β†’ dist/Multi-AI-darwin-*
npm run package:win      # β†’ dist/Multi-AI-win32-x64   (build on/for Windows)
npm run package:linux    # β†’ dist/Multi-AI-linux-x64

No .env, no config, no API keys. See docs/ for a page per tool.


πŸ“ Project structure

multi_ai/
β”œβ”€β”€ main.js            # Electron main process β€” window, login windows, IPC, UA spoof
β”œβ”€β”€ preload.js         # contextBridge β†’ window.multiai (IPC) + shared UA
β”œβ”€β”€ constants.js       # single source of truth for the spoofed User-Agent
β”œβ”€β”€ renderer/          # the app, split into ≀150-line modules on the window.MAI namespace
β”‚   β”œβ”€β”€ core.js        #   state, store, DOM refs, helpers  (loads first)
β”‚   β”œβ”€β”€ catalog.js     #   the AI site registry (add a provider here)
β”‚   β”œβ”€β”€ inject-text.js #   type-and-send payload injected into each panel
β”‚   β”œβ”€β”€ inject-file.js #   image attach (file input + CDP drop) + preview verify
β”‚   β”œβ”€β”€ panels.js      #   render panels, drag-reorder, maximize
β”‚   β”œβ”€β”€ broadcast.js   #   the two-phase send
β”‚   β”œβ”€β”€ picker.js Β· prompt-library.js Β· settings.js Β· export.js
β”‚   β”œβ”€β”€ command-palette.js Β· shortcuts.js Β· toolbar.js Β· scroll-sync.js Β· image.js
β”‚   └── app.js         #   boot + wiring  (loads last)
β”œβ”€β”€ cookies/           # cross-platform cookie import (index dispatches by OS)
β”‚   β”œβ”€β”€ common.js Β· macos.js Β· windows.js Β· linux.js
β”œβ”€β”€ index.html         # window shell + all modals
β”œβ”€β”€ styles.css         # light/dark themes, panels, modals
β”œβ”€β”€ scripts/check-lines.js   # the ≀150-line CI gate
└── build/icon.*       # app icons (svg/png/icns/ico)

New here? Read CONTRIBUTING.md β€” it's the short rulebook that keeps this codebase small.


πŸ€” Honest limitations

  • Windows/Linux cookie import is code-complete but only lightly tested β€” the decrypt math has self-checks, but real-profile import was verified on macOS only. On Windows, sqlite3 must be on PATH.
  • Selectors can break. Injection depends on each site's CSS selectors. When a site redesigns its input/send button, that panel stops sending β€” fix it in renderer/catalog.js (or, for a custom site, the picker's Advanced fields).
  • Some logins are device-bound. Google/Gemini cookies won't import; use the Log in window for those.
  • Bot-detection sites. ChatGPT and Grok may challenge automation β€” complete any check inside the panel.
  • Per-site image/answer support varies. Image paste and answer-export are best-effort heuristics across differing chat DOMs.

🀝 Contributing

PRs welcome. The rules are deliberately short β€” see CONTRIBUTING.md. Before opening a PR: npm run lint (≀150 lines/file) and npm test (cookie self-checks) must pass, and update the README/docs/ for any user-facing change.

πŸ“„ License

MIT Β© 2026 Hassan Al-Najjar

⚠️ Disclaimer

A personal productivity tool that automates your own logged-in sessions. Automating these websites may conflict with their Terms of Service β€” use responsibly, for personal use only.

About

πŸ€– Claude, Gemini, DeepSeek & Qwen side-by-side in one macOS window β€” type once, send to all. Electron app using real logged-in browser panels, no API keys.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages