Skip to content

Releases

0.4.0: Harvey is now Sellbird

Choose a tag to compare

@ethanplusai ethanplusai released this 06 Nov 22:16
2e3b4f1

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 dashboard

Nothing is lost:

  • harvey.local.yaml and data/harvey.* move to sellbird.local.yaml and data/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 the SELLBIRD_* 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 harvey command and python -m harvey keep working, and say they moved, until February 2027.
  • Edited the tracked harvey.yaml yourself? git pull will stop; run git 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 now sellbird.

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.name in sellbird.local.yaml to 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

Choose a tag to compare

@ethanplusai ethanplusai released this 13 Oct 19:33
e2632eb

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 setup or use harvey 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

Choose a tag to compare

@ethanplusai ethanplusai released this 13 Oct 14:43
2b8a7e2

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 run no longer drops into the setup wizard when the trained config
    lives in harvey.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).