v0.5.0 Jev, Zajel on GPT-5.6, and Send later

Webmail that sorts itself, sends on time and answers to you.

Zajel Mail brings your mail, calendar and contacts into one fast workspace on your own Stalwart server. Zajel, your agent, reads your day and proposes what to do. Jev sorts your Inbox and runs the rules you write in plain English. Nothing leaves your control.

mail.yourdomain.com/inbox
The Zajel Mail inbox in the dark theme, with Inbox tabs, folders and labels with icons, and a message open in the reading pane The Zajel Mail inbox in the light theme, with a contract email open in the reading pane

Built on open standards

  • JMAP
  • CalDAV
  • JSContact
  • Sieve
  • iCalendar
  • WebAuthn
  • Stalwart
Mail

An Inbox that keeps what matters on top.

Mail splits into Important, Updates, Newsletters and Promotions, each with its own unread count. Sort by dragging, with Move to tab, or let Jev do it. Messages never leave your Inbox; a tab only changes where you see them.

  • Search everything from any page with Ctrl K or /, across every folder, with filters you can clear in one click.
  • Sign-in codes, found for you. The code sits above the message with a Copy button that can send the email to Trash too.
  • Private by default. Remote images load through your server, and messages render in a sandbox with scripts off.
  • Remind Me Later parks a message until later today, tomorrow, the weekend or next week.
VERIFICATION CODE482913
A sign-in code email in the Updates tab, with the detected code and a Copy code button
The composer

Send it later. Take it back.

The composer opens in the corner, above the message you're answering, with everything you need in its toolbar and nothing you don't.

  • Send later: tomorrow morning, tomorrow afternoon, Monday, or any date and time. Your server sends it, so it goes out even with every tab closed.
  • Undo send gives you 5 to 30 seconds to change your mind.
  • Rich text, recipient chips, attachments, emoji, importance and a signature for each identity.
  • One + button starts a message, an event or a contact from any page.
The composer replying to Daniel, with the Send later menu open: tomorrow morning, tomorrow afternoon, Monday morning, or pick a date and time
Zajel, your agent

It reads your day. You make the calls.

Zajel searches your whole mailbox and calendar, a step at a time, until it can answer. It summarises, prepares and drafts, and it changes nothing until you confirm.

Summarize today's mail What's on tomorrow? Summarize this email Did the accountant send the Q3 figures? Create a task
  • Events and deletions arrive as cards that name the event and the date, and apply only when you click.
  • Tasks go where you work: Todoist, Linear, Notion, a webhook or an MCP bridge, after you confirm.
  • Your choice of model. OpenAI's GPT-5.6, sent with store: false, or any Ollama model, including one on your own machine.
gpt-5.6-terragpt-5.6-lunaollama
Zajel summarising today's mail: three things need a reply, then what's good to know and what can wait
Jev

Rules you can write in a sentence.

Jev is TypeSafe's decision model. It judges each new email once and answers with probabilities, so Zajel Mail can sort your Inbox, run plain-English rules and give a second opinion on spam.

It's an invoice, a receipt or a request for payment
  • Sorts new mail into tabs, and shows why. Unsure picks stay in Important, so nothing hides.
  • Learns from you. It never moves mail you sorted, your moves teach it, and pinned senders skip it entirely.
  • Spam and phishing checks beside Stalwart's filter: watch first, then let it act, never on your contacts.
  • Try it first. See where your last 200 emails would go before switching it on, account by account.
A Jev rule that moves invoices and receipts to the Receipts folder, with Normal 80% strictness
Calendar

Your CalDAV calendars, at a glance.

Month, week, work week, 3-day and day views over every calendar on your server, each in its own colour. It remembers the view you like.

  • Invitations show as an RSVP card right in the email.
  • Add to calendar turns "dinner Thursday at 8" into an event.
  • Reminders and notifications for what's coming up, and for anything new or changed.
TToday
MMonth
WWeek
FWork week
33-day
DDay
CNew event
←→Move
The week view with Work, Personal and Family calendars, and the Q4 roadmap review's details open
Contacts

One address book, everywhere you are.

Contacts live in Stalwart, so they stay in sync with your phone and any CardDAV app. They load with the page, so they're there the moment you click.

  • Lists for teams, family or the offsite crew, managed right from each card.
  • Import from Apple and Google with vCard or CSV, and a preview of every row before anything is written.
  • Compose email from any contact in one click.
Contacts: the list, contact lists in the sidebar, and Priya's card with email, phone, notes and lists
Make it yours

Every folder gets an icon. Every theme gets care.

Pick an icon for any folder or label from the full Lucide set of about 1,900, searchable by name and keyword, in the colour you choose.

  • Dark and light themes, comfortable or compact density, and a reading pane you can switch off.
  • Folders, labels, accounts and calendars each carry their own colour.
  • Several mail accounts under one sign-in, each with its own colour and photo.
Create folder: name, location, a colour palette and an icon picker
The + menu: Message, Event and Contact, beside the Zajel button
On your phone

The whole workspace fits in your pocket.

A bottom tab bar, folders in a drawer, full-screen reading, and the + and Zajel buttons right under your thumb. Install it from the browser as an app.

The inbox on a phone, with Inbox tabs and a bottom tab bar
Reading Daniel's dinner invitation on a phone
Today's schedule in the day view on a phone
And the rest

The details that make mail feel effortless.

Rules that run on the server

About a minute after mail lands, with every tab closed. See how many existing emails match before you save.

Auto-reply

A vacation message, deployed to your mail server as Sieve.

Trash that empties itself

After 7 or 30 days, if you want it to.

One-click unsubscribe

For every mailing list that supports it.

Sender avatars and trust

BIMI, favicons and Gravatar, cached once for every device. Trusted senders come from your address book.

Spam score in view

Stalwart's score and the authentication results beside every message, with reasons when one is flagged.

Notifications

New mail in the folders you choose, plus event reminders and changes.

Signatures

As many as you like, with a default for each identity.

Keyboard first

Search from anywhere, and drive the calendar without touching the mouse.

Print

A clean copy of any message.

Installable

A Progressive Web App with its own icon and an offline page.

Settings that follow you

Preferences live on your server, keyed to your login, with export and import.

Security and privacy

It holds the keys to your mail, so security comes first.

Your mail, contacts and calendars stay on your Stalwart server. Zajel Mail keeps its own secrets on the server too, and never in the browser.

A hardened master login

Hashed with scrypt (N=217), separate from your mail passwords, and locked for 15 minutes after 10 failed tries.

Passkeys

Sign in with WebAuthn, and see and revoke your active sessions.

Encrypted mail credentials

Linked account passwords are stored with AES-256-GCM, under a key derived from your own secret.

Sandboxed messages

Email renders in an isolated frame with scripts disabled, and remote images come through your server.

Secrets stay server-side

AI, Jev and task-app tokens are read only by server code. Session cookies are HttpOnly, Secure and SameSite=Strict.

An assistant that asks first

Zajel proposes replies, events, deletions and tasks. Nothing happens until you click.

Where your data goes

  • AI: only to the service you configure, OpenAI with store: false or your own Ollama endpoint.
  • Jev: only for accounts you switch on. Each email is sent once, trimmed to the first 2,000 characters, and the app keeps the probabilities, never the text.
  • Tasks and calendar changes: only after you confirm them.
Install

Up and running in a few minutes.

You need a JMAP mail server. Zajel Mail is developed and tested against Stalwart, which also serves your calendars and contacts.

Stalwart or another JMAP server Docker, or Node.js 22+ A TLS reverse proxy for remote access
  1. Get the code and the example configuration.

    git clone https://github.com/odaiameera/zajel-mail.git
    cd zajel-mail
    cp docker-compose.example.yml docker-compose.yml
  2. Set ORIGIN, JMAP_BASE_URL and a secret in docker-compose.yml.

    openssl rand -base64 32   # → WEBMAIL_SECRET
  3. Start it, then open your URL to create your login and link your first account.

    docker compose up --build -d

Add Zajel

Set one key to run Zajel on OpenAI, or point it at Ollama.

OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-5.6-luna   # optional

Add Jev

Add your TypeSafe key, then turn it on per account in Settings → Jev. No key yet? JEV_MOCK=1 lets you try it.

TYPESAFE_API_KEY=...

The full installation guide is in the README

Open source

MIT licensed, built in the open.

Bug fixes, features, docs and design polish are all welcome. Start with the contributing guide, and report security issues privately.