Frequently Asked Questions (FAQ)
Answers to common questions about NornWeave.
What is NornWeave?
How is NornWeave different from services like AWS SES or Mailgun?
How is NornWeave different from AgentMail and other email-for-agents tools?
Can I use NornWeave without a transactional email provider?
EMAIL_PROVIDER=imap-smtp) that connects directly to any standard mail server—Gmail, Office 365, Fastmail, or self-hosted Postfix/Dovecot. Instead of webhooks, NornWeave polls the IMAP mailbox for new messages and sends outbound via SMTP. This is ideal when you don’t want a dedicated transactional email account. See the IMAP/SMTP Setup Guide for details.Can I use my own custom domain to send and receive email?
How do I avoid ending up in spam?
Do you have SDKs or clients available?
nornweave-client) in the clients/python directory, with sync and async support, pagination, and full API coverage. For AI agents, the MCP server is the primary interface: Claude, Cursor, and other MCP clients can use NornWeave’s tools and resources without writing REST calls. See the API Reference for REST and MCP Integration for MCP setup.Can I allow or block specific email domains?
Yes! NornWeave supports domain-level allow/blocklists for both inbound and outbound email via environment variables. Each list accepts comma-separated regex patterns matched against the domain portion of email addresses.
Environment variables:
| Variable | Direction | Effect |
|---|---|---|
INBOUND_DOMAIN_ALLOWLIST | Receiving | Only accept mail from matching sender domains |
INBOUND_DOMAIN_BLOCKLIST | Receiving | Reject mail from matching sender domains |
OUTBOUND_DOMAIN_ALLOWLIST | Sending | Only send to matching recipient domains |
OUTBOUND_DOMAIN_BLOCKLIST | Sending | Reject sends to matching recipient domains |
Example — only accept email from your company:
INBOUND_DOMAIN_ALLOWLIST=(.*\.)?yourcompany\.comExample — block spam domains:
INBOUND_DOMAIN_BLOCKLIST=spam\.com,junk\.orgBlocklist always takes precedence: a domain on the blocklist is rejected even if it also matches the allowlist. Empty lists mean “no restriction.” See the Configuration Guide for full details.
Can I rate-limit how many emails NornWeave sends?
Yes. NornWeave supports global send rate limiting via two environment variables:
| Variable | Effect |
|---|---|
GLOBAL_SEND_RATE_LIMIT_PER_MINUTE | Max outbound emails per rolling minute (0 = unlimited) |
GLOBAL_SEND_RATE_LIMIT_PER_HOUR | Max outbound emails per rolling hour (0 = unlimited) |
Both windows are enforced independently. When a limit is exceeded, the API returns HTTP 429 Too Many Requests with a Retry-After header so callers know when to retry.
Example — cap at 10 per minute and 200 per hour:
GLOBAL_SEND_RATE_LIMIT_PER_MINUTE=10
GLOBAL_SEND_RATE_LIMIT_PER_HOUR=200Rate-limit state is in-memory (no Redis required) and resets on process restart. See the Configuration Guide for details.
What do I need to get NornWeave running?
pip install nornweave && nornweave api. For production, we recommend PostgreSQL and Docker Compose. See the Installation guide and Quickstart.How does NornWeave format emails for my LLM?
user (inbound) and assistant (outbound) roles so you can feed them straight into an LLM conversation. All of this happens automatically in the Verdandi ingestion engine.Does NornWeave handle attachments?
POST /v1/messages request. Supported storage backends include local disk and cloud storage (S3, GCS) with presigned download URLs.