{"slug": "stay-in-sight-everything-you-need-for-email-outbound-open-source", "title": "Stay-in-sight – everything you need for email outbound – open-source", "summary": "An open-source, MIT-licensed email outbound tool called Stay-in-sight has been released, running on Cloudflare Workers with a single D1 database and a passcode for access. The tool queues every email with a send time, enforces per-mailbox daily limits and spacing, supports mailbox warm-up and groups, AI personalization that rewrites each email from recipient data just before sending, AI-categorized replies posted to a webhook, and an MCP endpoint that lets Claude, Cursor or any MCP client import contacts, write templates, preview and schedule sends, and answer replies in-thread. It sends from real Gmail and SES mailboxes with no seats or per-contact pricing, and Cloudflare's free plan works at low volume.", "body_md": "### Sends that respect your limits\n\nEvery email is queued with a send time. A per-minute run sends what’s due within each mailbox’s daily limit and spacing, and auto-send spreads a big batch across as many days as it takes.\n\nOpen source · MIT · runs on Cloudflare Workers\n\nCold outreach, newsletters and drip series from your real Gmail and SES mailboxes. Every contact, email and reply lives in your own database, and an AI agent can run all of it.\n\nNo seats. No per-contact pricing. Cloudflare’s free plan works at low volume.\n\nOne Worker, one database, one passcode. Here is what’s inside.\n\nNew mailboxes start at a few emails a day and climb to their limit on a schedule you set.\n\nSeveral mailboxes send as one. Each email goes from the member with the earliest free slot, and follow-ups stay with the same address.\n\nA model rewrites each email for its recipient just before sending, from their contact data and your instructions, and can skip people.\n\nTemplate steps days apart, sent to everyone on a list, including people added later. Add steps any time.\n\nReplies are detected every minute or instantly with Gmail push, stripped of quoted history, categorized by AI against your own categories, and posted to your webhook with the whole thread.\n\nSTOP replies, unsubscribes, hard bounces and complaints are honoured automatically, scoped by mailbox purpose.\n\nA template reaches an address once, enforced by the database. Re-send to a growing list and only new people get it.\n\nEvery email, open, reply, list and series step for one address, across every mailbox, on one page.\n\nSend to lists\n\nSend to one or more lists, narrowed with the same conditions as the Contacts page, ordered by any field, and capped at the first N. The preview shows who gets it, who’s skipped and why, and the day-by-day plan before anything is queued.\n\nAI personalization\n\nTurn on AI for a template and write instructions in plain words. Just before each email goes out, a model rewrites it using that person’s data at that moment: their fields, lists, opens and replies. Test it on a real contact first and see the cost per email.\n\nWarm-up and mailbox groups\n\nGroup several mailboxes and send through the group. Each email goes from the member with the earliest free slot by its own limit, spacing and warm-up. Each mailbox has a purpose — cold outreach, newsletter or conversation — that decides how its mail is built.\n\nSeries\n\nAttach lists to a series and everyone on them works through the steps, a set number of days apart. Your app enrolls people by adding them to a list. New steps reach everyone who hasn’t had them, even people who had finished.\n\nReplies and webhooks\n\nEach human reply is categorized against categories you define, like interested, not now or referral, with your outreach context in the prompt. Auto-replies and bounces are filtered out. Your webhook gets the category, the whole conversation and the metadata you sent with the email.\n\nPerson timeline\n\nOpen any address to see every email from any mailbox, sender, list send or series, with opens, replies, list joins, series progress and do-not-send changes, newest first. It works for addresses that aren’t contacts too.\n\nEach mailbox declares what it’s for, and the mail it sends is built to match. You don’t need a separate tool for newsletters or for talking to customers.\n\nOne-to-one emails to people who haven’t heard from you.\n\nBulk mail to people who signed up.\n\nBack-and-forth with people who wrote to you.\n\nMCP\n\nPoint Claude, Cursor or any MCP client at your deployment and it can do everything you can in the app: import contacts, write templates, preview a send, schedule it through a group, read the replies and answer them in the thread.\n\n```\nclaude mcp add --transport http outbound https://<your-worker>/mcp \\\n  --header \"Authorization: Bearer <PASSCODE>\"\n```\n\nYou need a Cloudflare account and a Google account to send from. Everything else is optional.\n\nOne D1 database holds everything: contacts, emails, replies, settings.\n\n```\ngit clone https://github.com/yusufnb/stay-in-sight\ncd stay-in-sight && npm install\nnpx wrangler d1 create cms-outbound\nnpm run db:migrate\n```\n\nThe passcode protects the app, the API and MCP. It’s the only setting you can’t change in the app later.\n\n```\nnpx wrangler secret put PASSCODE\nnpm run deploy\n```\n\nCreate a Google OAuth client with the Gmail API, paste it into Settings, and click Connect Google mailbox. Add an OpenRouter key for AI, and SES for newsletters, whenever you like.\n\n```\n# redirect URI shown in the app:\nhttps://<your-worker>/oauth/google/callback\n```\n\nFull walkthrough, including Gmail push, SES and one-command tenant deploys: [the setup guide](https://stayinsight.sleeksite.ai/docs/guide).\n\nHosted tools like lemlist, Instantly and Smartlead are faster to start and come with lead databases and warm-up networks. Stay in sight trades those for ownership, no seat pricing and an agent-first API.\n\n|  | Stay in sight | lemlist | Instantly | Smartlead | \n|---|---|---|---|---|\n| Where your data lives | Your own Cloudflare D1 database | Vendor cloud | Vendor cloud | Vendor cloud | \n| How you pay | Nothing for the software; hosting from $0 | Monthly, per user | Monthly plans | Monthly plans | \n| Source code | Open, MIT licensed | Closed | Closed | Closed | \n| Agent access | 64-tool MCP server + REST API | API | API | API | \n| Newsletters with one-click unsubscribe | Yes, newsletter mailboxes | Not the focus | Not the focus | Not the focus | \n| Built-in lead database | No, bring your own | Yes | Yes | Yes | \n| Warm-up | Volume ramp only | Engagement network | Engagement network | Engagement network | \n\nThe software is MIT licensed and costs nothing. You pay Cloudflare for hosting (the free plan works at low volume; Workers Paid is $5 a month), your existing Gmail or Workspace, and, if you use them, Amazon SES and an OpenRouter model for AI.\n\nGmail mailboxes connect with OAuth and send through the Gmail API, so emails sit in your Sent folder and replies thread normally. SES mailboxes send through SES’s API, with tracked reply addresses routed back to the Worker by Cloudflare Email Routing.\n\nIt is built to avoid that: per-mailbox daily limits and spacing that are always on, warm-up, jittered spacing for cold outreach, no tracking pixel on cold mail, one-click unsubscribe on newsletters, and automatic do-not-send for STOP replies, bounces and complaints. Your sending practices still matter most.\n\nIt has one passcode for the app, the API and MCP, so it suits a founder, a small team sharing access, or an agent. There are no per-user roles. Deploy a separate tenant per client with one command if you run outreach for others.\n\nBring your own: import a CSV, or have your app or agent add contacts through the API or MCP with any fields you like. Every field becomes a {{variable}} and is visible to AI personalization.\n\nAdd the /mcp endpoint to Claude Code, Cursor or any MCP client with your passcode as a Bearer token. Agents can preview and schedule sends, manage lists and series, read categorized replies and answer them in the thread.\n\nDeploy it to your own Cloudflare account today. Your mailboxes, your data, your rules.", "url": "https://wpnews.pro/news/stay-in-sight-everything-you-need-for-email-outbound-open-source", "canonical_source": "https://stayinsight.sleeksite.ai/", "published_at": "2026-11-12 19:14:37+00:00", "updated_at": "2026-11-12 19:22:29.040322+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "ai-tools", "developer-tools", "generative-ai"], "entities": ["Stay-in-sight", "Cloudflare Workers", "Cloudflare", "Gmail", "Amazon SES", "Claude", "Cursor", "MCP"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/stay-in-sight-everything-you-need-for-email-outbound-open-source", "markdown": "https://wpnews.pro/news/stay-in-sight-everything-you-need-for-email-outbound-open-source.md", "text": "https://wpnews.pro/news/stay-in-sight-everything-you-need-for-email-outbound-open-source.txt", "jsonld": "https://wpnews.pro/news/stay-in-sight-everything-you-need-for-email-outbound-open-source.jsonld"}}