marclou / mailcheap
git clone https://github.com/marclou/mailcheap.git
Newsletters where you pay for the emails you send, not for dormant subscribers, at a fraction of the price of beehiiv and the like. Open source: self-host it, or use mailcheap.ai.
+9
stars, 24h · #1,554
+~63
stars, 7 days · #1,976
+1.3k
stars, 30 days · #416
1.3k
★ total · +5% this week
335
forks · 15 open issues
Star history (as recorded here)
LanguageJavaScript
LicenseAGPL-3.0
Created2026-10-10 (12d ago)
Last pushtoday
Watchers3
OwnerUser
GitHub topics
ai-agentsamazon-sesbeehiiv-alternativeemailemail-marketingmailchimp-alternativemcpmcp-servermongodbnewsletternextjsself-hostedsubstack-alternative
Links
- GitHub: github.com/marclou/mailcheap
- Homepage: https://mailcheap.ai
- Releases · Issues · Hacker News mentions
README excerpt
MailCheap Newsletters where you pay for the emails you send, not for dormant subscribers. A fraction of the price of beehiiv and the like. Website · API docs · Sign up for MailCheap Cloud MailCheap is a newsletter app: write an issue, send it to your list, publish it on the web, from the dashboard or from your AI agent. This repository is the whole app. Self-host it with your own Amazon SES or PostShiba account, or use MailCheap Cloud, which runs this same code. ## Features - **AI agents and the dashboard.** Everything the dashboard does also works from an AI agent through the MCP server, and from code through the REST API, with the same checks and limits. ChatGPT, Claude and Grok Bot connect with OAuth; Claude Code, Codex and Cursor with an API key. MCP marks sending as an action that can't be undone, so agents ask you first. - **Write, review, send.** Write in an editor with slash commands, images and boxes, or send Markdown or a complete HTML email through the API and MCP. Review shows what to fix before sending: subject, preview text, unsubscribe link, Gmail's 100 KB clip, postal address, sender. Then send it, schedule it, or start with your most engaged readers and send to more later. - **Imports from beehiiv, Substack and Mailchimp.** Their CSV exports import as they are, with each reader's status and signup date, and so do Kit's, MailerLite's, Buttondown's, Ghost's and EmailOctopus's. - **A website for each newsletter**, on a free subdomain on MailCheap Cloud (` .mailcheap.ai`), or on your server: every issue gets a page search engines can find, with a signup form, an author page, share images and a sitemap. - **Sending from your own domain**, with the DKIM, return path and DMARC records to add and a check for each. On MailCheap Cloud, a newsletter without a domain sends from its own shared address, `hello@ .mailcheap.ai`. - **Deliverability protections**, built in: - warm-up: contacts the account never emailed go out as a 5% slice first, and the rest 3 hours later if the slice's bounces and complaints stay low. On MailCheap Cloud, an account's sends also speed up as it proves clean volume; - list cleanup, on by default: readers who ignored several issues get one "do you still want this?" email, then stop getting issues; - contact cleaning: imports leave out invalid, misspelled (gmial.com), spam trap, role, throwaway and duplicate addresses, domains that can't receive email, and anyone who unsubscribed, bounced or complained before; - one never-email list for the whole server: an address the email provider says doesn't exist (for 180 days) or that turned out to be a spam trap (for good) is left out of every account's imports, signups and sends, and only a keyed hash of it is kept; - spam and bounce limits: a send pauses past 2% hard bounces or 0.08% complaints, and the account is blocked past 5% or 0.3%, or on a spam trap hit; - Gmail's spam rates, which Gmail never reports one complaint at a time: every email carries a `Feed