ems_…) used by
action.email. Cloud Studio and on-prem deployments use
the same Settings, API, CLI, and SDK surfaces. There is no default server
and no deployment-file fallback: each Send Email step must select a live
server.
This is not the platform Resend configuration used for Studio invitations
and inbound agent mail. Workflow outbound servers do not send those messages,
and platform mail is not a fallback for action.email.
Secrets (Resend API keys, SMTP passwords, and optional SMTP CA PEMs) are
encrypted at rest. List and get responses never return them; they expose
configuration flags such as apiKeyConfigured, passwordConfigured, and
caPemConfigured instead.
Owners and admins can create, update, test, and delete servers. Other members
can list and inspect the redacted view.
Studio
- Open Settings → Email servers.
- Add a server. Choose Resend (API key plus From name and address) or SMTP (host, security, port, optional username/password, optional CA PEM).
- Send a test message to confirm delivery.
- In a workflow, add Send Email and pick the server. The step stores the
stable
ems_…id.
with.server.
For SMTP, paste a custom CA as PEM on the server when you need one. There is no
filesystem CA path.
When you change an SMTP host or username, send a new password or clear
authentication (username: null). The previous password is never reused
against a new destination. Metadata-only updates and same-host, same-username
edits may omit the password to keep the stored value.
SMTP security defaults to STARTTLS. If you omit the port, Eigenpal uses 587 for
STARTTLS, 465 for TLS, and 25 for none. Use none only for trusted internal
relays; username and password are not allowed with that mode.
API, CLI, and SDKs
The public contract is/v1/email-servers:
Request and response schemas, including the paginated list envelope, live in
the API reference. Do not put secrets in query strings or CLI
flags.
The CLI matches that surface:
eigenpal email-servers for every subcommand and
flag. Provide Resend API keys, SMTP passwords, and CA PEMs with --*-stdin,
--*-file, or the secure prompt.
TypeScript (@eigenpal/sdk) and Python (eigenpal) wrap the same operations:
action.email delivery, including invoked child
workflows.