Two engines, one pass
Harper rules flag typos and agreement in under 10 ms. A local LLM rewrites the full sentences rules can't fix — triggered on a selection or ⌘⇧R.
Local-first · macOS
Nib pairs the Harper rule engine with a small on-device LLM to catch mistakes and rewrite whole sentences — across every app, with zero network calls for checks and rewrites and no account.
macOS 13+ · Apple Silicon · early access — build from source
Grammarly ships a bundled browser and a cloud round-trip. Harper is a beautiful Rust grammar engine, but it deliberately refuses generative AI. Nib is both — instant rule-based catches plus a local model for the contextual rewrites rules can't reach — and it all runs offline.
Harper rules flag typos and agreement in under 10 ms. A local LLM rewrites the full sentences rules can't fix — triggered on a selection or ⌘⇧R.
No servers, no account, no telemetry. Checking and rewrites never touch a network —
the model runs entirely on-device through llama.cpp. The only network
use is fetching models from Hugging Face/GitHub.
A system overlay underlines and rewrites in TextEdit, Notes, Mail and Messages, with a clipboard fallback that reaches browsers and Electron apps.
A ~219 MB bundled model instead of a bundled Chromium and a cloud hop. The BitNet roadmap aims even smaller.
Accepted edits land in a private on-device journal that can fine-tune a personal LoRA — trained locally by default; cloud training is strictly opt-in.
The premium adapter preserves facts, numbers and technical tokens — 81.1% on our held-out eval vs 64.4% for the stock base.
The macOS Accessibility API tells Nib which text field you're in — across any app, without a plugin.
Harper flags rule-based issues instantly. Select text or hit ⌘⇧R and the sentence goes to the local model for a rewrite.
Accepted fixes are applied directly through the Accessibility API — or pasted via a clipboard fallback where direct write isn't allowed.
| Tier | Model | Notes | Size |
|---|---|---|---|
| Default | LFM2.5-350M-Instruct | Bundled in the app; fast, ideal for grammar fixes. | ~219 MB |
| Premium | Qwen 2.5-1.5B + Nib-Faithful LoRA | Preserves facts, numbers & technical tokens. | ~940 MB base + ~36 MB adapter |
The premium tier is an adapter applied at runtime on top of the shared Qwen base, so every future iteration ships as a tiny adapter swap. It's trained by a $0 rejection-sampling self-play loop.
Every accepted suggestion and AI rewrite is stored in a local edit journal at
~/Library/Application Support/Nib/journal.jsonl. That journal is what
trains your personal adapter — on your own machine by default; it leaves the Mac only if
you explicitly choose the optional cloud-training run.