Kestrel docs
Self-hosting Kestrel
These pages cover deploying and running your own Kestrel, from an empty repository to a live newsletter on your Cloudflare account. Writing and sending the newsletter is covered in Publishing. These pages call whoever writes and sends it the publisher, which may be you.
Get started
These are the steps to deploy a Kestrel instance and get it ready to send. Each one ends with a check, so you know it worked before you move on.
- 01 Deploy the app Kestrel runs as one Cloudflare Worker, with a D1 database for posts and subscribers and an R2 bucket for images.
- 02 Lock the dashboard with Access Cloudflare Access puts a login in front of the editor and the API.
- 03 Create an AWS account Kestrel sends the newsletter's email through Amazon SES, which runs in an Amazon Web Services (AWS) account.
- 04 Connect Amazon SES This page connects the app to Amazon Simple Email Service (Amazon SES), which delivers the newsletter's email.
- 05 Request production access Once Amazon SES is connected, request production access to start sending email to subscribers.
- 06 Verify it works This page checks your instance end to end with real email, while the list is empty and every email goes only to you.
- 07 Go live At this point, your instance should be deployed and verified.
Guides
Each one stands on its own. Pick the ones you need.
- Allow Claude to connect Connecting Claude to the instance lets the publisher draft, test, and schedule posts by asking for them in Claude.
- Automate with a service token A service token lets a script or scheduled job call the API, such as a job that drafts a weekly digest.
- Notifications through Cloudflare's email Kestrel emails the publisher when a send finishes, and right away when one runs into a problem. By default, these notifications go through the email provider.
- Rate-limit the subscribe form The subscribe form is public, so anyone can submit it, as often as they like.
- As your list grows A new instance runs on Cloudflare's free Workers plan with your starting Amazon SES limits. Workers Free suits a list of up to about 1,000 subscribers.
- Upgrade to a new release A new release of Kestrel is a new version of the @kurtbruns/kestrel package.
Reference
The detail behind the steps, for when you need it.