Upyr
Private English ↔ Ukrainian keyboard-layout correction in Rust — local n-gram inference, zero telemetry, installable via Homebrew.

Typing on the wrong physical keyboard layout turns привіт into ghbdsn; Upyr is a native English-Ukrainian keyboard-layout corrector built to fix exactly that. It runs as a macOS menu-bar app (Windows and Linux previews also exist), triggered by a shortcut to fix selected text or the word before the caret, with an opt-in automatic-correction mode for confidently mistyped words.
Upyr doesn’t translate — it remaps the physical keys of the typed text onto the other layout’s positions, builds both the as-typed and remapped candidates, and picks between them. Trigger rules and technical-token guards (protecting strings like FAANG or a URL) catch high-certainty short words that statistics handle poorly; everything else is scored by an embedded signed character n-gram index: 173,964 packed 2-5-character records in about 2.8 MiB, each a sequence key plus one confidence byte (negative for English, positive for Ukrainian), built from pinned, checksum-verified Leipzig Corpora news snapshots and searched by binary lookup. The shared upyr-core crate has no OS or network dependency; platform adapters own permissions, clipboard snapshot/restore, and input-source switching.
There is no telemetry, no remote inference, and no logged typing history by design — the project ships a privacy-check script and CI-run dependency and security audits as inspectable evidence rather than a bare claim.
Status: v0.3.0 public preview, source public under MIT, installable via Homebrew or cargo install. The macOS build is ad-hoc signed, not yet Apple-notarized, so Gatekeeper warns on the downloaded app; package-manager installs sidestep that by building from source.