Apache-2.0 · early beta

Your email infrastructure. In your AWS account.

Keep the developer experience of a modern email API while Amazon SES handles delivery. Your queues, metadata, and message payloads remain under your control.

Latest packaged release: v0.2.0 This site tracks main and may describe unreleased changes.

  • Official Resend Node + Python SDKs
  • Single-tenant by default
  • No message bodies in logs
Delivery path owned
01
Your application Resend SDK or HTTP
02
HayaSend Your AWS account
DynamoDB SQS EventBridge
03
Amazon SES Delivery and events

Haya has no control plane in the default data path.

Transactional sending

Hosted templates

Inbound email

Signed webhooks

Scoped API keys

01 / Familiar

Use the interface your team already knows.

Point official Resend SDKs at HayaSend. Node and Python work without forks; the compatibility layer covers transactional sends, batches, scheduling, domains, webhooks, receiving, and hosted templates.

send.ts
import { Resend } from "resend";

const email = new Resend(
  process.env.HAYASEND_API_KEY,
  { baseUrl: process.env.HAYASEND_BASE_URL },
);

await email.emails.send({
  from: "Product <hello@example.com>",
  to: "person@example.net",
  subject: "Welcome",
  text: "Your account is ready.",
});

02 / Owned

Operational control without building a mail platform.

Data

Your account is the boundary.

Message payloads use private encrypted S3 storage. Metadata, idempotency claims, and templates use DynamoDB. HayaSend never logs message bodies.

Delivery

Queues make failure visible.

SQS retries, dead-letter queues, send leases, suppression checks, and signed webhook history expose the real delivery lifecycle.

Access

Least privilege is built in.

Issue hashed keys for sending, reading, templates, domains, or webhooks. Keep the bootstrap administrator secret out of application runtimes.

03 / Reviewable

Treat transactional templates like production code.

Reconcile repository-owned manifests into isolated drafts. Render with the same rules used for sending. Publish only the exact version your team reviewed.

  1. 01
    Push a draft hayasend templates push
  2. 02
    Render without sending hayasend templates render welcome
  3. 03
    Publish the reviewed version hayasend templates push --publish

Draft variables are typed and bounded. HTML values are escaped. Concurrent edits fail conditional publication instead of silently replacing production.

04 / Local first

Inspect the first send before it leaves your machine.

The hardened local container binds to loopback and includes an isolated preview inbox. No AWS credentials are required.

npx --yes @haya-inc/hayasend@0.2.0 init && docker compose -f compose.hayasend.yaml up -d --wait

Open the full quickstart

Built in public

The useful product stays open.

The self-hosted transactional path is Apache-2.0. Security fixes, API compatibility, deployment templates, queues, webhooks, receiving, and hosted templates are not held behind a paid plan.

Haya can earn by taking operational responsibility: migration, deployment, deliverability, hardening, incident response, upgrades, and future managed operations.

See the commercial boundary Model the AWS bill

Need accountability?

Own the infrastructure.
Bring in help when it matters.

Community support is free and best-effort. Haya, Inc. plans commercial migration, AWS hardening, deliverability, and operational support for teams that need a named owner.

Do not include credentials, AWS account identifiers, recipient data, or raw messages in public discussions.