# 2026-04-28 Evening — IMAP Proxy Live, Dashboard Updated ## IMAP Proxy — Phase 6.2 Foundation (20:05 UTC) **Status:** ✅ Infrastructure wired and dashboard live **Credentials:** Pending Matt's iCloud app-specific password ### What was built - `imap_proxy/` module in hoffdesk-api: - `proxy.py` — IMAPProxy class with IDLE support, provider presets (iCloud/Gmail/Outlook/Yahoo), app-specific password auth - `dashboard_router.py` — `/imap/status`, `/imap/metrics`, `/imap/dashboard` endpoints - Auto-start on server startup if `IMAP_USER` + `IMAP_PASSWORD` env vars set - Dashboard updated: - IMAP Proxy card added to main dashboard (auto-refreshes every 10s) - System health card now includes IMAP proxy status - CSS for IMAP-specific styling - Auth bypass for `/imap/` prefix (health/metrics, no sensitive data) ### Endpoints - `GET /imap/status` — JSON proxy status (provider, connection, emails processed) - `GET /imap/metrics` — Recent email processing metrics - `GET /imap/dashboard` — HTMX fragment for dashboard embed - Dashboard at `family.hoffdesk.com` now includes IMAP card ### To activate iCloud Mail 1. Generate app-specific password at appleid.apple.com 2. Add to hoffdesk-api `.env`: ``` IMAP_PROVIDER=icloud IMAP_USER=your_email@icloud.com IMAP_PASSWORD=xxxx-xxxx-xxxx-xxxx ``` 3. Restart server → proxy auto-connects via IMAP IDLE ### Architecture - Outbound-only (appliance-initiated, no inbound tunnels) - IMAP IDLE for real-time push notification - Fallback poll every 30s if IDLE unsupported - Auth circuit breaker: 3 consecutive failures → alert Matt, silence - Zero-config ingress: iCloud App Password → IMAP IDLE → Document Pipeline ### Files Modified/Created - NEW: `hoffdesk-api/imap_proxy/__init__.py` - NEW: `hoffdesk-api/imap_proxy/proxy.py` - NEW: `hoffdesk-api/imap_proxy/dashboard_router.py` - MODIFIED: `hoffdesk-api/main_v2.py` (added IMAP router + startup/shutdown hooks) - MODIFIED: `hoffdesk-api/dashboard/router.py` (IMAP health check) - MODIFIED: `hoffdesk-api/shared/session_auth.py` (IMAP auth bypass) - MODIFIED: `shared/project-docs/dashboard/templates/index.html` (IMAP card) - MODIFIED: `shared/project-docs/dashboard/static/style.css` (IMAP styles)