Harvey: The Free Cold Email Agent That Runs on Your Claude Plan
The repo and the steps for Harvey, a free sales agent that finds businesses, writes each one an email about something real on their site, and works the replies, with every email waiting for your approval.
Back to all free guidesSo in the reel I showed Harvey, a free sales agent on GitHub that runs on the Claude plan you already pay for, so there's no API bill. Here's what it does, what you need and every step, from cloning it to approving your first emails.
Only use this link
The real repo is ethanplusai/harvey. It's MIT licensed and has over 4,000 stars.
There are copies on GitHub selling "official builds" and "verified releases" of it. They aren't the original, so don't download a build from anywhere else.
What it does
- It finds the businesses. The default source is OpenStreetMap, which is free and needs no account.
- It reads each website. It pulls out something specific about that business, like a firm that's hiring a dispatcher, and the email gets written around it.
- It works the replies. When someone answers, it reads the reply, drafts the response and keeps the thread moving towards a meeting.
- It runs on a heartbeat. Every 15 minutes it wakes up, works out what most needs doing, does it and goes back to sleep.
- Nothing sends without you. By default every email waits in an outbox until you approve it.
Before you start
- A Claude Pro or Max plan, with Claude Code installed and logged in. A ChatGPT plan with the Codex CLI works too.
- Python 3.11 or newer. Check with
python3 --version. A Mac ships 3.9, so if that's what you see, runbrew install python@3.13first. - A mailbox on a separate domain. Gmail or Google Workspace is what the repo recommends, and Microsoft 365 works too. Keep it off your main domain, so your everyday email isn't the one taking the risk.
- A warmup service on that mailbox. A brand new mailbox needs warming up before it sends cold email. The repo recommends TrulyInbox, and Harvey reads its inbox rate to tell you when you're ready.
Step 1: let Claude set it up
Clone the repo and open it in Claude Code:
git clone https://github.com/ethanplusai/harvey.git
cd harvey
claudeThen say:
set up Harvey for meThe repo ships its own instructions for Claude Code, so it turns into the setup wizard. It checks what you've got, installs what's missing, asks for what it needs and learns your product from your website.
Step 2: confirm what makes a good prospect
Harvey knows how to collect 29 signals about a business, and it doesn't collect any of them until you say so. 26 of them cost nothing, and you can switch those on in one go:
harvey signals --confirm freeYou can also go through them one by one in the dashboard. Every signal says in plain words what it tells you and what it costs.
Step 3: find your first businesses
harvey discoverThat uses OpenStreetMap by default. It maps premises, so it's thin on trades without a shopfront, like roofers and plumbers, and Harvey tells you so on screen. The paid sources always show an estimate first and never spend anything until you press go.
Step 4: approve your first emails
harvey dashboard
harvey runThe dashboard prints a private link to localhost:5555. Open the Outbox, read each email, and press A to approve or R to reject. J and K move between them.
Before your first campaign, put your mailing address in compliance.postal_address in harvey.yaml. Harvey adds it and an opt-out line under every cold email, and it keeps warning you until the address is set.
If you ever need to stop everything at once, this pauses all sending mid-flight:
harvey sending pauseAutopilot, later
Approve a batch or two by hand and read what Harvey writes first. When you're happy, Settings, then Sending, then Turn on autopilot, and type autopilot to confirm. The daily limit, quiet hours and opt-outs still apply on autopilot.