# Install harper with Homebrew, apk, Nix, pacman, scoop, winget

Grammar Checker for Developers. Version 2.7.0 via Homebrew; verified 2026-07-29. Also installable with nix: nix profile install nixpkgs#harper.

## Install

```sh
sudo av install brew:harper
```

Additional install commands:

### macOS

- Homebrew (100%):

```sh
brew install harper
```

  Evidence: local Homebrew formula metadata

### Linux

- apk (92%):

```sh
sudo apk add harper
```

  Evidence: Alpine Linux edge package indexes: harper from https://dl-cdn.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz

- Nix (92%):

```sh
nix profile install nixpkgs#harper
```

  Evidence: nixpkgs package indexes: pkgs/by-name/ha/harper/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1

- pacman (92%):

```sh
sudo pacman -S harper
```

  Evidence: Arch Linux sync databases: harper from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz

### Windows

- Scoop (92%):

```sh
scoop install main/harper
```

  Evidence: Scoop official bucket manifest trees: bucket/harper.json from https://api.github.com/repos/ScoopInstaller/Main/git/trees/master?recursive=1

- winget (92%):

```sh
winget install --id Automattic.harper-ls -e
```

  Evidence: Windows Package Manager source index: Automattic.harper-ls from https://cdn.winget.microsoft.com/cache/source.msix

## Package facts

- **Package key:** brew:harper
- **Package manager:** Homebrew
- **Version:** 2.7.0
- **Source summary:** Grammar Checker for Developers
- **Homepage:** <https://writewithharper.com>
- **Repository:** <https://github.com/Automattic/harper>
- **Last updated:** 2026-07-29T00:33:04Z
- **Generated:** 2026-08-03T19:37:03+00:00

## Executables

- harper-cli (alias)
- harper-ls (alias)

## Install behavior

- Bottle: not available

## Freshness

- Page generated: 2026-08-03
- Package-manager version: 2.7.0
## Project history and usage

Harper is an offline, privacy-oriented English grammar checker for developers and technical writers. It began as a Rust-powered grammar and spell-checking engine, then grew into a multi-surface project with a language server, CLI, WebAssembly package, browser extensions, editor integrations, and an Obsidian integration.

### Project history

The repository history begins in October 2023 with experiments around highlighting, spelling, capitalization, and a Wagner-Fischer edit-distance implementation. By January 2024 the project was tagging early releases and packaging separate components such as harper-core and harper-ls.

Harper's README explains its design motivation as a response to expensive, network-bound, and heavy grammar checkers. The author describes Harper as a private tool that runs locally, lints quickly, and avoids sending writing to remote services. The project later moved under the Automattic GitHub organization, while the public repository retained its Rust workspace structure and developer-facing integrations.

### Adoption history

Harper reached users through developer tools rather than only through a standalone writing app. Official language-server docs list package-manager and ecosystem distribution through Homebrew, Scoop, Arch, Nixpkgs, Cargo, and GitHub release binaries. The same docs show editor-oriented adoption through LSP support and integrations for Visual Studio Code, Neovim, Helix, Emacs, Zed, Sublime Text, Markdown, comments in programming languages, and related writing surfaces.

The 1.0.0 release notes framed the milestone around a stable API and noted significant pre-1.0 usage across Chrome, Obsidian, VS Code, Neovim, and other integrations. That release made Harper more credible as a library and embedded grammar-checking component, not only as an end-user binary.

### How it is used

The Homebrew package exposes `harper-cli` and `harper-ls`. In editor workflows, `harper-ls` provides Language Server Protocol diagnostics, dictionaries, code actions, ignore comments, rule configuration, dialect selection, and support for many programming and markup languages.

Harper's architecture makes it useful in both interactive and embedded contexts: the language server serves editors, the CLI fits scripts and package-manager installs, and `harper.js`/WebAssembly supports local linting in web or desktop applications.

### Why package nerds care

Harper is a useful package-manager case because it is simultaneously a Rust CLI, a language server, and a library ecosystem. A package needs to expose developer-facing executables while matching the upstream release cadence and keeping integrations compatible with editor/LSP expectations.

It also represents a broader packaging trend: privacy-preserving local AI-adjacent writing tools that avoid hosted services but still integrate into developer editors, docs workflows, and programmable text-processing environments.

### Timeline

- 2023-10: Repository history begins with grammar-checking and highlighting experiments.
- 2024-01: Early public tags, including v0.2.0, appear for the Rust workspace packages.
- 2025-11: Version 1.0.0 is released as an API-stability milestone after broad editor and extension adoption.
- 2026-04: Version 2.0.0 is released with breaking changes for harper.js binary imports and additional smaller improvements.
- 2026-06: Version 2.6.0 is tagged in the upstream repository.

### Related projects

- LanguageTool and Grammarly are explicit comparison points in Harper's README motivation.
- harper-ls is the language-server frontend used by editor integrations.
- harper.js is the WebAssembly/JavaScript-facing package for embedding local linting.

### Sources

- Official Harper repository README, release notes, and language-server documentation.
- Upstream git tag history for public release timing.


## Security Notes

narrow executable package without higher-risk signals.

- **Geiger risk:** green / low
- narrow executable package without higher-risk signals

## Other Package-Manager Records

- Nix - harper: normalized package name match | nixpkgs package indexes: pkgs/by-name/ha/harper/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
- apk - harper - 2.1.0-r0: normalized package name match | Alpine Linux edge package indexes: harper from https://dl-cdn.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz | English grammar checker | https://github.com/Automattic/harper
- pacman - harper - 2.7.0-1: normalized package name match | Arch Linux sync databases: harper from https://geo.mirror.pkgbuild.com/extra/os/x86_64/extra.db.tar.gz | The Grammar Checker for Developers | https://github.com/Automattic/harper
- Scoop - main/harper: normalized package name match | Scoop official bucket manifest trees: bucket/harper.json from https://api.github.com/repos/ScoopInstaller/Main/git/trees/master?recursive=1
- winget - Automattic.harper-ls: normalized package name match | Windows Package Manager source index: Automattic.harper-ls from https://cdn.winget.microsoft.com/cache/source.msix


## Related links

- [harper](https://pkg.so/pkg/npm/harper/) - Same normalized package name exists in another local package ecosystem.

## Combined YAML source

View the package source record on GitHub. [combined/harper.yml](https://github.com/mxcl/pkgdb/blob/main/combined/harper.yml)


## Sources

- pkg.so package database
- Geiger risk classifier
- curated package history
- pkgdb category and tag curation
- external package-manager database matches
- cross-ecosystem install command graph
