Point it at any IMAP mailbox. Every message lands in Postgres so you can query email like any other table.
// query it
Once your email is in Postgres, you can do anything with it. Agents, search, dashboards, alerts. Here are the queries I actually run.
-- recent messages select m.internal_date, m.from_email, m.subject, m.flags from imap_messages m where m.deleted_in_provider = false order by m.internal_date desc limit 50; -- full body when you need it select m.subject, b.body_text, b.body_html, b.raw_bytes from imap_messages m join imap_message_bodies b on b.message_id = m.id where m.id = '…'; -- sync health select email_address, sync_state, sync_state_reason, priority_sync_lag_seconds, overall_sync_lag_seconds from imap_accounts;
// or don't
Same code. Same schema. Data still lands in your Supabase. The only thing different is I run the worker.
Honest: I'm one person. The hosted version is a small Fly worker per customer. If five hundred of you sign up tomorrow I'm going to have a rough Tuesday. I would love that problem.
// who
I built this because every AI email tool I wanted to use integrates with Gmail. Some with Outlook. None with Rackspace, which is what our company is on.
So I wrote the sync myself. Then I pulled it out of our app, stripped the proprietary bits, and put it on GitHub. If it saves you a few weekends, cool.
Federico