Self-built · Open standards
Mail, calendar, contacts, files and tasks over open protocols — a personal workspace no vendor can take away.
Leaving Google is easy to want and hard to do. Workspace is how I actually did it: a personal workspace built on Stalwart, speaking the open protocols it serves — JMAP for mail, CalDAV, CardDAV and WebDAV for the rest. Stalwart runs the engine; the client on top is mine. It started as an itch about billing pages and turned into the place my real mail lives.
Why
For years I paid Google Workspace to run mail for aliboyev.com and a handful of project domains, each with its own addresses. What the money bought was an admin console with genuinely terrible UX, billing pages and transactions I had to re-decipher every time, and yearly-commitment contracts — a soft lock-in with zero features to justify it.
Shopping for an alternative made it worse. Microsoft, Proton, the rest — the same disease in different forms: per-seat billing on some abstract notion of a 'user', APIs that are unusable or openly hostile to integration, and no story at all for automated or transactional mail. The moment you want to manage email freely — many domains, many addresses, software that sends mail — every provider bills you for seats and blocks you at the API.
The bet
Stalwart is, in my estimation, some of the best software sitting in the open right now: a modern mail server that speaks JMAP natively alongside the DAV family, built like someone actually cared. I judged it the best piece of the stack I wasn't going to write myself — and bet on it properly. No abstraction layer hedging the bet: the client is built for Stalwart, down to its management API and its Sieve scripting. What the bet rests on:
Everything the client reads and writes travels over JMAP, CalDAV, CardDAV and WebDAV — that's what Stalwart speaks, so the data lives in standard shapes. If a better client shows up tomorrow, the data doesn't move an inch. And because the server is standard, any standards client can point at it too — a Stalwart property that comes for free.
There is no server-abstraction layer waiting for a second backend. The client binds to Stalwart directly — its OIDC sign-in, its management API for domains and accounts, its Sieve for routing — and every surface gets the depth that only committing to one server buys.
Where mail comes in, where your hours and people and files sit — on infrastructure you operate. Leaving a provider becomes a DNS change, not a migration project.
Build story
I built UI-first, because the UI was the point — the pleasant workspace Google never gave me. Three attempts went into the trash. Not because they came out ugly; each one was fine. They died because the ideas kept shifting under me: everything ran on mocked data, and the real thing was always going to be different in ways I kept discovering one redesign too late.
The fourth attempt inverted the order. Integration first: sign-in against the real server, a JMAP client, and the ugliest inbox imaginable rendering my actual mail from production. Suddenly every design decision had something real pushing back, and the experience got better fast. The layering that survived — components render strings, hooks own the logic, services own protocol I/O — exists so the next redesign swaps components without touching what already works.
I was abstract-designing, and abstract design was wrong three times in a row. Real data is the only design brief that doesn't move.
In production
The mail side is not a demo. My personal domain — aliboyev.com — and my company's mail left Google and run on Stalwart, on infrastructure I operate: inbound, outbound, spam filtering, the whole surface. It has been my real, daily mail ever since, with SPF, DKIM, DMARC and MTA-STS all verified and enforced.
It has carried mail that mattered, too. This summer a job-process confirmation went out through this stack — self-hosted server, young domain, corporate inbox in the US — and landed inbox, not spam. I had a CC on it, so I watched it arrive.
The client is growing around that server, surface by surface. Mail, calendar, contacts, files and tasks all render live protocol data, JMAP push keeps the inbox current, and a Gmail importer moves years of history over the same open protocols — leaving a provider shouldn't cost you your archive.
Pricing
Workspace will not charge per seat. Ever. You pay for storage and usage — the things that actually cost something — not for an abstract 'user' multiplied by twelve months of commitment. That's not a growth hack; it's a product decision made by someone who spent years on the paying side of the other model.
What's ahead
Bad actors can wreck a domain's reputation — even an IP's. Self-hosted open source dodges most of that: your domain, your reputation, and Stalwart's posture is solid enough that mail doesn't get auto-flagged unless the receiving side is paranoid about young domains. The SaaS shape is a different animal — tenant-level reputation metrics, outbound spam detection, abuse warnings before a tenant poisons the well. I haven't hit those challenges yet, so I won't pretend to know how hard they are.
An inbox renders arbitrary HTML written by strangers, and it has to do it correctly, safely, and without wrecking UI performance — iframes are the lazy answer, not the plan. The bar is the vast majority of real-world mail displaying properly. Right alongside it on the list: detecting and disabling read-tracking pixels, so opening a message stops being a report to the sender.
What's next
Further out, AI features — thread summarization, smart reply, semantic search across mail — arrive routed through Wyolet Relay, the same gateway that already fronts LLM traffic for everything I build. Open protocols underneath, one workspace on top, and nothing about it that a vendor can switch off.