Define email templates, send via your own SMTP or SES account, track opens and clicks, manage unsubscribes. Your owned Mailchimp transactional tier without the $25/mo.
Every operation in Pony Express is available through a JSON REST API. No SDK required — use curl, fetch, or any HTTP client.
GET /api/deliveries — list all deliveries with optional search and filter query parametersPOST /api/deliveries — create a new delivery recordGET /api/deliveries/{id} — retrieve a single delivery by IDPUT /api/deliveries/{id} — update an existing deliveryDELETE /api/deliveries/{id} — remove a deliveryGET /api/stats — aggregated statistics with status breakdownGET /api/health — health check endpoint for monitoringSaaS tools hold your data hostage. Export formats are incomplete, migrations are painful, and pricing changes whenever the vendor feels like it. Pony Express stores everything in SQLite on your own server. Your data is a file you control, back up, and query directly.
A non-profit with no DevOps budget downloads the Pony Express binary, sets two environment variables, and runs it on the same Linux box that handles their email. It has been running for three months without intervention. When they need to update, they download the new binary and restart the process.
Start Pony Express with a port and a data directory. It creates its SQLite database on first run and serves both the API and the dashboard on the same port. Create deliveries through the web interface or POST JSON to the API. Filter by channel, subject, or search by keyword. Update records with PUT, delete with DELETE. The stats endpoint returns aggregate counts grouped by status for monitoring.
GET /api/deliveries — List all deliveries. Supports ?q=keyword for search and ?status=value for filteringPOST /api/deliveries — Create a new delivery. Send JSON with at least recipientGET /api/deliveries/{id} — Fetch one delivery by IDPUT /api/deliveries/{id} — Update fields on an existing deliveryDELETE /api/deliveries/{id} — Remove a deliveryGET /api/stats — Returns total count and breakdown by statusGET /api/health — Returns {"status":"ok"} for uptime monitoringSelf-hosted transactional email sender. Self-hosted on your infrastructure. Your data never leaves your server.
curl -fsSL https://stockyard.dev/install.sh | sh -s -- --tool ponyexpress
PORT=8930 ./ponyexpress
http://localhost:8930
Single binary. Embedded SQLite. No Docker. No database. No dependencies.
Your license key arrives by email within 5 minutes of checkout. Set it as an environment variable and restart the binary.
export PONYEXPRESS_LICENSE_KEY=stockyard_xxxxxxxxxxxxxxxxxxxx ./ponyexpress
No cloud connectivity required. The binary validates the key offline with Ed25519 signatures.