A tiny, native macOS app for Le Chat (Mistral AI) — fully customizable, with the branding back the way you want it.
Built with Electrobun + Bun + TypeScript: it uses the system webview (native WKWebView on macOS), so the whole app is ~18 MB, while the Bun main process keeps real control over the webview (external links, native menu, in‑page branding). The icon, UI and concept come from M1n-74316D65/mistral-app (originally Tauri + Rust); this wrapper has been through a couple of runtimes — Neutralino before this — and now runs on Electrobun.
Note
This is a personal project. I built it for myself, to use Mistral more easily on my own machine. It's shared in case it's useful to someone else — feel free to fork it, use it, or make it your own. But I'm not maintaining it as a product: there's no support, no roadmap, and I only keep it working for my own use. Issues and PRs may go unanswered.
Mistral renamed Le Chat's workspace to "Vibe" — and a lot of people would rather it just said Le Chat. This app lets you fix that, and more. Open Settings (⌘,) to:
- Rename the workspace back to "Le Chat" — or anything you like. Toggle it on/off anytime.
- Replace the logo with your own image (SVG or PNG) and resize it with a slider.
Changes save instantly and apply live to the chat page — no restart.
- Le Chat in a native window — wraps
https://chat.mistral.ai/chatin a single resizable window. - Links open in your default browser — both
target="_blank"links and Le Chat's "Opening an external link" confirm modal (which useswindow.open()) are routed to the system browser. - Settings window (⌘,) — rename the workspace label (Mistral's "Vibe" → your own name, e.g. "Le Chat") and set a custom logo. Saved to
~/Library/Application Support/ai.mistral.lechat.desktop/settings.jsonand applied live to the chat page. - Native macOS menu — standard Edit actions (undo/cut/copy/paste/select‑all) wired as menu roles, so ⌘C/⌘V/⌘X reach the chat composer. ⌘W hides the window (session stays alive); the red traffic‑light button quits.
- Light / dark theme following the OS (via
prefers-color-scheme). - Loading / offline splash with a retry, reused from the original design.
One Electrobun window with one webview. The webview first shows a local branded
loading / offline screen (src/mainview/index.html); once it's online that page
navigates the same webview to Le Chat. Everything native lives in the Bun main
process (src/bun/index.ts), so it stays in effect after the webview navigates to
the remote (CSP‑locked) chat page:
- External links — Le Chat opens links via
target="_blank"and, for in‑chat message links, a confirm modal that callswindow.open(). Electrobun's native webview surfaces both as anew-window-openevent; the main process handles it withUtils.openExternal(url). (This is the bug the previous Neutralino build couldn't fix: its webview swallowedwindow.open(), and its JS bridge is dead on the CSP‑locked chat page, so no in‑page workaround was possible.) - Application menu — set once from the main process with role‑based items, so it persists across the navigation and the Edit actions target the focused WKWebView.
electrobun.config.ts build config (native webview, bundleCEF: false)
src/
bun/
index.ts main process: windows, menu, link handler, branding, RPC
settings.ts load/save settings JSON in Application Support
mainview/
index.html loading / offline screen
index.ts checks connectivity, navigates the webview to Le Chat
settings/
index.html settings window UI
index.ts settings renderer (RPC to the main process)
icon.iconset/ app icon, generated from resources/icons/appIcon.png
resources/icons/ appIcon.png (1024×1024 source) + raster icons
- Bun (
curl -fsSL https://bun.sh/install | bash). Electrobun runs the main process on Bun and downloads its native core binaries on first build. - macOS 14+ on Apple Silicon (these instructions build the
macos-arm64target).
There's no prebuilt release — building it yourself takes about a minute:
git clone <this-repo> le-chat-desktop
cd le-chat-desktop
bun install
bun run build:releaseThen open artifacts/stable-macos-arm64-LeChat.dmg, drag Le Chat.app into your
Applications folder, and launch it.
Note
The app is unsigned, so the first launch is blocked by Gatekeeper. Right‑click the app → Open → Open once; after that it opens normally. (Signing it away requires an Apple Developer ID — see Build a distributable.)
bun install # one-time
bun run start # build + launch (electrobun dev)
bun run dev # same, with --watch for live reloadbun run build # dev build → build/dev-macos-arm64/Le Chat-dev.app
bun run build:release # stable build → artifacts/*.dmg + self-extracting .app.tar.zstThe stable build produces a compressed, self‑extracting bundle in artifacts/
(~18 MB DMG on Apple Silicon). The app icon is generated from resources/icons/appIcon.png
into icon.iconset at build time.
Code signing: builds are currently unsigned, so distributing the
.app/DMG to other Macs needs a right‑click → Open (or signing + notarization). To sign, setbuild.mac.codesign: true(andnotarize: true) inelectrobun.config.tswith a Developer ID certificate in your keychain.
UI, icons and original concept: M1n-74316D65/mistral-app. "Le Chat" and Mistral branding belong to Mistral AI. This is an unofficial wrapper.

