FAQ

The honest answers.

General

What is Hemingway?

Hemingway is a local development tool that puts a copy editing overlay on your live dev site. Select any text element, get three Claude-generated alternatives, and apply one with a single click. The change writes back to your source file — not just the DOM.

Who is it for?

Developers who own their marketing site copy. If you're the one who ends up editing the headlines, tweaking the CTAs, and arguing with the copywriter over Slack — Hemingway is for you. It meets you in the browser, where the work actually happens.

Is it free?

Yes. Hemingway is MIT licensed and open source. You bring your own Anthropic API key — generation costs go to your Anthropic account at their standard rates.

Does it work in production?

No. Hemingway is a development tool. The server is designed to run alongside your local dev server. It logs a warning if NODE_ENV is set to production and is not designed for runtime use in deployed environments.

Setup

What frameworks does it work with?

Any framework that renders HTML in a browser. The script tag approach is universal — React, Vue, Svelte, Astro, Next.js, SvelteKit, Remix, plain HTML. If it has a dev server and a browser, Hemingway works on it. There's also a React component for projects that prefer it.

What models does it use?

Claude models via the Anthropic API. The default is claude-sonnet-4-6. You can change the model from the overlay settings panel or by setting model in hemingway.config.mjs.

Do I need an Anthropic API key?

Yes. Set it as the ANTHROPIC_API_KEY environment variable before starting the server. The server will start without it but generation requests will fail.

export ANTHROPIC_API_KEY=sk-ant-...
Can I use it with a monorepo?

Yes. Use the sourcePatterns config option to point Hemingway at the right part of your repo. For example, if your marketing site lives in apps/web/src, set sourcePatterns: ["apps/web/src/**/*.{tsx,astro,vue}"] to limit write-back to those files.

Usage

How does source writeback work?

When you apply an alternative, Hemingway searches your source files for the original text using heuristic matching. It handles HTML entities, curly quotes, and whitespace variations, then scores each candidate match by surrounding context — tag name, CSS classes, parent elements — to find the right location. If it's confident, it writes directly. If the match is ambiguous, it shows a confirmation dialog before writing.

If it can't find a match at all, it copies the new text to your clipboard as a fallback.

What if it writes to the wrong file?

Narrow the search scope with sourcePatterns in your config. The more specific your patterns, the less ambiguity in matching. For example, ["src/components/marketing/**/*.tsx"] limits write-back to your marketing components only.

How does multi-select work?

Hold Cmd (Mac) or Ctrl (Windows) and click up to 5 elements. Hemingway treats the selection as a coherent set and generates alternatives across all selected elements together — so the heading and its supporting copy are rewritten in relation to each other.

Can I edit text manually without using AI?

Yes. Double-click any text element to edit it directly in the browser. Press Enter or click away to commit. The change writes back to your source file the same way an AI-generated alternative would.

What's preference learning?

Every time you pick an alternative, Hemingway records which one and labels it across three axes: Clarity, Specificity, and Conversion orientation. After around 10 picks, the pattern becomes meaningful and gets included in future generation prompts — nudging suggestions toward your style. It takes a few sessions to become useful, but it compounds.

Can I use my own style guide?

Yes. Set styleGuide and copyBible in your config to point at markdown files. Both are included in full in every generation request — not summarized, not chunked. Claude gets your actual docs.

// hemingway.config.mjs
export default {
  styleGuide: "./docs/brand-voice.md",
  copyBible: "./docs/copy-bible.md",
}

Privacy & Security

Does my copy leave my machine?

Only to Anthropic's API for generating alternatives. Hemingway makes no other external network calls. Your copy is never stored on any third-party server, and there are no Hemingway accounts or dashboards involved.

Is it safe for client work?

Hemingway runs entirely on localhost — the server binds to 127.0.0.1 and only communicates with the local server. The only external call is to Anthropic's API. Review Anthropic's data handling policies before using it with confidential client copy.

What gets stored locally?

Only your style preferences, in .hemingway/preferences.json. This file records which alternatives you've picked and the labels derived from them. Nothing else is persisted between sessions.

Troubleshooting

The overlay isn't activating.

Check three things in order: (1) Is the Hemingway server running? It should be at http://localhost:4800. (2) Is the client script loading? Check the browser console for errors on the script tag. (3) Is the keyboard shortcut conflicting with something else? You can change it in hemingway.config.mjs with the shortcut option.

Generation is failing.

Almost always the API key. Check that ANTHROPIC_API_KEY is set in the environment where you started the server:

echo $ANTHROPIC_API_KEY

If that's empty, the key isn't in scope. Add it to your shell profile or set it inline when starting the server.

Writeback is writing to the wrong location.

Narrow your sourcePatterns config. The more specific the glob patterns, the more confident the heuristic match. If you have duplicate strings across files, narrow to the specific file or directory that contains the right one.