Any SMTP server. Sends through your provider; nothing routes through us.
Where to get it
Any SMTP server you already have — your mail provider, a relay, or a self-hosted Postfix.
Install / what you need
Nothing to install. You need an SMTP host, port, and credentials (app password recommended).
How to connect
- 1 Have your SMTP host + port + username/app-password ready.
- 2 Open the dashboard's Notifications panel → Add destination → choose email, paste them (stored in the vault).
- 3 Hit Send test on the destination card.
- 4 Confirm the test mail lands and the receipt appears in the dashboard's Delivery log.
When you'd use it
What Herald sends through this channel
8 setup fields
Herald hands every alert to the
EmailAdapter
as a DispatchPlan. The fields
below are what the dashboard form asks for; the sample is the plan the adapter receives.
The adapter renders it into the channel-native shape (Discord embeds, Teams MessageCards,
PagerDuty Events-API payloads, TwiML, JSON POST bodies) on the way out — that wire transcript varies per channel.
Setup form fields
| field | type | required | description / default |
|---|---|---|---|
| transport | string | optional | no description · default: "smtp" |
| smtp_host | string | optional | no description · default: "" |
| smtp_port | integer | optional | no description · default: 587 |
| smtp_user | string | optional | no description · default: "" |
| smtp_password_secret_ref | string | required | Vault secret reference name; resolved at adapter init. Holds the SMTP password (transport=smtp) or the Resend API key (transport=resend_api). |
| from_address | string | required | no description |
| use_starttls | boolean | optional | no description · default: true |
| timeout_seconds | number | optional | no description · default: 10 |
Sample DispatchPlan (input to the adapter)
{
"decision_id": "tdc-2026-06-20-abc12",
"channel": "<channel-type>",
"recipient": {
"recipient_id": "soc-oncall",
"display_name": "SOC on-call",
"addresses": [
{
"channel": "<channel-type>",
"address": "<destination>",
"min_defcon": 5
}
]
},
"urgency": "high",
"retry_policy": {
"max_attempts": 3,
"initial_backoff_seconds": 5
},
"subject": "Suspicious login on CEO-LAPTOP",
"body": "Warden flagged a PowerShell child of WINWORD.EXE. The encoded command resolved to a base64-wrapped Invoke-WebRequest to a newly-registered domain. Trust ladder: L3.",
"approval_link": "https://app.cybercli.local/approve/abc12",
"incident_ref": "case-2026-0142",
"signal_id": "sig-2026-06-20-9f3"
} Sovereignty: byo_external · Min tier (BYO): free · SMTP via stdlib or Resend HTTPS API; secret from CredentialVault.
CyberCLI hands the message to YOUR SMTP server over your network. We never see it.
Herald — the Guild's voice role — routes alerts, daily digests, and AI verdicts here, on a per-CYCON-state matrix you control. CYCON 1/2 alerts repeat until an operator acks.
The Guild →