Webmail built for
Stalwart

A modern, self-hosted email client powered by the JMAP protocol. Email, calendar, contacts — fast, private, and open source.

demo.bulwarkmail.org

John Doe

john@example.com

Red
Orange
Yellow
Green
Blue
Purple
Pink
Search mail... (press /)
SC
Sarah Chen
10:32 AM

Q4 Product Roadmap Review

Hi team, I've attached the updated roadmap for Q4. Please review the priorities and...

GH
GitHub
9:15 AM

[webmail] New pull request #142

feat: Add calendar drag-and-drop rescheduling with snap to 15-minute intervals...

AM
Alex Morgan
Yesterday

Re: Weekly standup notes

Thanks for sharing. I think we should also discuss the migration timeline in the next...

ST
Stripe
Mon

Your invoice is ready

Invoice #2026-0312 for $49.00 has been generated. View your invoice and payment...

DP
David Park
Mar 7

Design system updates

Hey, I've pushed the new component library changes. Can you check the button...

No more emails to load

[webmail] New pull request #142

Wed, Mar 11, 2026, 09:15 AM
GH
GitHub

noreply@github.com

To: john@example.com

Wed, Mar 11, 2026, 09:15 AM

4.2 KB

@devops-bot opened a new pull request:

feat: Add calendar drag-and-drop rescheduling

Adds the ability to reschedule calendar events via drag-and-drop with snap to 15-minute intervals. Includes undo support and optimistic UI updates.

Changes: 12 files changed, +847 −203

Reviews: 1 approval, 0 changes requested


You are receiving this because you are subscribed to this repository.

JD
Write a quick reply...
DP

New email

Re: David Park — Design system updates

Feature-rich

Everything you need
in a webmail client.

Full Email Experience

Read, compose, reply, reply-all, forward with threading, attachments, draft auto-save, virtual scrolling, color tags, and drag-and-drop organization.

Calendar Integration

JMAP Calendar (RFC 8984) with month, week, day, agenda views. Drag-and-drop rescheduling, resize, recurring events, iTIP invitations with RSVP from email.

Contacts & vCard

Contact management with JMAP sync (RFC 9553/9610), vCard import/export, groups, autocomplete in composer, duplicate detection, and bulk operations.

Powerful Search

JMAP filter panel with search chips, cross-mailbox queries, and advanced filtering by sender, date, attachment and more.

Real-time Push

JMAP EventSource for live updates. Instant unread counts, email arrival notifications, and connection status indicator.

Privacy & Security

SPF/DKIM/DMARC indicators, external content blocking, DOMPurify sanitization, TOTP 2FA, OAuth2/OIDC with PKCE, and trusted senders list.

Identity Management

Multiple sender identities with per-identity signatures. Sub-addressing (user+tag@domain.com) with tag suggestions and identity badges.

Sieve Email Filters

Visual rule builder for server-side filtering (RFC 9661). Conditions, actions, raw Sieve editor with syntax validation, and drag reorder.

Email Templates

Reusable templates with placeholder variables, organized by category. Template picker in compose toolbar with search and filter.

Vacation Responder

JMAP VacationResponse with date range scheduling. Settings tab for message configuration and sidebar indicator when active.

Keyboard Shortcuts

Full keyboard navigation for power users. Navigate, compose, archive, delete, star — all without reaching for the mouse.

Light & Dark Themes

System-aware theming with smooth transitions. Three-pane layout with responsive design for desktop and mobile.

8 Languages

English, French, Japanese, Spanish, Italian, German, Dutch, Portuguese. Auto-detection with persistent preference.

Easy Deployment

Docker images on GHCR (amd64/arm64). Runtime env vars, health check endpoint, structured logging, and update check on startup.

Screenshots

See it in action

A polished interface designed for productivity.

Login
Comparison

How Bulwark compares

See how Bulwark stacks up against other webmail clients and hosted providers.

Feature★ This projectBulwarkRoundcubeRainloopSOGoGmailOutlook
JMAP Native
Self-Hosted
Calendar
Contacts
Real-time Push
Dark Mode
i18n (8+ langs)
Modern Stack
Privacy First
Docker Deploy
Mobile App
Plugin Ecosystem
Offline Mode
Under the hood

Modern tech stack
zero compromises.

Next.js 16

App Router with Turbopack

TS

TypeScript

Type-safe codebase

Tailwind CSS v4

Utility-first styling

🐻

Zustand

Lightweight state management

JMAP

JMAP Protocol

RFC 8620 — native, not bridged

i18n

next-intl

Internationalization for 8 languages

DOMPurify

HTML sanitization for email safety

Lucide Icons

Beautiful, consistent iconography

date-fns

Modern date utility library

Architecture

How it works

No custom REST API between the browser and the mail server. JMAP is the API.

Browser

React + Zustand

JMAP (RFC 8620)Direct connection

JMAP Server

Email, Calendar, Contacts

Auth Bootstrapping Only

Next.js API routes handle credential encryption (AES-256-GCM), httpOnly cookie management, and OAuth 2.0 PKCE token exchange. After auth, the browser talks JMAP directly.

Zustand Stores

Feature stores (email, calendar, contacts, sieve, etc.) are initialized conditionally based on server capabilities discovered via JMAP session.

Get started

Deploy in seconds

One command to install. Or use Docker / build from source.

1# One-line install
2curl -fsSL https://bulwarkmail.org/install | bash
Community

Get involved

Bulwark is MIT-licensed and developed in the open. Bug reports, translations, and code contributions all happen on GitHub.

bulwarkmail /webmail

A modern webmail client built on the JMAP protocol

FAQ

Frequently asked questions

Everything you need to know about Bulwark.

Ready to take control of your email?

Self-host your webmail with Stalwart. No tracking, no ads, no compromises.