Capability surfaces

Communications, canonical.

Email and SMS are first-class capability surfaces in Vadyl, not bolted-on services. EmailRuntimeCompiler and SmsRuntimeCompiler produce per-project runtime descriptors. Vendor-neutral provider factories let you swap SendGrid for Postmark, Twilio for Vonage, without touching handler code. Branchable per environment. Audited through the canonical observability relay.

Email transports

Pick a vendor. Or run SMTP.

SendGrid · Postmark · SES · Resend · SMTP

Five canonical email transports. Vendor-neutral provider factory. Switch by changing a binding — no handler refactor.

EmailRuntimeCompiler

Per-project compiled runtime descriptor. Inheritance through the project hierarchy. Branchable per environment. Cache-coherent across instances via the canonical invalidation bus.

Secret refs only

API keys live in the key ring, referenced by the binding. Raw credentials never appear on the entity row, never appear in audit trails, never appear in observability.

SMS transports

Same shape. Different physics.

Twilio · Vonage · MessageBird · AWS SNS

Four canonical SMS transports. Same vendor-neutral pattern. Same secret-reference model. Same canonical observability surface.

Branchable bindings

A staging branch can point Twilio at a test sub-account. Production stays on the live account. Branch and environment are the right layering — not a feature flag.

Capability-aware delivery

Vadyl honors per-vendor capability differences. SMS providers that support shortcodes, MMS, regional routing — all surface as DbCapabilities-style flags. Handlers don't branch on vendor.

5+
Email transports

Vendor-neutral

4+
SMS transports

Same shape

Branchable
Per env

Real isolation

Auditable
Every dispatch

Through the canonical relay

Send mail. Send SMS. Without lock-in.

Bind a vendor. Reference the secret. Send. Switch the binding when the contract expires. Your handler doesn't care.