Repository navigation
Releases
0.4.0: Harvey is now Sellbird
Harvey has a new name: Sellbird. Same project, same history, same maintainers. Your stars, forks and issues are all here, and every old github.com/ethanplusai/harvey link redirects.
Why the new name? The name Harvey belongs to another AI company, so this open-source project needed a name of its own. Nothing about how it works has changed. More at sellbird.ai/harvey.
Sellbird finds companies that need what you sell, finds the person who decides, checks their email address, writes each one a personal cold email, sends it and handles the replies. It runs on your own machine, on the Claude or ChatGPT plan you already have. If you'd rather not run it yourself, sellbird.ai is the hosted version, now in early access.
Upgrading
Not a terminal person? Open your Harvey folder in Claude Code (or Codex) and say: "Update Harvey to the latest version." It runs the steps below for you.
Or in a terminal:
git pull
pip install -e . # once, to get the new `sellbird` command
sellbird dashboardNothing is lost:
harvey.local.yamlanddata/harvey.*move tosellbird.local.yamlanddata/sellbird.*on the first run. Nothing is overwritten, and nothing moves while a Harvey process is still running from the folder.HARVEY_*settings still work when theSELLBIRD_*one isn't set.- Your dashboard sign-in and light or dark choice carry over, and the dashboard says "Harvey is now Sellbird" once.
- The
harveycommand andpython -m harveykeep working, and say they moved, until February 2027. - Edited the tracked
harvey.yamlyourself?git pullwill stop; rungit stash,git pull,git stash pop. See the README for conflicts. - Docker:
docker compose down,git pull,docker compose build,docker compose up -d. The service is nowsellbird.
What changed
- The name, everywhere: package, command, config files, data files, settings, Docker service and dashboard.
- The license. From 0.4.0 Sellbird is licensed under the GNU AGPL v3.0. Releases up to 0.3.x stay MIT; that code keeps its MIT notice in
NOTICE. Running Sellbird for yourself or your company is unaffected. If you offer a modified Sellbird to others as a service, the AGPL asks you to share your changes. - Contributing. Commits are now signed off (
git commit -s) under the Developer Certificate of Origin. - The agent's voice. The prompts no longer call the model by the product's name, and the default sender name is now "Alex", so nobody's cold email is signed "Sellbird". If you never set your own name and your emails went out as "Harvey", set
persona.nameinsellbird.local.yamlto keep it. - A new README and docs. A shorter front page, with the detailed guides moved into
docs/, a new dashboard recording, and security, support and conduct guides. - The logo. The dashboard shows the Sellbird swallow.
Full list in CHANGELOG.md.
Thank you to everyone who has starred, forked, filed issues and sent pull requests to Harvey. It all carries over. Open pull requests don't need any action: they'll be brought over to the new names and credited to their authors.
0.3.0 — Claude or Codex subscriptions
Harvey now runs on your Claude Code or Codex subscription. Claude remains the default; Codex is opt-in, with no automatic provider or API-key fallback.
- Codex support: macOS/Linux, Codex CLI 0.159.3 exactly, explicit gpt-5.5, and a file-based ChatGPT login. Choose Codex in
harvey setupor useharvey train <url> --provider codex --model gpt-5.5. - Safer recovery and sending: provider failures pause work without losing replies; reply handling finishes before queued mail sends. Usage and health displays follow the selected provider.
- Windows dashboard fix: UTF-8 assets now load correctly. Codex itself remains unsupported on Windows.
Limits: keyring login storage and Codex in the shipped Docker image are unsupported. Harvey never refreshes your login; renew it through Codex or codex login when needed (roughly every eight days). An expired login pauses Harvey safely.
Upgrade: from your existing checkout, activate its virtual environment, run git pull --ff-only, then python -m pip install -e ., and restart Harvey. Existing Claude users need no provider configuration changes. See the Codex setup instructions before switching.
Validation: all six feature CI jobs passed (Python 3.11/3.12 on macOS, Linux and Windows). Live Codex checks passed on macOS and ARM64 Linux using captured mail only; no real emails were sent.
0.2.1 — security release
A security release. Update if you run Harvey.
Security
- Claude now runs with no tools. Every Claude call used to run with
--dangerously-skip-permissions, and prompts include text Harvey doesn't
control: prospect email replies and scraped web pages. Instructions hidden
in that text could make Claude run commands, read or write files, or use
the operator's connected MCP servers. Calls now run with--tools ""and
--strict-mcp-config; Harvey only ever needed text back, so nothing else
changes. Reported privately by @hackchang.
If you ran an earlier version with live replies coming in, check the
account that ran Harvey for unexpected files or activity.
Fixed
harvey runno longer drops into the setup wizard when the trained config
lives inharvey.local.yaml; the dashboard reads it too.- A heartbeat cycle is capped at 10 minutes, so one hung agent can't freeze
Harvey, and quiet hours are re-checked every 5 minutes so a Mac waking from
sleep resumes on time. - Sites that only answer on plain HTTP or
www.are no longer marked
unreachable. - Profile and contact backfills rotate through every company instead of
retrying the same few forever. - The trainer writes full place names ("Solon, Ohio") and real job titles, so
discovery doesn't geocode to the wrong city and found contacts aren't
silently discarded.
Added
- Contacts are backfilled for companies found without any, from their own team
pages and, if a key is set, Hunter's named-people search. HUNTER_MONTHLY_SEARCHES(default 25) sets one Hunter budget shared by every
domain search.
Thanks to @sshaw0729-dotcom for the
fixes above (#2).