AV
angelvelasquez.dev
Mobile Systems Aporte Código Abierto

MacMirror - Espejo de Notificaciones Android a macOS

Utilidad de código abierto para reflejar notificaciones de Android en macOS en tiempo real sobre Wi-Fi local con cifrado E2EE y cero servidores.

MacMirror - Espejo de Notificaciones Android a macOS • Visualización de Producción
Mobile Systems
MacMirror - Espejo de Notificaciones Android a macOS
Distribución en Tiendas & Capturas
Cliente Android (Google Play) #1
MacMirror - Espejo de Notificaciones Android a macOS preview 1
App de macOS (Receptor Menu Bar) #2
MacMirror - Espejo de Notificaciones Android a macOS preview 2
Rol de Ingeniería
Open Source Author & Mobile Architect
Período
2026
Stack Arquitectónico
Kotlin 2.1 Jetpack Compose Swift 5.9+ SwiftUI WebSockets WebSocket ACK Protocol E2EE (AES-256-GCM) ECDH (Curve P-256) Bonjour / mDNS Foreground Service Homebrew Cask Tap
Métricas Arquitectónicas Clave
0 ms Cloud
Red Wi-Fi 100% Local
AES-256-GCM
Cifrado E2EE Autenticado
Homebrew Tap
Distribución macOS Cask
Enlaces Directos y Verificación: GitHub (Android) GitHub (macOS)

Resumen Ejecutivo

MacMirror es un ecosistema de código abierto compuesto por dos aplicaciones nativas (cliente Android y receptor macOS) diseñadas para transmitir notificaciones telefónicas hacia el entorno de escritorio en tiempo real. Elimina intermediarios en la nube, garantizando que el flujo de datos nunca abandone la red de área local (LAN) y opere con cifrado de extremo a extremo autenticado.

El Desafío Arquitectónico

  • Privacidad Estricta y Cero Dependencia Cloud: La mayoría de soluciones comerciales enrutan las notificaciones a través de servidores externos o servicios push de terceros. El desafío exigió estructurar un protocolo de descubrimiento y transporte exclusivamente local, seguro frente a redes compartidas.
  • Ciclo de Vida y Políticas Agresivas de Batería en Android: Mantener la conexión socket persistente contra Doze Mode y los gestores de procesos OEM (MIUI/HyperOS, One UI, ColorOS) sin degradar el consumo energético del dispositivo móvil.
  • Interoperabilidad Criptográfica Multiplataforma: Acordar llaves de sesión efímeras de forma transparente y determinista entre el runtime de Android (Java Cryptography Architecture) y el entorno de macOS (CryptoKit).
  • Trazabilidad y Verificación de Entrega: Asegurar que cada notificación enviada por el socket sea procesada con éxito y confirmada mediante un mecanismo de acuse de recibo (ACK) resiliente ante desconexiones transitorias de red.

Estrategia y Solución Implementada

  1. Descubrimiento y Handshake E2EE: Implementación de descubrimiento local mediante Bonjour/mDNS (_macmirror._tcp). La vinculación entre dispositivos utiliza un PIN numérico de un solo uso junto a un intercambio de llaves ECDH (Curva P-256). Las llaves de sesión se derivan vía HKDF-SHA256 y cada payload de notificación viaja cifrado con AES-256-GCM.
  2. Servicio en Primer Plano y Listener de Notificaciones: En Android, un NotificationListenerService captura los eventos entrantes y los procesa a través de un ForegroundService tipado (FOREGROUND_SERVICE_CONNECTED_DEVICE) con notificación silenciosa de baja prioridad. Esto garantiza estabilidad 24/7 y bypass controlado de optimización de batería.
  3. Receptor Nativo en Menu Bar (macOS): Aplicación de escritorio desarrollada en Swift y SwiftUI que se ejecuta en la barra de menú. Procesa los streams entrantes, desencripta en memoria y despacha alertas al sistema operativo mediante UNUserNotificationCenter, preservando íconos de aplicación y sonido.
  4. Control Granular por Aplicación: Interfaz en Jetpack Compose con arquitectura MVVM que permite al usuario filtrar selectivamente qué aplicaciones autorizan el reenvío de notificaciones, con caché asíncrona de íconos.
  5. Protocolo ACK y Diagnóstico Bidireccional: Comunicación bidireccional sobre WebSocket con emisión de ACK tras recibir y descifrar el frame, complementada con un flujo de diagnóstico interactivo de conexión para pruebas en vivo entre Android y macOS.
  6. Distribución Automatizada vía Homebrew Tap: Empaquetado oficial como Cask (brew install --cask angelvelasquezdev/tap/macmirror) con soporte de canales estable y beta, integrado a pipelines CI de GitHub Actions para la generación de instaladores .dmg y .apk.

Métricas Arquitectónicas Clave

  • 0 ms Latencia de Nube: Operación confinada a la red Wi-Fi local mediante WebSockets, eliminando costos operativos de infraestructura.
  • Cifrado Militar Autenticado: Payload protegido mediante AES-256-GCM con validación criptográfica en cada mensaje.
  • Distribución Rápida vía CLI: Instalación directa en macOS en un comando vía Homebrew Tap y releases reproducibles bajo licencia abierta MIT.