AiAx Mail
closed preview Get a mailbox

Mailboxes for your agents, on record in the EU.

AiAx Mail gives an autonomous agent a real address with a real inbox behind it: receive, thread, reply, attachments, delivery events. Every mailbox, every message and every attachment stays in eu-north-1, Stockholm, on every plan, including the free one.

AiAx Mail is in closed preview. There is no sign-up and no sign-in today. This page describes what is being built: no card, the key minted by the first call, and sending unlocked once a human has verified the account, with a typed error until then and never silence.

the first call
# one unauthenticated call. a key and a mailbox come back.
curl -X POST https://api.aiaxmail.com/v1/agent/sign-up \
  -H 'content-type: application/json' \
  -d '{"human_email":"compliance@example.com","username":"invoice-review"}'

# => { "api_key": "aim_live_...",
#      "inbox": "invoice-review@k7m2qp.mail.aiaxmail.com",
#      "region": "eu-north-1",
#      "sending": "locked_until_human_verified" }
record book · records.example.com
TypeNameValue
TXT_agentmail-challenge.recordsaiax-domain-verification=069a6627d2619e84712c65c078d24d01
MXrecordsinbound-smtp.eu-north-1.amazonaws.com (10)
TXTrecordsv=spf1 include:amazonses.com ~all
CNAMEk7r4qm2a9x3wfhb2n8v6s1tzq4pldc7e._domainkey.recordsk7r4qm2a9x3wfhb2n8v6s1tzq4pldc7e.dkim.amazonses.com
CNAMEp3xd91vc5m0ky7wa2r8h4bfzn6qte1sj._domainkey.recordsp3xd91vc5m0ky7wa2r8h4bfzn6qte1sj.dkim.amazonses.com
CNAMEz8h5tn6b1qw3xr9m0v7dcp4ley2ksfj8._domainkey.recordsz8h5tn6b1qw3xr9m0v7dcp4ley2ksfj8.dkim.amazonses.com
MXbounce.recordsfeedback-smtp.eu-north-1.amazonses.com (10)
TXTbounce.recordsv=spf1 include:amazonses.com ~all

8 records, generated. This table is live markup, rendered by the same code that renders the docs reference - not a capture of a running product, but not a video either. It cannot show a record set the docs disagree with.

inbox · procurement@records.example.com

The same thread, from the agent's side. It reads the procurement mail, matches the thread, drafts the confirmed reply and keeps the Message-ID, so the answer lands on the same conversation in Outlook, Gmail and Apple Mail.

events · live stream
deliveredmsg_8f21
deliveredmsg_8f21
bounce, hardmsg_8e04

The same event, twice. Delivery state is recomputed from the whole event set every time, so a duplicate or an out of order event cannot corrupt what you are reading.

Drag the windows. The code, the record book and the event rows are live markup; the terminal is an animation we rendered from an invented example, not footage of a running product.

Region
eu-north-1
DKIM records
3 CNAME
First send
after human check

[ try it before you sign up ]

Put an approval question on the record. The mailbox writes back.

This is the loop the product is for: mail arrives, an agent reads the thread, an agent replies. Every other demo in this category proves that a message can be emitted. This one shows the reply coming back.

  • 01 Nothing is sent as email. The exchange is rendered in your browser and discarded. No message leaves this page, no address of yours is stored, and no mail is ever delivered to anyone.
  • 02 Bounded by construction. Five exchanges, thirty minutes, then the mailbox is discarded. This preview replies from a fixed script rather than a model, so it cannot be talked into anything and nothing you type is sent anywhere.
  • 03 What the real thing adds. Real inbound over SMTP, threading that holds the Message-ID across Outlook, Gmail and Apple Mail, and a delivery event stream. This preview has none of that; it shows the shape of the loop, not the mechanism.
Demo mailbox
audit-intake-4417@demo.aiaxmail.com
Expires
30:00
Left
5/5
audit-intake agent
This preview inbox stands in for an invoice-approval process. Ask which message approved invoice 2026-184, how its PDF is retained, or where the record is stored.

[ what this is ]

A mailbox, a thread, and a record of what happened to both.

Transactional senders give an agent a way to emit a message. That is not the hard part. The hard part is the second message, the one a human writes back.

  • 01 Inboxes
    POST /v1/inboxes
    One address per agent, created in a single call, receiving immediately. On <slug>.mail.aiaxmail.com with no DNS at all, or on your own domain once it is verified.
  • 02 Threads that survive the reply
    Message-ID preserved
    We set the Message-ID on send and it is the id that comes back on In-Reply-To. Outlook, Gmail and Apple Mail all thread against it, so a conversation stays one conversation.
  • 03 Attachments, content addressed
    sha256, stored once
    The same contract sent to nine agents is stored once. Every message points at the blob, and the raw MIME is kept alongside it so a dispute can be answered from the original bytes.
  • 04 Delivery events you can trust
    recomputed, not incremented
    Bounces, complaints and deliveries arrive out of order and more than once. Delivery state is recomputed from the whole event set every time, so a duplicate event cannot corrupt what you are looking at.
  • 05 Events on your laptop, before any deploy
    WebSocket and SSE (planned)
    No public URL, no tunnel, no webhook endpoint to stand up first. Webhooks are what production needs, and they will be signed. Streaming is what an evaluation needs. Both are planned, and neither accepts traffic yet.

[ your domain ]

We put the mailboxes on a subdomain, so your company mail cannot break.

An MX record cannot be split by local part. If agent mail and company mail share one MX, delivery for both is decided by whichever server answers first. So we do not put them there. records.example.com is the default, it is prefilled, and your existing MX record is never part of the change.

If you want outbound to read @example.com anyway, there is a send-only path: SPF and DKIM on the apex and no MX on the apex itself. It does publish one MX at bounce.example.com, which carries bounces back to us and accepts nothing addressed to you. Your inbound MX is untouched, and replies land on the subdomain. Microsoft 365 and Google Workspace keep every message they receive today.

Two topologies, chosen on purpose

  • recommended records.example.com
    Own identity, own reputation, own MX. Nothing on the apex changes.
  • advanced example.com, sending only
    SPF and DKIM on the apex, no MX there. Your inbound MX is not part of this.

Receiving on your apex is refused by construction: there is no "full migration" option and no way to force one.

DKIM is three CNAME records. There is no 255 character TXT value to split into quoted halves, so the single most common setup failure in this category is not a failure we can have.

[ where it lives ]

Stockholm, on every plan, including the free one.

Raw MIME, parsed messages, attachment blobs, delivery events, ledger and backups are in eu-north-1. Not a European front door onto American storage. The whole pipeline is there, on every plan, with nothing to ask for.

The region is a deployment parameter rather than a constant, so a second stack elsewhere is a configuration change. What is not configurable is which one you are on: your account names its region and it does not move without you.

Where each thing sits
Raw MIME, as receiveds3, eu-north-1, SSE-S3 (AES-256)
Parsed message and threadpostgres, eu-north-1
Attachment blobss3, eu-north-1, content addressed
Delivery and bounce eventssqs and postgres, eu-north-1
Ingress ledgerpostgres, hash chained
Outbound relayamazon ses, eu-north-1

[ for the agent reader ]

You do not need the browser. Here is the whole contract.

One unauthenticated call mints a key and a mailbox. That key can receive immediately and cannot send until the human named in the call has verified. Every call that fails returns a code you can branch on and a fix you can act on.

  • 01No silent failuresA send before verification returns 403 verification_required with the exact next call. It does not accept the message and drop it.
  • 02Branch on code, never on messageMessages are written for humans and will be reworded. Codes are part of the contract.
  • 03Plain text everywhereaiaxmail.com/llms.txt for the map, /llms-full.txt for the whole reference with samples inline. Every docs page is served as markdown at the same path with .md.
error contract
# POST /v1/inboxes/inb_8f2a/messages/send
# HTTP/1.1 403
{
  "code": "verification_required",
  "message": "This key can receive mail but cannot send yet.",
  "fix": "POST /v1/agent/verify with the 6 digit code sent to c***@example.com",
  "docs": "https://aiaxmail.com/docs/errors#verification_required",
  "retry_after": null
}

[ who's behind this ]

Who's behind this

Børge Gjeldvik

Børge Gjeldvik - Cofounder and Chairman

Founder and CEO of Axess for 22 years, today an international engineering and inspection company with offices in 15 countries. EY Entrepreneur Of The Year Norway 2025.

Joachim Pettersen Høgby

Joachim Pettersen Høgby - Cofounder and CEO

Deep IT and business experience from leadership roles in international companies, specialising in AI development and in scaling and operating software and technology products. Has led national and international programmes serving millions of users across industry, retail and the public sector, and works as technical project lead on several of them.

Erik Skarbøvik

Erik Skarbøvik - Chief Financial Officer

More than ten years in corporate finance, previously with Converto Capital, Nordea Investment Banking and Alpha Corporate Finance. MSc in Finance from NHH.

Two ways in. Both end at a working mailbox, once the preview opens.

A human will sign in and get a console. An agent will post once and get a key. The verification gate is the same for both, and it is the only thing standing between a new account and outbound mail.

npm i @aiax/mail

[ questions ]

The questions an agent, and its owner, tend to ask first.

Plain answers, the same facts the API returns. Data stays in Stockholm, sending waits for a human, and nothing here needs a card.

What is AiAx Mail?
AiAx Mail gives an autonomous agent a real email address with a real inbox behind it. It receives, threads, replies, handles attachments and delivery events, all through one API. It is in closed preview: there is no sign-up and no sign-in today.
Where is my email data stored?
Every mailbox, message and attachment stays in eu-north-1, Amazon's Stockholm region, on every plan, including the free one. Raw MIME, parsed messages, attachment blobs, delivery events, the ledger and backups are all in eu-north-1. It is not a European front door onto American storage.
Can an agent send email immediately?
No. A new key will receive mail immediately but will not send until a human has verified the account. Until then every send returns a typed 403 verification_required error with the exact next call, never silence.
What does it cost to start?
AiAx Mail is in closed preview, so there is nothing to start today. No card will be required. The API key and a mailbox will be minted by the first unauthenticated call, and eu-north-1 data residency is included on every plan, including the free one.
Do I need my own domain?
No. You will be able to start on a free mailbox such as invoice-review@k7m2qp.mail.aiaxmail.com, minted on a subdomain of your own with no DNS at all, or connect your own domain once it is verified. Custom domains go on a separate subdomain such as records.example.com by default, so your company mail cannot break.