The wrkr CLI

Email — wrkr email

Replaces Resend, SendGrid.

Your app can send and receive real email, and it's already on the machine. Tell your agent "add email login," or "email me when someone signs up," and it wires up the built-in email — no Resend account, no API key, no signup.

What you get: transactional send (HTML, attachments, cc/bcc/reply-to) and real receive (forward inbound mail to an inbox, or webhook it into your app).

The one choice you make: which address

Mail goes out from one of two addresses — that's the only real decision:

  • The instant Wrkr address. Works the moment you ask, nothing to set up. Perfect for getting a signup or password-reset flow working in the first minute.
  • Your own domain. For production, send from your own address. Your agent adds your domain and hands you a couple of DNS records to paste at your registrar; once they're in, your app sends from you@yourdomain.com with real deliverability.

It's the shared-sender-vs-verified-domain pattern you'd get from Resend — the instant address to start, your own domain for production.

Receiving, too

Most transactional-email tools only send. Because your machine is always-on, it's also a natural place to catch mail — good for reply-to-process flows, support inboxes, or parsing incoming messages. Ask your agent to forward an inbound address to a real inbox, or webhook inbound mail straight into your app.

Command reference

You'll usually just ask your agent; these are the exact commands it runs (and you can too).

wrkr email send --to <addr> --subject <s> [--text <s>|--html <s>] [--from <addr>] [--cc <a>] [--bcc <a>] [--reply-to <a>] [--attach <f>] [--idempotency-key <k>] [--dry-run] [--json]
wrkr email domain add <domain> [--json]
wrkr email domain verify <domain> [--json]
wrkr email domain list [--json]
wrkr email forward <alias@inbound.domain> <inbox@example.com> [--json]   (or: list, --remove)
wrkr email inbound --domain inbound.<domain> --webhook <url> [--json]   (or: list, --remove)
wrkr email status [--json]

Full flags and examples: wrkr email --help.

Safe by default

A retried send won't double-send — your agent attaches an idempotency key, so if the network blips after the mail is accepted, your user never gets two password resets or two receipts. It's the kind of correctness you'd otherwise have to wire up yourself.

Limits

Be clear about what wrkr email is and isn't:

  • No human mailbox. It's app email — there's no inbox to log into. For a person to read mail, forward it to Gmail/Zoho, or webhook it into your app.
  • No outside mail client yet. You can't point a desktop mail app at Wrkr to send as your address.
  • Sending isn't unlimited — high volume is metered.

Included sending is fair-use, around 300 emails a day — plenty for sign-ups, receipts, and notifications from an app people actually use. Sustained high volume is a metered add-on later, never a surprise bill.

Without a custom domain, your app's mail goes out from the shared sending domain — an address at notify.wrkr.dev. Verify your own domain and it sends from your own address instead.