HEY is two things: a mailbox that sends and receives reliably, and a client with its own ideas, such as a Screener for first-time senders, separate Feed and Paper Trail views and reply-later. An agent can rebuild the second half over any IMAP account in a weekend, using imapflow and a few local tables. The first half is infrastructure: delivery to other people's spam filters, an address people trust and a vendor who promises to keep it yours. A self-built client still needs a paid mailbox somewhere, so it won't cut the bill by much.
Before you buildHEY has no free plan, only a 30-day trial. A free Gmail or iCloud mailbox with this client costs nothing, but you lose the @hey.com address.
Build me a personal mail client with a screener to replace HEY, on top of my existing IMAP mailbox. Requirements: - Node.js 22 + TypeScript: a Fastify server and a React UI built with Vite. `npm start` serves http://localhost:4890. IMAP_HOST, IMAP_USER, IMAP_PASSWORD (an app password), SMTP_HOST and the SMTP login are in .env. - Mail access: `imapflow` for the mailbox (INBOX, Sent, Archive), `mailparser` to read messages, `nodemailer` to send. Keep IMAP IDLE open on the INBOX so new mail appears within seconds. - Storage: better-sqlite3 in ./data/mail.db for sender decisions, message-to-view assignments and a header cache. Mail itself stays on the server; never copy bodies to disk. - Screener: a message from a sender you have never approved goes to a Screener list showing the sender and the first lines. Choose Imbox, Feed, Paper Trail or Screen out; later mail from that address follows the choice. Screening out marks mail as read and moves it to a Spam-like folder. - Views: Imbox, The Feed (newsletters, one scrolling page), Paper Trail (receipts), Screener, Sent and Everything. Group messages into threads using References and In-Reply-To. - Reply Later and Set Aside: store them as IMAP keywords ($ReplyLater, $SetAside) so they survive a reinstall; each has its own view with a count. - Privacy: sanitize HTML with `sanitize-html`, block remote images by default and show a "load images" button per message; proxy loaded images through the server so the sender sees the server's IP, not yours. - Single user, one password in .env. No accounts, no telemetry. Tests with vitest for the screener rules and the thread grouping. - Out of scope: running a mail server, a calendar, mobile apps, a HEY World blog, thread sharing, Clips. - README: getting an app password from Gmail, iCloud and Fastmail, and a warning that screening changes only your view: mail still arrives in the server's INBOX for other apps.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own HEY.
Add an MBOX importer to the mail client in this folder. Requirements: - A command `mail import-mbox <file>` that streams the MBOX file from HEY's Export Your Data, splits messages on From lines and uploads each one into an IMAP folder you name with `imapflow` append, keeping the original Date. - Skip messages whose Message-ID is already in that folder; print counts of added and skipped. - Run in dry-run mode by default and only write with --apply; handle files larger than 2 GB without loading them into memory. - Update the README.
Add a digest to the mail client in this folder. Requirements: - A setting that holds Feed messages out of the unread count and shows them only in a weekly digest page, newest sender first, with a "mark all read" button. - Detect the List-Unsubscribe header and show an unsubscribe link per sender; never click it for me. - Store the digest day and hour in the database and show the next one at the top of the Feed. - Update the README.
Add send-as aliases to the mail client in this folder. Requirements: - Let me list extra From addresses in .env; the compose form defaults to the address a message was sent to (To or Delivered-To) when it matches. - Show a warning when the SMTP server refuses an alias, with its error text. - Add the chosen From address to the Sent copy that is saved through IMAP. - Update the README with the SPF and DKIM caveat for aliases.
People pay for an opinionated inbox they didn't have to build, and for the promise that nobody mines it for ads. The screener keeps unknown senders out of the main view, and the apps work on every device without setup.
Estimate · The client runs on your computer for free and the mailbox is the only recurring cost: free with Gmail or iCloud, or whatever a hosted mailbox such as Fastmail charges. A small VPS adds about $5 if you want it on your phone. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| HEY for You | — | $8.25 | One @hey.com address, 100 GB of storage, the HEY calendar, a HEY World blog, apps for web, Mac, Windows, Linux, iOS and Android, spy pixel blocking. |
| HEY for Families | — | $14.92 | Up to four extra people, each with their own @hey.com address, calendar and account. |
| HEY for Domains | $12/user | — | Your own domain, several users, thread sharing, private team comments and aliases; the first user is $10 a month. |
A 30-day trial with no card needed; there's no free plan.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: The @hey.com address and a vendor that guarantees it stays yours, Native HEY apps for iOS, Android and desktop, with push notifications.
About $8.25 a month on the HEY for You plan per seat, $99 a year (checked 2026-10-19).
The @hey.com address and a vendor that guarantees it stays yours; Native HEY apps for iOS, Android and desktop, with push notifications; The HEY calendar and the HEY World blog; Mail hosting, spam filtering and delivery handled by someone else; Thread sharing and private comments, which HEY for Domains adds for teams. If any of those matter to you, keep paying.
Yes: Stalwart Mail Server (open source), Mox (open source), mailcow (open source).