Your B2B email campaigns, free and simplified.
Open source · MITSelf-host or use ours
Your B2B email campaigns, free and simplified.
Hedwig sends multi-step email sequences from the mailboxes you already own and labels every reply. You can control it and analyze your campaigns from Claude Code or Codex.
Sign up free → ★ Star on GitHub
claude · \~/outreachhedwig mcp
Find 600 coffee roasters in the US that sell wholesale. Write an opening line for each from their own site and put them in a draft campaign on my three mailboxes. Don't send yet.
⏺ research_create US roasters, 5 columns ⏺ research_upsert 600 rows, each fact sourced ⏺ campaign_create draft, 3 steps: day 0, 3, 7 ⏺ campaign_enroll 600 leads over 3 mailboxes ⏺ campaign_preview step 1 → Harbor & Pine
Draft ready: 40 a day per mailbox, Mon–Fri 09:00–17:00 America/Chicago. Nothing goes out until you say start.
start⏺ campaign_start active, next send 09:04
a week later
How is it doing? Which mailbox works best?⏺ campaign_stats last 7 days, by mailbox
600 sent, 41 replies (7%), 12 interested. ana@ has the best reply rate at 9%. Want drafts for the 12? >
flyhedwig.com/campaigns
Hedwig
Campaigns_1_ Inbox 32 Analytics_3_ Emails_4_ Agents_5_ Team_6_ Lists_7_
space
Northfield▾
[email protected] setup · sign out
Campaigns
Northfield · 5 campaigns · 3 mailboxes
\+ New campaign
last 24 h 212 sent · 64 opens · 9 repliesnext send 09:12 from [email protected] open until 17:00 America/Los\_Angeles
| Name | Status | Progress | Leads | Sent | Opened | Replied | Opps | Mailboxes | | ------------------------------------------ | --------- | -------- | ----- | ----- | ----------- | ------------ | ---- | --------- | | US roasters3 steps · ● Closer | active | 33% | 600 | 600 | 214 · 36% | 41 · 7% | 12 | samanaleo | | Bakeries that ship4 steps · ● Triage | active | 18% | 860 | 402 | 151 · 38% | 12 · 4% | 3 | sam | | Café owners, follow-up2 steps · ○ no agent | paused | 71% | 310 | 441 | 162 · 37% | 19 · 7% | 4 | leo | | Spring wholesale3 steps · ● Closer | completed | 100% | 2,050 | 5,904 | 1,980 · 34% | 133 · 7% | 21 | samleo | | October outreach3 steps · ○ no agent | draft | 0% | 0 | 0 | 0 · 0% | 0 · 0% | 0 | none yet |
The Campaigns screen, light theme. Example data.
$0 a monthMCP for Claude Code and Codex
Compare
Same job.
No invoice.Sequences, stop on reply, daily limits, even an MCP server: every tool here has them now. The difference is who owns the software and what it costs. Slide to the size of your list.
Contacts in your campaigns5,000
1001,00010,000100,000
A 3-step sequence, so three emails per contact: 15,000 emails a month.
Instantly · Hypergrowth · $97 a month $1,164 a year
Hedwig: $0 for the same contacts and emails.
the free one ↓
| At 5,000 contacts | HedwigMIT, free | InstantlyHypergrowth | SmartleadPro | lemlistEmail | | ----------------------------------------------- | --------------------------------------------- | ----------------------------------- | ------------------------------------- | ------------------------------------ | | Cost and ownership | | | | | | Price per month | $0self-hosted or on flyhedwig.com | $97$1,164 a year | $94$1,128 a year | $69$828 a year | | Contactson that plan | No cap | 25,000 | 30,000 | Unlimited | | Emails a monthon that plan | No capyou set a daily limit per mailbox | 125,000 | 90,000 | 50,000 | | Source code you can read | MIT | No | No | No | | Runs on your own serveryour database, your keys | Yes | No | No | No | | Agents | | | | | | Claude Code and Codexthrough an MCP server | Yes | Yeswith an API key | From $94Pro plan, with an API key | Yessign in or API key | | Your agent can change the tool | Yesthe repo ships a CLAUDE.md | No | No | No | | AI replies to leads | Drafts onlya person always presses send | Can auto-sendAutopilot, from $97/mo | Draftsauto-send listed as coming soon | Draftswrites replies for you to send | | Sending | | | | | | Connected mailboxes | Unlimited | Unlimited | Unlimited | Unlimited | | Window, daily limits, ramp-up | Yeslimit per mailbox, shared across campaigns | Yes | Yes | Yes | | Stops on reply, bounce, unsubscribe | Yes | Yes | Yes | Yes |
Agents
Your agent runs
the campaign.Hedwig is an MCP server. Add it once to Claude Code or Codex, sign in, choose what the assistant may touch, then ask in plain words. And since the code is yours, the same agent can change Hedwig itself.
1
Add the server
Claude Code Codex
$ claude mcp add --transport http hedwig https://flyhedwig.com/mcp
then type /mcp in a session to sign in
Copy
$ codex mcp add hedwig --url https://flyhedwig.com/mcp codex mcp login hedwig
Copy
Self-hosting? Use your own address, ending in /mcp.
2
Sign in, pick permissions
Your browser opens Hedwig's sign-in. You choose one workspace and what the assistant may do. Launching a campaign and sending a reply are separate permissions; untick them and it can only read and draft.
3
Ask
- Pause the roasters campaign, add these 200 contacts, show me step 2 for the first one.
- Who replied interested this week? Draft answers, I'll send them.
- Compare this month with last: replies per step and per mailbox.
- Which mailbox bounces most? Drop its daily limit to 20.
What it does
Everything a cold
email tool needs.And nothing you pay for per seat. Six things it does every day, with the actual numbers it uses.
Your mailboxes
No relay
Any provider with IMAP and SMTP connects with the mailbox password; the servers are found from the domain's MX record. Microsoft 365 connects with Microsoft's own sign-in.
Passwords and tokens are encrypted at rest with AES-256-GCM. SPF, DKIM and DMARC are checked daily, with the exact record to add.
SPF DKIM DMARC
Sequences
12 steps
Import a CSV or Excel file of any size, map columns to variables, dedupe against the campaign and your suppression list.
Write up to twelve steps with `{{firstName|there}}` variables and fallbacks. Follow-ups land in the same thread. Preview with real rows, send yourself a test.
Pace
Never a burst
A sending window in the campaign's timezone. A daily limit per campaign and per mailbox, shared across campaigns. New mailboxes start at 10 a day, +5 a week.
00091724
30 sends, 09:00–17:00, spread with jitter
Replies
Every 2 min
Every inbox is read every two minutes. A reply stops the sequence. A bounce stops it and suppresses the address. Out-of-office notes are recognized and, by default, ignored.
A mailbox pauses itself when bounces reach 5% of a week's sends.
Reply agents
Drafts, never sends
Set up your own agents: who you are, your tone, what never to promise. Each campaign picks one. It labels every reply and writes a draft for the interested ones, the meetings and the questions.
CloserLabel + draft
We roast in small batches in Portland. Short and friendly. Never promise a delivery date.
You edit the draft in the Inbox and press send. An agent never sends by itself.
Honest numbers
Counted, not guessed
Sent, opens, replies, bounces and opportunities per day, step, mailbox and campaign. Every number on screen is a count of real events.
Opens from mail scanners are discounted, so an open rate isn't just your send count. People who open more often than you emailed them get flagged curious.
Promises
Three things it
never does.✗ Relay your mail
Every email leaves through your mailbox’s own SMTP or Microsoft Graph. No SendGrid, no SES.
✗ Reply for you
Agents label and draft. A person reads it and presses send.
✗ Bill you
MIT licensed. Free on flyhedwig.com, free on your own server.
Get started
Two ways in.
Same code either way. Start on flyhedwig.com, move to your own server whenever you like.
Hosted
Use flyhedwig.com
Make an account, connect a mailbox, send today. Mail still leaves from your own mailbox, never from ours.
Self-hosted
Run it yourself
$ git clone https://github.com/gabrilator/hedwig && cd hedwig cp .env.example .env docker compose up -d --build
Copy
Put HTTPS in front, set ORIGIN to your address, and you're done. Any VPS works, or any platform that builds from a repository.