Your IMAP accounts in one stream

Every inbox, one fast stream.

Spindle syncs your mailboxes into one unified inbox you can drive from the keyboard. Lists and search read mail that is already synced, so they never wait on your provider.

JKmove Earchive Zundo ⌘Kcommands

Works with the mail you already have

Features

Built for clearing your mail, not just reading it.

Instant, because it’s synced

Message metadata is mirrored into Spindle in the background. Lists, conversations and search read local data, so you never wait on a provider.

One unified stream

Every connected account merges into one paginated inbox. Filter to a single account or folder when you need to.

Triage with a safety net

Archive, trash, pin, mute, snooze and batch-select at full speed. Mail actions can be undone for five seconds.

Compose that does it right

Rich text, drafts that sync to your provider, real reply threading, reply-all, formatted forwards, per-account signatures, Send later and an optional five-second cancel window.

Live updates

IMAP IDLE watches your inbox between regular checks, and changes stream to every open tab as soon as they are synced.

One app, every screen

One responsive app with semantic controls, visible focus and keyboard access. There is no separate mobile site to fall behind.

Keyboard-first triage

Get through a hundred emails without touching the mouse.

Single-key shortcuts cover the work you do all day. Mail actions can be undone for five seconds, so you can move fast. Press ⌘K to find any command.

Security & privacy

We treat every incoming email as hostile.

Your mailboxes hold your whole life, so Spindle is built in layers. If one layer fails, the others still protect you.

Isolated message rendering

Email HTML is sanitized, then shown from a separate content origin that never receives your app cookies.

Private image proxy

Remote images are blocked by default. Allowed images use Spindle’s privacy proxy by default. Settings let you choose automatic loading or direct browser loading.

Encrypted mail credentials

IMAP and SMTP passwords are encrypted at rest with a versioned key ring kept apart from the database.

TLS everywhere

IMAP and SMTP must use implicit TLS or required STARTTLS. Spindle never sends a login in cleartext.

Private by design

Every mailbox belongs to exactly one person. There are no shared inboxes, and admins get no access to your mail.

Scanned attachments

Files you send are checked by a private ClamAV scanner first. Failed or unavailable checks block sending.

Hosted or self-hosted

Run it yourself, or let us run it for you.

Hosted

The hosted beta is invite-only. Use the address that received your invitation, verify it, then connect your accounts.

  • Verified email and password sign-in
  • Private mailboxes, one owner each
  • Public sign-up at full release
Create an account

Self-host

# 1. Get the source and set your secrets
git clone https://github.com/staplett/spindle
cd spindle && cp .env.example .env   # set AUTH_SECRET

# 2. Start Postgres, Mailpit and ClamAV in Docker
npm ci && npm run db:up
npm run db:migrate && npm run dev

Runs on Postgres. Packaged releases and the full guide for OAuth apps, the reverse proxy, TLS and backups are still in progress.

Questions

Does Spindle store a copy of my email?

Yes. Spindle keeps message headers, flags and folders in its own database so every view opens instantly. Message bodies and attachments are downloaded when you first open them, then cached within storage limits. Disconnecting an account deletes its local copy and never deletes mail from your provider.

Which providers are supported?

Any IMAP/SMTP server that supports TLS, including Fastmail, iCloud and Yahoo with an app password. Native Gmail and Microsoft 365 connections are planned but not available yet.

How do new messages arrive?

Spindle watches your inbox with IMAP IDLE where the server supports it and checks every account about once a minute. Synced changes stream to your open tabs straight away.

Can I undo an action?

Read, archive, trash, move and restore actions show an Undo option for five seconds. Undo send adds a five-second cancellation window when enabled. Turn it off in Settings to make immediate sends eligible without that delay.

What does self-hosting need?

Node 24, Postgres and an SMTP relay for sign-in email. Running the optional ClamAV service enables outgoing attachments.

Does it work on my phone?

Yes. The same app adapts to your screen, from a phone to an ultrawide monitor.

Spend less time in your inbox.