Skip to content

Three Model Platform

thefourCraft edited this page Jun 21, 2026 · 1 revision

The Three-Model Platform

Zerm's defining idea: the whole experience is powered by three local AI models, each owned by the app, each installed and managed the same way, each able to run fully offline.

flowchart LR
    subgraph dev[Your Mac]
        direction TB
        A[πŸŽ™οΈ Whisper<br/>Speech-to-Text] --> B[🧠 Gemma<br/>Agentic layer]
        C[Selected text] --> B
        B --> D[πŸ”Š Kokoro<br/>Text-to-Speech]
        A -. or paste .-> P[Cursor]
    end
Loading

The middle model β€” Gemma β€” is the "agentic" layer that serves both sides: it cleans up speech-to-text output for accuracy, and it makes text-to-speech sound human instead of robotic.

The three models

Speech-to-Text Text-to-Speech Agentic LLM
Default model Whisper (ggml) Kokoro-82M Gemma 4 E2B (Q4_K_M)
Engine whisper.cpp sherpa-onnx llama.cpp
Approx size 150 MB – 3 GB ~330 MB ~3.1 GB
Manager WhisperModelManager KokoroModelManager LocalLLMModelManager
Stored in …/WhisperModels/ …/TTSModels/ …/LLMModels/
Cloud option OpenAI, Gemini, Deepgram, … Deepgram, ElevenLabs, OpenAI, … Anthropic, OpenAI, Gemini, Ollama, …

All three live under ~/Library/Application Support/com.arcusis.zerm/, outside the app bundle, so they survive reinstalls.

One install pattern, everywhere

Every model uses the same download UX (the manager classes are deliberate mirrors of each other):

sequenceDiagram
    participant U as User
    participant S as Settings card
    participant M as ModelManager
    participant FS as App Support

    U->>S: pick model / "Download"
    S->>M: download()
    M->>M: URLSession download (progress %)
    M->>FS: write to …/<Model>Models/
    M-->>S: isInstalled = true
    Note over M: runs fully offline thereafter
Loading

The card shows size, a one-tap download with a progress bar, an installed state, and delete β€” identical for the voice models and the LLM (LocalLLMModelCardView is shared between the AI Models screen and Read Aloud settings). See Model Management.

Why local-first

  • Private β€” audio, text, and rewrites never leave the device on the local path.
  • Fast & offline β€” no network round-trip; models are pre-warmed on launch.
  • No keys β€” the recommended path needs no API keys.

Cloud providers remain first-class options for users who want them, configured per task.

See: Speech-to-Text Β· Read Aloud Β· On-Device LLM

Clone this wiki locally