Self-host · MIT licensed
Your box. Your disk. Your mail.
Run the Passband daemon on your own machine, NAS, or server. Your mail and your Google credentials never reach anything we operate, and the app connects to wherever the daemon lives.
Through a Google OAuth client you create.
Syncs, triages and stores your mail in SQLite, on loopback by default.
Paired to your daemon with a one-time code.
What reaches us: nothing, unless you turn on push notifications or read receipts, which carry no mail content. Every channel is on the trust page.
SETUP
Three steps. No account with us.
You need Docker, a Google account, and a Mac. The daemon runs anywhere Docker does; prebuilt images cover amd64 and arm64.
Create a Google OAuth client
Your daemon talks to Gmail as an app you own, so Google never sees us in the loop.
- Go to console.cloud.google.com and create a project
- Enable the Gmail API
- Configure the OAuth consent screen (External) and add yourself as a test user
- Create credentials: OAuth client ID, type Desktop app
Run the daemon
Prebuilt multi-arch images are public on GHCR, no registry login needed:
docker pull ghcr.io/passband-app/squelchd:latest
A minimal docker-compose.yml:
services:
squelchd:
image: ghcr.io/passband-app/squelchd:latest
restart: unless-stopped
ports:
- "127.0.0.1:8848:8848" # loopback only
volumes:
- squelch-data:/data
environment:
SQUELCH_ACCOUNT_EMAIL: you@gmail.com
SQUELCH_CLIENT_ID: ${SQUELCH_CLIENT_ID:?set in .env}
SQUELCH_CLIENT_SECRET: ${SQUELCH_CLIENT_SECRET:?set in .env}
volumes:
squelch-data:
The port stays on loopback; front it with
tailscale serve --bg 8848 or your own proxy to reach it
from your Mac. The full environment-variable reference and the OAuth
consent flow live in
deploy/DOCKER.md,
and
docs/GETTING-STARTED.md
walks a complete setup end to end: daemon in Docker on a NAS, Passband
on a Mac.
Get the app
brew install --cask passband-app/tap/passband
Point it at your daemon, pair the device, and you're done. Updates arrive in the app.
Nothing held by us
Your mail, search index and Google tokens live on your disk. We hold no copy and no key, so there is nothing for us to lose or hand over.
Your model, your key
Triage and the assistant use an Anthropic or OpenAI key you supply, under your own account. With no key, triage runs on local rules and no mail leaves the box.
Open source
MIT licensed, daemon and apps alike. Read the source on GitHub, threat model included.