Local-first · macOS

Grammar and rewrites that never leave your Mac.

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.

Why Nib

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.

100% on your Mac

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.

Works in every app

A system overlay underlines and rewrites in TextEdit, Notes, Mail and Messages, with a clipboard fallback that reaches browsers and Electron apps.

Tiny footprint

A ~219 MB bundled model instead of a bundled Chromium and a cloud hop. The BitNet roadmap aims even smaller.

Learns your voice

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.

Faithful rewrites

The premium adapter preserves facts, numbers and technical tokens — 81.1% on our held-out eval vs 64.4% for the stock base.

How it works

  1. 1

    Track focus

    The macOS Accessibility API tells Nib which text field you're in — across any app, without a plugin.

  2. 2

    Two-stage check

    Harper flags rule-based issues instantly. Select text or hit ⌘⇧R and the sentence goes to the local model for a rewrite.

  3. 3

    Write back in place

    Accepted fixes are applied directly through the Accessibility API — or pasted via a clipboard fallback where direct write isn't allowed.

Two model tiers

TierModelNotesSize
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.

Private by design

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.

App compatibility