Nouvex Mail. Stack and specification.

An open-source mail client that brings every mailbox into one inbox. A sync engine in Go keeps the accounts up to date on your own server, and the apps on the web, iPhone, iPad and Mac fetch only what changed.

In development

As of October 2026

The way a mail travels

Apps

Web · iPhone · iPad · Mac

API

Hono · WebSocket

NATS

Commands · events

Sync engine

Go · IMAP · SMTP

Mail server

your provider

At a glance

The key figures of Nouvex Mail, backed by the code.

  • Stored encrypted

    Every message with its own key, sealed for its owner

    Sealed storage

  • Web and Apple

    One inbox on the web, iPhone, iPad and Mac, Android planned

    Web app and Apple apps

  • AGPL-3.0

    Server, engine and apps open source, SDK and components under Apache-2.0

    Licence

From the mailbox to the app

From a new account to the reply that leaves.

  1. Add an account

    Enter the IMAP and SMTP access, with presets for Gmail and iCloud on the web. The mailbox password is stored encrypted with the server's key.

  2. Sync

    The engine fetches the mailboxes and keeps a connection open with IMAP IDLE, so new mail in the inbox arrives at once.

  3. Seal

    Every message gets its own key and is stored encrypted for you, subject, sender and attachments included.

  4. Fetch

    The apps only ask what changed since they last looked, and open the mail on the device.

  5. Sort

    One inbox for every account. A small model per user sorts mail into tabs, and snooze is a folder that other mail apps see too.

  6. Reply

    Mail is written as plain text. Sending can be taken back for up to 30 seconds or scheduled for later.

The stack

Six parts with clear boundaries: the engine talks to the mail servers, the API to the apps.

  • Apps

    Web with React, Vite and TanStack, the mail in the browser's database. iPhone, iPad and Mac with SwiftUI and GRDB.

  • API

    Hono on Bun, the interface as OpenAPI from Zod schemas; the Swift client is generated from it. Events arrive over WebSocket.

  • Sync engine

    Go with go-imap and go-smtp. The only service that talks to mail servers and writes mailboxes.

  • NATS

    API and engine never call each other directly: commands go through a JetStream work queue, events via pub-sub.

  • Storage

    PostgreSQL 18 for metadata and the change log, S3-compatible storage for bodies and attachments.

  • Sealing

    HPKE per RFC 9180 with X25519 and AES-256-GCM. What the engine has stored, it cannot open itself.

Every mailbox.

One inbox.

Encrypted for you.

Specification

Accounts

Protocols
IMAP and SMTP
Connection
encrypted only, TLS or STARTTLS
Presets
Gmail and iCloud with an app password, in the web app
New mail
at once via IMAP IDLE, in the inbox
Sign-in with OAuth
for GmailPlanned

Inbox

Accounts
one list for all
Tabs
People, Updates, Newsletters, Promotions, Social
Sorting
a small model per user, on the same server
Groups
several accounts as one inbox, with focus times
Snooze
as a folder on the server, visible to other mail apps
Search
on the device, in subject, preview and sender
Filters
from:, to:, after:, before:, is:unread, is:starred, has:attachment, in:archived

Reading

HTML mail
sanitised with DOMPurify, without scripts
Dark mode
for the mail itself too, original on request
Unsubscribe
in one click per RFC 8058
Codes and meetings
briefly as a card in the sidebar
Pictures
through a proxy, optionally only after asking

Writing

Format
plain text, forwards keep the original
Attachments
up to 25 MB per message
Undo
up to 30 seconds after sending
Send later
with an outbox
Drafts
in the mailbox's Drafts folder
Signatures
per account

Security

Storage
one key per message, sealed for its owner
With the server key
mailbox passwords, outgoing mail, sorting model
Password
never leaves the device, PBKDF2 with 600,000 rounds
Sign-in
password, passkeys, TOTP
Accounts
set up by the operator, you choose the password
What the server sees
mail passing through, metadata, remote images, all named in the security doc

Platforms

Web
in the browser, mail stored locally
iPhone and iPad
iOS 18 and later, with push for new mail
Mac
macOS 26 and later, with a menu bar item and notifications
Android
laterPlanned
Interface language
English

Architecture

Engine
Go
API
Hono on Bun, 34 operations
Messaging
NATS JetStream
Database
PostgreSQL 18
Storage
S3-compatible
Operation
self-hostable with Docker

Licences

Server, engine and apps
AGPL-3.0
SDK, components, rich mail
Apache-2.0
Source code
public on GitHub

Status

Done
web app, sync engine, sealed storage
In testing
iPhone and iPad app through TestFlight, version 0.1.0
Open
stable release
Planned
Android, sign-in with OAuth, embeddable component

Questions about Nouvex Mail

Answered briefly; the details are in the specification.

Also on Nouvex

The other pages, in short.

  • KCity

    Departure monitor and journey planner for Karlsruhe, with stack, limits and specification.

  • Team

    Who designs and builds Nouvex.