All (EN) + Klaro! (DE) + claro (ES) — everything understood, in all three languages.
Someone speaks German or Spanish on your call — two seconds later the English translation is streaming onto your screen, color-coded by speaker and language. You answer in English; they get German or Spanish back. Nothing ever leaves your machine.
Detects each utterance's language and translates to the other — DE↔EN, ES↔EN, ES↔DE — or force a direction, including German → English + Spanish at once.
Captures your mic and the meeting as separate You / Them channels via BlackHole; echoes picked up twice are dropped automatically.
Translations see the recent conversation, so pronouns and topics resolve correctly.
Verb-final sentences chopped by a short pause are re-joined and re-translated whole.
A small model streams a translation instantly; the main model re-translates behind the scenes and swaps in its better answer.
A text box under the feed — type instead of speaking, or hit 📥 to paste-and-translate in one tap (made for WhatsApp copy-paste); same context and refinement pipeline, mic not required.
English hides whether "you" means du, Sie, or ihr — tú, usted, or ustedes. Pin the address form, or let the conversation context decide.
Optional dialect flavor for the output — Berlinerisch, Hessisch, or Wormser Platt for German; Mexican or Barcelona Spanish — reply to your friends the way they actually write.
Hold any word for its Wiktionary entry — gender with article, plural, IPA, and meanings; "ging" chains to gehen. Built locally from free kaikki.org extracts.
Tap any phrase to hear it spoken in its own language — great for pronunciation practice.
Every finished translation carries a copy button — no fiddly text selection, and a ✓ confirms it landed on the clipboard.
Edit any translation in place — corrections are saved locally and steer future translations of similar sentences.
One-click summary with a vocabulary list, and Markdown export for later review.
Compile dict.cc / FreeDict exports into gender dictionaries — "caipirinha" gets der/die/das and "problema" gets el/la injected automatically.
Berlin and Hessian forms ("dit", "ebbes", "gell") are detected and hinted to the translator — including typical speech-recognition mishearings of them.
Pin names and terms in glossary.txt — biases both
recognition and translation.
Model recommendations come from the repo's own probe suite — gender, corrections-following, dialect steering — and one command benchmarks any Ollama model the same way.
Serve over LAN HTTPS and use your iPhone's mic for in-person conversations.
Keep the newest text mid-screen ("Center latest") instead of at the bottom edge.
Tap a card's background and the translation fills the screen — made for showing the person across the table.
A stateless /api/translate endpoint built for Apple
Shortcuts: copy a WhatsApp message, Back-Tap your iPhone, and the
translation pops up — no app switch.
Reach your Mac's translator from any network over a private Tailscale VPN — encrypted, never public, with a real HTTPS certificate.
You need an Apple Silicon Mac (M1+), 16 GB+ RAM recommended, ~12 GB free disk, and Homebrew.
# 1. Install uv (Python manager) and Ollama (runs the translation model) brew install uv ollama # 2. Start Ollama and pull the translation model (~8 GB download) brew services start ollama ollama pull gemma3:12b # 3. Get the code and install Python dependencies git clone https://github.com/ismayc/AllKlaro.git cd AllKlaro uv sync # 4. Run it, then open http://127.0.0.1:8710 uv run uvicorn server:app --host 127.0.0.1 --port 8710
Or skip step 4 and double-click Start AllKlaro.command in Finder — it starts Ollama if needed, starts the server, and opens the page. The first launch downloads the Whisper weights (~1.6 GB) once; after that everything runs offline. To translate the other side of a call, add the free BlackHole loopback driver — the README walks through the one-time setup.
Whisper starts ~320 ms into a pause and the result is discarded if speech resumes — partials never block real work.
Static system prompt + history as chat turns means Ollama re-processes only the new sentence.
No pauses (videos, fast talkers)? Utterances split at natural micro-pauses after ~8 s instead of stalling.
"Dutch" detected in a German↔English conversation triggers a re-decode pinned to German.
Temperature-fallback ladder, compression-ratio and no-speech signals, a repetition-loop detector, and a blocklist of stock Whisper hallucinations.
Starting speech needs Silero probability > 0.5, continuing only > 0.35, so quiet word-endings don't chop sentences.
Determiner and noun paradigms are intersected — a phrase with no consistent case/number/gender reading ("das Termin", "mit die Frau") triggers one verified corrective re-ask.