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.