Skip to content

vul-os/vesend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vesend



Transactional email that belongs to you.

A clean, Resend-inspired API for sending email — open-source, self-hosted, running on AWS SES today and Vulos Deliver as it matures.

License: MIT Go Build

Part of the Vulos OS suite  Vulos


Status: deprioritized. vesend is not under active development. The Vulos suite's current focus is Mail and OS; vesend is kept available as-is and is effectively community-maintained. It has not been deprecated or removed — but expect no roadmap work, and use it at your own risk. If you depend on it, pin a commit and be prepared to maintain your own fork.


What is vesend?

We love what Resend did for developer email — a clean JSON API, instant setup, and a developer experience that finally made transactional email feel good. vesend takes the same philosophy and puts it on infrastructure you own and control.

vesend is a transactional email API server shipping as a single self-contained Go binary. Point it at AWS SES and get a clean REST API for sending email, managing custom domains, issuing scoped API keys, and receiving HMAC-signed delivery webhooks — with no external database and no cloud dependency.

It is developer infrastructure — not a Workspace product tile. Deploy it alongside your app, or run it as a shared service for your organisation. Hat tip to Resend for raising the bar.

curl -sX POST https://send.yourdomain.com/v1/emails \
  -H "Authorization: Bearer vsk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "from":    "hello@yourdomain.com",
    "to":      ["customer@example.com"],
    "subject": "Welcome aboard.",
    "html":    "<p>You are in. <strong>Let us go.</strong></p>",
    "text":    "You are in. Let us go."
  }'

Features

  • Single binary, no database — embedded bbolt by default; no external services required for self-hosting
  • Postgres seam — set DATABASE_URL to share one Neon/Postgres instance with other Vulos products (all tables in the vesend schema)
  • AWS SES backend — Easy DKIM, suppression list, rate limiting, sandbox detection; Vulos Deliver takes over as it matures
  • Clean send APIPOST /v1/emails and POST /v1/emails/batch with HTML, text, headers, and base64 attachments
  • Custom sending domainsPOST /v1/domains returns the full DNS record set (DKIM CNAMEs, SPF, DMARC, custom MAIL FROM) for multi-tenant sending
  • Delivery eventsGET /v1/emails/{id} for status; HMAC-signed webhooks for email.sent, email.failed, email.bounced, email.complained
  • Scoped API keysvsk_ prefix, sha256-hashed at rest, per-key rate limiting, fine-grained scopes
  • Open-core — fully self-hostable; Vulos Cloud adds metering, billing, and managed multi-tenancy

Quick start

git clone https://github.com/vul-os/vesend.git
cd vesend

export AWS_REGION=us-east-1
export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...

go run ./cmd/vesend
# open http://localhost:8080/healthz

On first start, a bootstrap admin key is printed to stdout. Use it to create scoped keys for your apps.

See docs/GETTING-STARTED.md for the full walkthrough.


API surface

Method Path Scope Description
POST /v1/emails send Send a single email
POST /v1/emails/batch send Send up to 100 emails
GET /v1/emails/{id} send Get delivery status
POST /v1/domains domains:write Add a custom sending domain
GET /v1/domains domains:read List domains + DNS records
POST /v1/domains/{id}/verify domains:read Poll verification status
POST /v1/keys keys:write Create a scoped API key
GET /v1/keys keys:write List active keys
DELETE /v1/keys/{id} keys:write Revoke a key
POST /v1/webhooks webhooks:write Register webhook endpoint
GET /v1/webhooks webhooks:write List webhooks
DELETE /v1/webhooks/{id} webhooks:write Remove a webhook
GET /healthz Liveness probe

Full reference: docs/API.md


Part of Vulos

Vulos is an open, self-hostable web OS and app suite. vesend is the email infrastructure layer of that ecosystem — usable entirely standalone as developer infrastructure, or integrated with Vulos Cloud for managed metering and multi-tenancy.

Other Vulos products: Mail (mail + calendar + contacts), Talk (team chat), Meet (video), Office (collaborative docs), Workspace (the open suite shell).


Building

go build ./cmd/vesend   # produces ./vesend binary
go test ./...           # hermetic — no AWS credentials needed

Storage backends

Mode How to activate Notes
bbolt (default) No env var needed Single-file embedded DB; self-hosted single-binary; no external services
Postgres Set DATABASE_URL or VULOS_DATABASE_URL Schema vesend; shared Neon database; run vesend migrate up first
# Postgres — Neon or self-hosted
DATABASE_URL="postgres://user:pass@host/db?sslmode=require" vesend migrate up
DATABASE_URL="postgres://user:pass@host/db?sslmode=require" vesend

Dependencies

Library Role
vulos-deliver SES/SMTP sender, DKIM/SPF/DMARC record generation
go.etcd.io/bbolt Embedded key/value store (default backend)
github.com/jackc/pgx/v5 Postgres driver + connection pool (cloud backend)

Documentation


License

MIT — © 2026 Vulos Contributors

About

Open-source transactional email API — a self-hostable, Resend-inspired service on Amazon SES (and Vulos Deliver). Send + batch, custom domains/DKIM, webhooks, opt-in tracking, usage API. Single Go binary, MIT.

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors