The project
VizMail is a desktop email client built with MAUI .NET 10. The initial goal was straightforward: a local mail client that reads the inbox, displays threads, manages labels. The goal that emerged along the way was more interesting: expose everything via an HTTP API so that AI agents can read and process emails without going through a browser.
Without an API, an agent is blind: it can't read incoming mail, archive, reply, or trigger any action. With a clean API, an agent can do all of that programmatically — and an app like Lain can orchestrate these flows without human intervention.
Stack
- UI: MAUI .NET 10 (native Windows desktop)
- Database: SQLite via EF Core (messages, threads, labels, sync state)
- Email protocols: IMAP (MailKit) + Outlook via Microsoft Graph API
- HTTP API: .NET HttpListener embedded in the MAUI process, documented via a Markdown skill served by the API itself
- Tests: xUnit, 131 tests covering services, handlers, and API endpoints
Features
34 features shipped, organized across four domains:
Reading and navigation
- Unified inbox with pagination
- Thread view (grouped conversations)
- Full-text search across messages
- Filters by label, read/unread status, sender
Message management
- Mark read/unread (individual and bulk)
- Archive, delete, move
- Custom labels + system labels (inbox, sent, archive, trash)
- Attachment handling (list + download)
HTTP API for AI agents
- Full REST endpoints covering all operations above
- Local token authentication (no external OAuth to configure)
- Markdown documentation auto-served by the API (
/api/skill), always in sync with the server - Structured JSON responses designed to be consumed by an agent without fragile parsing
Synchronization
- Incremental IMAP sync (IDLE + polling fallback)
- Outlook sync via Microsoft Graph (delta queries)
- Conflict handling and offline local state
Development method
VizMail was built entirely through agent-driven development with KittyClaw as the orchestrator. Each feature was a ticket assigned to a programmer agent. The agent wrote the code, a qa-tester agent verified it, a committer agent pushed it. No code was written by hand.
This approach delivered 34 features with 131 tests and 0 regressions — with no cascade debugging days, because every change was tested before being committed.
The full retrospective on building the HTTP API is available in How I Built the VizMail API with AI Agents.
Results
| Metric | Value |
|---|---|
| Features shipped | 34 |
| Automated tests | 131 |
| Regressions | 0 |
| Status | Shipped ✓ |
What this demonstrates
VizMail isn't a "learn MAUI" project. It's proof that agent-driven development works on a complex business domain (mail, synchronization, network protocols) with strong quality constraints (0 regressions, 131 tests). The HTTP API wasn't in the original spec — it emerged because the tooling (KittyClaw + agents) made adding it frictionless.

