Skip to content
Scalpels home

Sign up now for $10 in credit on a new Laravel Cloud account.

Sesame

Any stack MIT licensed Experimental

Point your staging app's SES endpoint at Sesame and run real load through your real send path. Sesame draws a seeded outcome per recipient and posts signed SNS notifications back to your webhook, then tells you whether every one of them changed the right state. It is an experimental proof of concept: installing it provisions the web app, Postgres and a managed queue, with no scheduler so it can hibernate when idle and push-to-deploy turned off, but that install path has not been tested on Laravel Cloud, so it is not ready for real use.

Work in progress. Available to supporters.

Replaces
Billable SES simulator runs
Runs on
Your Laravel Cloud account
Needs
Compute · Database · Queue

What Sesame simulates

Proof of concept, validated against a local harness

  • SES v2 SendEmail

    Accepts Content.Raw requests from the stock AWS SDK and returns SES-shaped message IDs and error codes, including throttling.

  • Seeded outcomes

    Draws delivery, bounce, complaint, delay and reject per recipient from presets, and replays a run exactly from its seed.

  • Signed SNS notifications

    Posts event-publishing payloads signed with SignatureVersion 2, which the AWS PHP validator accepts once bound to Sesame's host.

  • Subscription confirmation

    Delivers nothing until your webhook fetches the SubscribeURL, so confirmation handling is exercised too.

  • SNS retry rules

    Retries only 5xx and 429 responses, drops everything else, and reports each drop and each webhook response time.

  • Ground truth for reconciliation

    Exposes the outcome drawn and every event's delivery status per message ID, so a run can check state, not just speed.

  • Correctness, not only throughput

    In the proof of concept a 15-minute plateau at 30 sends a second reconciled all 27,000 messages with no mismatches. That run used a local CRM-compatible harness, not a real consumer's staging environment.

  • Honest about what is unsettled

    Sesame acknowledges each send from a buffer on the instance and moves it to Postgres moments later, so deploying during a test run can lose sends from that run. Scalpels turns push-to-deploy off for that reason. The install has not yet been tested on Laravel Cloud, and whether ingest stays on Laravel Octane or moves to Rust is undecided.

Compared with other ways to test SES sending

A simulator for feedback loops under load

Sesame imitates SES and SNS so a staging run can measure sending and notification handling together. The alternatives below either use real SES, emulate the API locally, or capture mail for inspection, and each does things Sesame does not.

Sesame feature comparison
Feature Sesame Experimental proof of concept, install untested on Cloud Amazon SES mailbox simulator Real SES, simulator addresses LocalStack SES Local AWS API emulation Mailtrap Email Sandbox Hosted mail capture
Signed SNS feedback the row we rebuilt Does this well:Signed, real format Does this well:Real SNS Partly, or with a caveat:Test messages only Not built:Not built
Outcome mix at configurable rates the row we rebuilt Does this well:Seeded presets Partly, or with a caveat:Per-address scenarios Not built:Not built Not built:Not built
Reconciliation ground truth the row we rebuilt Does this well:Per message ID Not built:Not built Partly, or with a caveat:Sent mail list Partly, or with a caveat:Captured mail list
Load cost the row we rebuilt Does this well:No per-message fee Works, but on their terms:Billed per message Partly, or with a caveat:SES v2 is paid Works, but on their terms:Plan limits
Real SES behaviour we did not build this Partly, or with a caveat:Modelled, not real Does this well:It is SES Partly, or with a caveat:Emulated Not built:Not SES
Content and HTML checks we did not build this Not built:Not built Not built:Not built Not built:Not built Does this well:Spam and HTML
Other AWS services we did not build this Not built:SES and SNS Does this well:All of AWS Does this well:Many services Not built:Not built
Where it runs Partly, or with a caveat:Your Laravel Cloud account Works, but on their terms:AWS account Does this well:Your machine Works, but on their terms:Mailtrap service
Install today Partly, or with a caveat:Untested on Cloud Does this well:Available Does this well:Available Does this well:Available
Who operates it Partly, or with a caveat:You do Does this well:AWS does Partly, or with a caveat:You do Does this well:Mailtrap does
  • Does this well
  • Partly, or with a caveat
  • Not built
  • Works, but on their terms

The honest test

Sesame is the narrow fit when all of these describe what you need.

  • You want to load-test the send path and the SNS webhook together, repeatedly, without paying per message.
  • You need to know every event changed the right state, not only that the run was fast.
  • You can rerun a test that a deploy or an instance restart interrupted.

Keep paying them if

These tools do work Sesame deliberately leaves out.

  • You need proof against real SES, its real limits and its real notifications.
  • You emulate many AWS services together in local development.
  • You want rendering, spam-score and HTML checks on the mail itself.
  • You need something complete and supported today.

Sesame stays a simulator for staging feedback loops, not a mail-quality tool.

Be honest about it

You don't need us to run Sesame

The repository is public and open source. These are the steps, and you are welcome to spend the afternoon doing them by hand.

  1. 1

    Read the proof-of-concept report in the Sesame repository: what was demonstrated, against what, and what is still open.

  2. 2

    Install it from Scalpels with Postgres and a managed queue; it hibernates when idle. Push-to-deploy stays off; never deploy Sesame while a test is running, because that can lose sends from the run.

  3. 3

    In staging only, point your SES endpoint and SNS certificate host pattern at Sesame, keep the production guard that refuses simulator config, and reconcile each run against its ground truth.

Or become a supporter, and Scalpels deploys it for you. It forks it, provisions exactly what it needs on your Laravel Cloud account, and deploys it. The app and the infrastructure are yours either way — the only question is who spends the afternoon.

Deploy Sesame as a supporter

Want some help?

These agencies and freelancers are standing by and ready to help.

  • Scott Keck-Warren

    Michigan

    PHP and Laravel developer with 13 years of experience building and maintaining production apps. US Eastern, English.

    Freelancer Ask for help
    Ask Scott Keck-Warren for help
  • Artisan Build

    USA

    We run Scalpels, as well as a suite of other tools for developers and development teams.

    Agency Ask for help
    Ask Artisan Build for help

Sesame pairs with the rest of the suite

Sesame measures the simulator side of a run. Hone holds the consuming app's own telemetry for the same run, Wake collects its logs, and Sink is the simpler choice when you only need to capture outbound mail in staging or CI.