Skip to content

Repository files navigation

Multi LLM Text and Voice Chat

A powerful desktop chat application that connects to multiple LLM providers, offering voice interaction, real-time streaming, and side-by-side response comparison — all from a single interface.

Platform Electron TypeScript License

Features

Multi-LLM Chat — 10 Providers (8 Cloud + 2 Local)

  • OpenAI — GPT-4o, GPT-4o Mini, GPT-4 Turbo, o1, o1 Mini
  • Anthropic — Claude Sonnet 4, Claude Opus 4, Claude 3.5 Haiku
  • Google Gemini — Gemini 2.5 Flash, Gemini 2.5 Pro, Gemini 2.0 Flash Lite
  • DeepSeek — DeepSeek Chat, DeepSeek Reasoner
  • Groq — Llama 3.3 70B, Llama 3.1 8B, Mixtral 8x7B, Gemma 2 9B
  • Mistral AI — Mistral Large, Small, Medium, Codestral
  • xAI (Grok) — Grok 3, Grok 3 Mini, Grok 2
  • Perplexity — Sonar Pro, Sonar, Sonar Reasoning Pro/Standard
  • Ollama (Local) — Llama 3.1/3.2, Mistral, CodeLlama, Phi-3, Gemma 2, Qwen 2.5, DeepSeek R1
  • LM Studio (Local) — Any locally loaded model
  • Real-time streaming responses with markdown rendering and syntax highlighting
  • Encrypted API key storage via Electron safeStorage

Smart Model Selection

  • Single model — select one model chip for normal chat
  • Multi-model comparison — select 2+ models to see side-by-side responses with analysis
  • Natural language routing — say "ask Gemini and Claude about quantum computing" and the app automatically detects the intent, selects the providers, and runs the comparison

LLM Comparison Engine

  • Side-by-side response panels with latency metrics
  • Automated analysis: differences, commonalities, contrasts
  • Merged summary combining the best of all responses
  • All comparison data persisted to database

Voice Chat

  • Always-on live mode — Gemini Live / ChatGPT Voice style continuous conversation
  • Voice Activity Detection (VAD) — automatically detects when you start and stop speaking
  • Interruption handling — speak during AI response to interrupt, just like a real conversation
  • Mute button — mute mic without stopping the session
  • Push-to-talk — alternative to always-on mode
  • Voice typing — dictate into the text input with real-time transcription preview
  • Speak responses toggle — AI reads responses aloud via OpenAI TTS or browser speech
  • Configurable sensitivity — adjust silence threshold and VAD sensitivity for your environment
  • Powered by OpenAI Whisper API (STT) and OpenAI TTS / browser SpeechSynthesis (TTS)

Conversation Management

  • All conversations saved to local SQLite database
  • Sidebar with search and date-grouped history (Today, Yesterday, This Week, Older)
  • Auto-generated conversation titles
  • Supports chat, voice, and comparison conversation modes

UI & UX

  • Dark and light themes with smooth transitions
  • Custom title bar with sidebar toggle
  • Keyboard shortcuts (Ctrl+N new chat, Ctrl+B sidebar, Ctrl+1/2 views, Ctrl+Shift+T theme)
  • Markdown rendering with syntax-highlighted code blocks and copy button
  • Streaming typewriter animation with loading indicators
  • Responsive layout with collapsible sidebar

Tech Stack

Layer Technology
Framework Electron + React 18
Language TypeScript (strict mode)
Styling Tailwind CSS v4
State Zustand
Database SQLite via better-sqlite3
Voice STT OpenAI Whisper API
Voice TTS OpenAI TTS API + browser SpeechSynthesis fallback
LLM SDKs openai (also used for DeepSeek, Groq, Mistral, xAI, Perplexity, Ollama, LM Studio), @anthropic-ai/sdk, @google/generative-ai
Bundler Webpack (Electron Forge)
Packaging Electron Forge (Squirrel for Windows, DMG for macOS)
CI/CD GitHub Actions (Windows + macOS builds)

Download & Install

Option 1: Download Pre-Built Installer (Recommended)

Pre-built installers are automatically generated via GitHub Actions on every push to main.

  1. Go to the Actions tab in this repository
  2. Click the latest successful "Build & Package" workflow run (green ✓)
  3. Scroll to the Artifacts section at the bottom of the run page
  4. Download for your platform:
Artifact Platform Installer
AnyLLMChat-Windows Windows 10/11 .exe (Squirrel installer)
AnyLLMChat-macOS macOS 12+ .dmg disk image

Windows: SmartScreen may warn — click "More info" → "Run anyway" (app is not code-signed).

macOS: Gatekeeper may block — go to System Settings → Privacy & Security → "Open Anyway".

Option 2: Build from Source

# Clone the repository
git clone https://github.com/jaimalleshk/AnyLLMChat.git
cd AnyLLMChat

# Install dependencies (requires Node.js 18+)
npm install

# Run in development mode
npm start

# Or build installer for your platform
npm run make
# Output: out/make/squirrel.windows/x64/ (Windows) or out/make/ (macOS)

Windows build requires: Visual Studio Build Tools with "Desktop development with C++" workload.

macOS build requires: Xcode Command Line Tools (xcode-select --install).

First-Time Setup

  1. Launch the app
  2. Open Settings — click the gear icon in the sidebar, or press Ctrl+, (Windows) / Cmd+, (macOS)
  3. Enter API keys for your preferred providers:
Provider Get API Key
OpenAI https://platform.openai.com/api-keys
Anthropic https://console.anthropic.com/settings/keys
Google Gemini https://aistudio.google.com/apikey
DeepSeek https://platform.deepseek.com/api_keys
Groq https://console.groq.com/keys
Mistral AI https://console.mistral.ai/api-keys
xAI (Grok) https://console.x.ai/
Perplexity https://www.perplexity.ai/settings/api
  1. For local LLMs: Install Ollama or LM Studio, then enter ollama or lmstudio as the API key
  2. Keys are encrypted and stored locally via Electron safeStorage
  3. Voice chat requires an OpenAI API key (for Whisper STT and TTS)

Detailed installation guide: See docs/INSTALL.md for platform-specific instructions, local LLM setup, voice configuration, and troubleshooting.

Architecture

src/
  main/           # Electron main process
    db/            # SQLite database, migrations, repositories
    llm/           # LLM provider implementations, orchestrator, comparison engine
    voice/         # Whisper STT + OpenAI TTS wrappers
    ipc/           # IPC handlers (chat, settings, voice, comparison)
  renderer/        # React UI
    components/    # Chat, Voice, Settings, Layout, Common components
    hooks/         # useChat, useVoice, useComparison, useConversations, useSettings
    stores/        # Zustand stores (chat, voice, comparison, settings, UI)
    lib/           # Intent detection, utilities
  shared/types/    # Shared TypeScript interfaces

Key Design Decisions

  • Main process handles all API calls — API keys never reach the renderer process
  • IPC streaminginvoke/handle for request-response, webContents.send for streaming chunks
  • Zustand with selectors — individual property subscriptions to prevent re-render cascades
  • Meta-prompt comparison — LLM responses are analyzed by sending all outputs to a provider with a structured analysis prompt, producing higher quality diffs than algorithmic text comparison

Keyboard Shortcuts

Shortcut Action
Ctrl+N New chat
Ctrl+B Toggle sidebar
Ctrl+1 Chat view
Ctrl+2 Voice view
Ctrl+3 Settings
Ctrl+, Settings
Ctrl+Shift+T Toggle dark/light theme

CI/CD

GitHub Actions builds Windows (.exe) and macOS (.dmg) installers on demand (manual trigger).

  • Workflow: .github/workflows/build.yml
  • Trigger: Manual only — go to Actions tab → "Build & Package" → "Run workflow"
  • Platform options: Windows only, macOS only, or Both
  • Artifacts: Download from Actions tab → latest run → Artifacts section (retained 14 days)
  • macOS builds use 10× GitHub Actions minutes — build only when needed

Current Status (March 2026)

Tested & Working

  • Single LLM chat with OpenAI, Anthropic, and Google Gemini
  • Multi-LLM comparison with side-by-side response panes and analysis (differences, commonalities, merged summary)
  • Live voice chat with VAD speech detection, Whisper transcription, and TTS responses
  • Speak/Pause/Stop controls on all responses (chat + comparison panes)
  • Conversation history with search and auto-generated titles
  • API key management with encrypted storage

Known Issues

  • Live voice chat has occasional feedback looping — after AI speaks, residual audio from the speaker can be picked up by the mic and re-submitted. Cooldown and buffer flushing mitigations are in place but not fully resolved.
  • Native SpeechRecognition (browser API) does not work in Electron; Whisper API is required for all voice transcription.

Planned

  • Web interface for browser access
  • Mobile apps (iOS/Android) via Capacitor
  • Additional LLM providers as they become available

Documentation

Document Description
docs/ARCHITECTURE.md High-level architecture, data flows, file-by-file guide, design decisions
docs/INSTALL.md Download, install, setup, provider configuration, troubleshooting

Built with Electron, React, and TypeScript.

About

A powerful multi-LLM desktop chat app with voice interaction, real-time streaming, and side-by-side response comparison across OpenAI, Anthropic, and Google Gemini.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages