The first native macOS desktop app for Inco AI's Splash local inference engine
El primer app de escritorio nativo de macOS para el motor de inferencia local Splash de Inco AI
β‘ Monitor de Inferencia Local Splash en Apple Silicon (M3/M4/M5) con MΓ©tricas en Vivo de Tokens, Velocidad y Memoria Metal
Hasta ahora, Splash solo podΓa operarse desde la lΓnea de comandos. Splash Monitor transforma esa experiencia en una suite visual completa para macOS: monitoreo de mΓ©tricas en tiempo real, gestiΓ³n de modelos de Hugging Face con un solo clic, y lanzadores de agentes de cΓ³digo β todo desde un Γcono en la barra de menΓΊ o una ventana de escritorio nativa.
- π¬ MΓ³dulo Nativo de Chat & Playground Multi-Turn: Streaming en vivo SSE con
URLSession.bytes, soporte de razonamiento profundo (<think>) colapsable, formateo Markdown nativo, adjuntos de imΓ‘genes/cΓ³digo y exportaciΓ³n a Markdown. - π ConmutaciΓ³n de Modelos en Caliente (Hot-Swap): PΓldora interactiva en la cabecera y en la esquina inferior izquierda del chat para alternar instantΓ‘neamente entre modelos locales descargados.
- βοΈ Flags CLI por Modelo (
PerModelServerFlagsβ Resuelve #10): Argumentos CLI personalizados independientes por modelo (evita conflictos al usar--model-dir,--draft-modelo--mmproj). Aportado por @Thoralf-M. - π‘οΈ ProtecciΓ³n de Procesos al Salir (
ServerOwnershipβ Resuelve #11): El monitor solo detiene servidores que hayan sido iniciados por la aplicaciΓ³n, preservando instancias iniciadas externamente desde Terminal. Aportado por @Thoralf-M. - π₯οΈ Soporte MenΓΊ Bar en macOS 27 (Resuelve #9): Popover con altura fija de 460 pt y ancho ampliado a 600 pt evitando que colapse a 0 px en macOS 27.2. Aportado por @Thoralf-M.
- π MenΓΊ Nativo de Zoom y Atajos de Teclado: Atajos universales
β=(Zoom In),β-(Zoom Out) yβ0(Reset 100%) bajo VisualizaciΓ³n > Apariencia y selector en la cabecera del chat. - β¨οΈ Γrea de Entrada Compacta y EnvΓo con Enter: Barra de escritura horizontal de 34 px con envΓo automΓ‘tico al pulsar
Entery salto de lΓnea conShift+Enter. - π 100% InternacionalizaciΓ³n BilingΓΌe (EspaΓ±ol / InglΓ©s): Soporte completo en toda la app.
- π§ͺ 142 Pruebas Unitarias al 100% Passing: ProtecciΓ³n exhaustiva de regresiΓ³n y concurrencia segura.
|
|
|
|
|
|
Cada mΓ³dulo de Splash Monitor estΓ‘ optimizado para la experiencia nativa de macOS en Apple Silicon:
MΓ³dulo de Control del Servidor: Inicia y detiene el servidor Splash en un solo clic, cambia el modelo en caliente, configura el puerto, estado recurrente GDN en BF16 (-50% RAM), presupuesto de tokens de razonamiento, cachΓ© SSD persistente y lanza agentes autΓ³nomos: Claude Cowork (activaciΓ³n de app nativa con aliases para evitar errores 404), Claude Code CLI, OpenCode, Codex, Hermes, Pi Agent y DeepSeek Harness (`dsh`).
MΓ³dulo de Chat Nativo de IA: InteracciΓ³n conversacional en streaming ultrarrΓ‘pido (SSE con AsyncSequence), renderizado inteligente de Markdown con bloques de cΓ³digo y botΓ³n de copiado de un clic, proceso de pensamiento colapsable (Thinking), telemetrΓa en tiempo real por token (tok/s y latencia TTFT), historial persistente de conversaciones en disco y selector interactivo de temperatura y tokens.
MΓ³dulo de Rendimiento en Tiempo Real: Monitorea velocidades de generaciΓ³n de tokens (DECODE y PREFILL en tok/s), ratio de acierto y reutilizaciΓ³n de KV Cache, deduplicaciΓ³n de tokens, aceptaciΓ³n especulativa DFlash 2, latencias TTFT/ITL y uso de memoria unificada Metal (M3/M4/M5).
MΓ³dulo de Clientes Conectados: InspecciΓ³n automΓ‘tica de conexiones TCP activas contra el puerto de inferencia, reconociendo clientes como Claude Desktop / Cowork, DeepSeek Harness, Cursor IDE, VS Code y Chatbots con sus Γconos nativos y estado de transmisiΓ³n.
MΓ³dulo de GuΓa de ConexiΓ³n: Pasos y comandos de un clic para configurar el Gateway local en Claude Desktop, Cursor IDE, VS Code (Cline/Continue), Chatbox y scripts Python (OpenAI SDK / LangChain).
MΓ³dulo de Modelos: Control de modelos locales en disco con espacio utilizado, cambio en caliente y exploraciΓ³n del catΓ‘logo de Hugging Face con soporte para cuantizaciones oficiales NVIDIA (NVFP4 / FP8), variantes GGUF, guΓa asistida para repositorios protegidos (403 Gated) y modo --language-only para modelos de cΓ³digo y texto.
TelemetrΓa de Descarga en Tiempo Real: MediciΓ³n en vivo de la tasa de transferencia en MB/s (β‘οΈ 34.8 MB/s), barra de progreso continuo, contador exacto de GB descargados frente al total esperado y detecciΓ³n de fases (acelerador especulativo DFlash2, pesos del modelo y ensamblado Splash).
MΓ³dulo de Test y DiagnΓ³stico: Suite completa de verificaciΓ³n en un clic con Smoke Test (salud del servidor, disponibilidad Metal, plantilla Jinja, OpenAI Chat, Anthropic Messages y llamadas a herramientas/JSON), Benchmarking de velocidad con cΓ‘lculo del factor de aceleraciΓ³n del KV Cache y Playground interactivo de inferencia local.
MΓ³dulo de Ajustes: Selector de idioma (EspaΓ±ol Dominicano π©π΄ / English π¬π§ / macOS automΓ‘tico), configuraciΓ³n del Γcono en la barra de menΓΊ superior de macOS y frecuencia de refresco.
MΓ³dulo Informativo: InformaciΓ³n de versiΓ³n (v1.2.2-beta), arquitectura nativa en Swift 6 y Metal, licencia abierta MIT y crΓ©ditos de autorΓa de Joan Gregorio PΓ©rez (JMGREP Developers).
Splash Monitor es un monitor grΓ‘fico para el motor de inferencia local Splash de Inco AI. Antes de instalar Splash Monitor, necesitas tener Splash funcionando en tu Mac.
Instala Splash desde el repositorio oficial de Inco AI:
# Agregar el tap oficial de Inco AI e instalar Splash
brew install incoai/tap/splashπ Requisitos del motor Splash (segΓΊn incoai/splash):
- Mac con Apple Silicon M3 o posterior
- macOS 26.4 (Tahoe) o posterior
- 36 GB de memoria unificada (48 GB o mΓ‘s recomendado)
Los modelos se descargan automΓ‘ticamente en el primer uso. Consulta los modelos disponibles en huggingface.co/incoai.
Una vez que Splash estΓ© instalado y funcionando, instala Splash Monitor:
La forma nativa y recomendada en macOS. Al instalar mediante Homebrew, macOS no aplica cuarentena de navegador y la app abre de inmediato:
brew install --cask hometrix/tap/splash-monitor
β οΈ Comprueba la versiΓ³n que instala el cask. El cask del tap es un fichero aparte (hometrix/homebrew-tap) y puede quedarse atrΓ‘s respecto a las publicaciones de este repositorio: en la auditorΓa de la v1.0.2-beta el cask seguΓa sirviendo la 1.0.0-beta. Verifica conbrew info --cask splash-monitoroSplash Monitor.app/Contents/Info.plist. Si el cask estΓ‘ atrasado, usa la OpciΓ³n B o C, que siempre apuntan a la ΓΊltima publicaciΓ³n.
La forma mΓ‘s rΓ‘pida si no deseas usar Homebrew tap:
curl -fsSL https://raw.githubusercontent.com/hometrix/SplashMonitor/main/scripts/install.sh | bashβ‘οΈ Este comando consulta la ΓΊltima publicaciΓ³n en GitHub, descarga el DMG oficial, verifica su suma SHA-256 contra el fichero
SHA256SUMSpublicado y aborta si no coincide, lo monta, copia la app a/Applicationsy la abre automΓ‘ticamente. Fija una versiΓ³n concreta conSPLASH_MONITOR_TAG=v1.2.2-beta.
-
Descarga el instalador oficial: π SplashMonitor-1.2.2-beta.dmg
Y su suma de verificaciΓ³n: SHA256SUMS
shasum -a 256 -c SHA256SUMS # debe imprimir "OK" -
Haz doble clic en el
.dmgdescargado y arrastra Splash Monitor a Aplicaciones.
π‘οΈ Si macOS muestra: "Apple no ha podido verificar que no contenga software malicioso...": Este aviso lo impone macOS a todas las apps de cΓ³digo abierto sin licencia de pago de Apple. Para abrirla:
- Ve a Ajustes del Sistema en tu Mac.
- Haz clic en Privacidad y seguridad (en la barra lateral) y baja hasta Seguridad.
- Pulsa el botΓ³n "Abrir de todas formas" (Open Anyway).
O por Terminal (1 segundo):
xattr -d com.apple.quarantine ~/Downloads/SplashMonitor*.dmg
Requisitos:
| Requisito | VersiΓ³n MΓnima |
|---|---|
| Mac | Apple Silicon (M3, M4, M5) |
| macOS | 13.0 o superior |
| Xcode | 15+ o Swift 6.0 Toolchain |
| Splash Engine | incoai/tap/splash |
# 1. Clonar el repositorio
gh repo clone hometrix/SplashMonitor
cd SplashMonitor
# 2. Ejecutar la baterΓa de pruebas (142 pruebas, sin red ni motor real)
swift test
# 3. Compilar la app y generar el bundle .app
./scripts/build_app.sh
# 4. (Opcional) Generar el instalador DMG comprimido + SHA256SUMS
./scripts/create_dmg.sh
# 5. Iniciar la aplicaciΓ³n
open "Splash Monitor.app"π’ VersiΓ³n ΓΊnica.
Sources/SplashMonitor/Services/Version.swiftes la ΓΊnica fuente de la versiΓ³n, el identificador de paquete y el nΓΊmero de compilaciΓ³n. Los tres scripts los extraen de ahΓ consed: no hay que editar la versiΓ³n en varios sitios (antes se declaraba en cinco lugares y ya habΓan divergido entre sΓ).
swift test # 113 pruebas (100% de Γ©xito)
swift test --filter PollingTests # solo una suite
swift test --filter ServerOptionsTests # opciones CLI y Splash 1.3.2
swift test --filter SystemMemoryPressureTests # centinela de memoria macOSLas pruebas son hermΓ©ticas por diseΓ±o: usan un transporte de estado simulado, un
terminador de procesos simulado, un directorio temporal propio y bootstrapNetwork: false
(sin trΓ‘fico a Hugging Face ni a GitHub). Ninguna prueba envΓa seΓ±ales a procesos reales
ni escribe en tu ~/.zshrc. Cubren, entre otras cosas:
| Suite | QuΓ© protege |
|---|---|
VersionTests |
Orden semΓ‘ntico de versiones y unicidad de la versiΓ³n del producto |
ModelIDValidatorTests |
Rechazo de identificadores de modelo con inyecciΓ³n de shell y rutas .. |
ProcessIntrospectionTests |
Que nunca se seΓ±alice a un cliente conectado, solo a escuchas del motor |
ServeLockTests |
Lectura de serve-<puerto>.lock, bloqueos vacΓos, corruptos y huΓ©rfanos |
ShellEnvironmentTests |
Contenido del entorno, reversiΓ³n exacta del ~/.zshrc y consentimiento |
ModelSizeCacheTests |
Que el sondeo no vuelva a recorrer el Γ‘rbol de modelos en cada ciclo |
PollingTests |
Que el panel siga detectando el motor tras detenerlo o arrancarlo tarde |
ClientTerminationPolicyTests |
Que no se termine un PID reciclado ni la propia app |
StatusModelTests |
Contrato real de /status del motor y tolerancia a claves nuevas |
ServerCLIValidatorTests |
ValidaciΓ³n y sanitizaciΓ³n estricta de banderas CLI, estados GDN y presupuestos |
ServerOptionsTests |
GeneraciΓ³n de comandos con host LAN, variantes, estado GDN BF16 y flags 1.3.2 |
AgentLaunchTests |
DetecciΓ³n e integraciΓ³n de lanzadores para Claude Cowork, Pi, Hermes y DeepSeek Harness |
SystemMemoryPressureTests |
Notificaciones del centinela de memoria del kernel macOS y purga bajo demanda |
ModelDiagnosticTests |
BaterΓa de validaciΓ³n de endpoints y benchmarking de inferencia Metal |
SplashMonitor/
βββ Package.swift # Manifiesto Swift Package Manager
βββ LICENSE # Licencia MIT
βββ CONTRIBUTING.md # GuΓas de contribuciΓ³n (bilingΓΌe)
βββ SECURITY.md # PolΓtica de divulgaciΓ³n responsable
βββ CODE_OF_CONDUCT.md # CΓ³digo de Conducta Contributor Covenant v2.1
βββ README.md # DocumentaciΓ³n tΓ©cnica bilingΓΌe
βββ Resources/
β βββ AppIcon.icns # Bundle de icono multi-resoluciΓ³n
β βββ AppIcon.iconset/ # Assets de icono estΓ‘ndar y Retina
βββ scripts/
β βββ build_app.sh # Build Release + empaquetado .app
β βββ create_dmg.sh # Empaquetado DMG vΓa hdiutil + SHA256SUMS
β βββ install.sh # Instalador en 1 lΓnea con verificaciΓ³n SHA-256
βββ Sources/
βββ SplashMonitor/
βββ SplashMonitorApp.swift # Entry point (WindowGroup + MenuBarExtra)
βββ Models/
β βββ SplashStatus.swift # Structs Codable para /status y HF API
βββ Services/
β βββ SplashService.swift # Singleton (polling, procesos, servidor)
β βββ LocalizationService.swift # DetecciΓ³n dinΓ‘mica del idioma
β βββ SystemMemoryPressureSentinel.swift # Centinela de presiΓ³n de RAM macOS
β βββ ServerCLIValidator.swift # SanitizaciΓ³n y validaciΓ³n de flags CLI
β βββ ModelIDValidator.swift # ValidaciΓ³n estricta de IDs de modelos
β βββ ModelBenchmarkRunner.swift # Benchmark de tokens y aceleraciΓ³n KV
β βββ Version.swift # Fuente ΓΊnica de versiΓ³n semΓ‘ntica (P-15)
βββ Views/
βββ MainWindowView.swift # NavigationSplitView de escritorio (8 mΓ³dulos)
βββ MenuBarView.swift # Popover interactivo del menΓΊ superior
βββ TokenMetricsView.swift # Sparkline, tarjetas de velocidad, gauge
βββ ModelManagerView.swift # Modelos locales + catΓ‘logo HF + telemetrΓa
βββ ServerControlView.swift # Selector, controles, lanzadores, flags 1.3.2
βββ ConnectedAppsView.swift # Apps conectadas + DeepSeek Harness
βββ ConnectedAppsGuideView.swift # GuΓa de integraciΓ³n de clientes
βββ ModelTestingView.swift # Smoke testing + benchmarking + playground
βββ SettingsView.swift # Ajustes de idioma, menΓΊ y sondeo
βββ AboutView.swift # CrΓ©ditos e info de versiΓ³n
βββ AppIconView.swift # Renderizado del icono de la app
βββ DominicanEmblem.swift # Emblema patrio dominicano
| Componente | TecnologΓa |
|---|---|
| Lenguaje | Swift 6 |
| UI Framework | SwiftUI |
| Package Manager | Swift Package Manager |
| Plataforma | macOS 13.0+ (Apple Silicon) |
| Motor de Inferencia | Inco AI Splash |
| CatΓ‘logo de Modelos | Hugging Face API |
| Icono | Custom 3D liquid droplet (SF Symbols + Canvas) |
| Empaquetado | hdiutil (DMG nativo de macOS) |
Β‘Las contribuciones son bienvenidas! Consulta nuestras guΓas antes de participar:
| Documento | DescripciΓ³n |
|---|---|
| π GuΓa de ContribuciΓ³n | Flujo de trabajo, convenciones de cΓ³digo y estructura del proyecto |
| π PolΓtica de Seguridad | DivulgaciΓ³n responsable de vulnerabilidades |
| π CΓ³digo de Conducta | Contributor Covenant v2.1 |
|
|
Joan Gregorio PΓ©rez Software Engineer Β· JMGREP Developers π©π΄ RepΓΊblica Dominicana GitHub |
Agradecimientos especiales:
- Inco AI β Motor de inferencia Splash
- Hugging Face β CatΓ‘logo de modelos
Si Splash Monitor te resulta ΓΊtil para tus flujos de trabajo de IA local y desarrollo con agentes, Β‘considera apoyar su desarrollo continuo invitΓ‘ndome a un cafΓ©! Cada aporte ayuda a mantener el proyecto actualizado, probado y optimizado para Apple Silicon.
Este proyecto estΓ‘ licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para los tΓ©rminos completos.
MIT License β Copyright (c) 2026 JMGREP Developers / Joan Gregorio PΓ©rez
Splash Monitor es una aplicaciΓ³n independiente de cΓ³digo abierto que interactΓΊa con el motor Splash, modelos de inteligencia artificial y agentes de cΓ³digo autΓ³nomos. A continuaciΓ³n se detallan las licencias y atribuciones de cada componente:
| Componente | Licencia | Autor / OrganizaciΓ³n | Repositorio |
|---|---|---|---|
| Splash Monitor | MIT | JMGREP Developers (Joan Gregorio PΓ©rez) | hometrix/SplashMonitor |
| Splash Engine | Apache-2.0 | Inco AI | incoai/splash |
| Modelo / Checkpoint | Licencia | Distribuidor / Creador | Repositorio |
|---|---|---|---|
| Qwen3.8-27B-NVFP4 | Apache-2.0 | NVIDIA Model Optimizer | nvidia/Qwen3.8-27B-NVFP4 |
| Qwen3.6-35B-A3B-nvfp4 | Apache-2.0 | MLX Community | mlx-community/Qwen3.6-35B-A3B-nvfp4 |
| Qwen3.8-27B-4bit | Apache-2.0 | MLX Community | mlx-community/Qwen3.8-27B-4bit |
| Qwen3.6-35B-A3B-4bit | Apache-2.0 | MLX Community | mlx-community/Qwen3.6-35B-A3B-4bit |
| DFlash 2 Speculative Decoders | Apache-2.0 | Inco AI | incoai/Qwen3.8-27B-DFlash2 |
| Qwen Base Models (27B & 35B) | Apache-2.0 | Alibaba Cloud / Qwen Team | Qwen/Qwen |
| Variantes Cuantizadas GGUF | Apache-2.0 / MIT | llama.cpp / Creadores Comunitarios | Hugging Face Hub |
| Agente / Cliente | Licencia / TΓ©rminos | Desarrollador | Enlace Oficial |
|---|---|---|---|
DeepSeek Harness (dsh) |
MIT | DeepSeek Community | GitHub |
Pi Agent (pi) |
MIT | Mario Zechner / Pi.dev | pi.dev |
| Hermes Agent | MIT | Nous Research | NousResearch |
| OpenCode | MIT | SST | opencode.ai |
| Codex CLI | Apache-2.0 / MIT | OpenAI Community | OpenAI Developers |
| Claude Code & Cowork | TΓ©rminos de Servicio | Anthropic, PBC | anthropic.com |
β οΈ Aviso de Pesos de Modelos: Los pesos, puntos de control (checkpoints) y cuantizaciones de modelos mantienen sus propios tΓ©rminos de licencia y acuerdos de uso de cada autor en Hugging Face Hub.
βΉοΈ Descargo de Responsabilidad (Disclaimer): Splash Monitor es un proyecto independiente desarrollado por JMGREP Developers y no estΓ‘ afiliado, patrocinado ni respaldado por Inco AI, Anthropic, OpenAI, NVIDIA o Alibaba Cloud. "Splash" es una marca comercial de Inco AI. Este software interactΓΊa con la API pΓΊblica local del motor Splash bajo los tΓ©rminos de su licencia Apache-2.0.
Until now, Splash could only be operated from the command line. Splash Monitor transforms that experience into a complete visual suite for macOS: real-time metrics monitoring, one-click Hugging Face model management, and code agent launchers β all from a menu bar icon or a native desktop window.
- π¬ Native AI Chat & Multi-Turn Playground: Real-time SSE streaming with
URLSession.bytes, collapsible<think>reasoning blocks, native Markdown formatting, media/code file attachments, and one-click Markdown export. - π Hot-Swap Model Switching: Interactive pill in the header and lower-left corner of the chat to switch local models on the fly with automatic shutdown and relaunch.
- βοΈ Per-Model CLI Flags (
PerModelServerFlagsβ Closes #10): Configure distinct CLI arguments per model, preventing--model-dir,--draft-model, or--mmprojfrom breaking other models. Contributed by @Thoralf-M. - π‘οΈ Safe Server Termination on Quit (
ServerOwnershipβ Closes #11): Splash Monitor only terminates servers it started itself, leaving Terminal/external inference instances running untouched. Contributed by @Thoralf-M. - π₯οΈ macOS 27 Menu Bar Fix (Closes #9): Enforced a fixed 460 pt height and 600 pt width on
MenuBarViewpopover, preventing zero-height collapse in macOS 27.2. Contributed by @Thoralf-M. - π Native macOS Zoom Menu & Universal Shortcuts: Universal
β=(Zoom In),β-(Zoom Out), andβ0(Reset 100%) in View > Appearance and in the chat header. - β¨οΈ Compact Input Field & Enter to Send: Slim 34 px horizontal input capsule with instant send on
Enterand multi-line drafting viaShift+Enter. - π 100% Bilingual Support (English / Spanish): Full localization across all windows and controls.
- π§ͺ 142 Automated Unit Tests (100% Passing): Full regression suite with zero failures.
|
|
|
|
|
|
Every module of Splash Monitor is designed and optimized for a native Apple Silicon macOS experience:
Server Control Module: Start and stop the Splash server with one click, hot-swap models without restarting, configure custom ports, GDN recurrent state format in BF16 (-50% RAM), reasoning token budget, persistent SSD prefix cache, and launch autonomous coding agents: Claude Cowork (native AppKit launch with model aliases to prevent 404 errors), Claude Code CLI, OpenCode, Codex, Hermes, Pi Agent, and DeepSeek Harness (`dsh`).
Native AI Chat Module: High-speed conversational streaming (SSE with AsyncSequence), rich Markdown rendering with syntax-aware code blocks and one-click copy, collapsible reasoning process (Thinking blocks), per-token live telemetry (tok/s and TTFT latency), persistent on-disk chat session history, and interactive temperature/token sliders.
Real-Time Performance Module: Live token generation speed telemetry (DECODE and PREFILL in tok/s), KV Cache hit ratio and token reuse, token deduplication metrics, DFlash 2 speculative decoding acceptance rates, TTFT/ITL latencies, and Apple Silicon Metal unified memory usage (M3/M4/M5).
Connected Clients Module: Automatic inspection of active TCP sockets against the inference port, recognizing clients such as Claude Desktop / Cowork, DeepSeek Harness, Cursor IDE, VS Code, and Chatbots with their native macOS application icons and stream state.
Connection Guide Module: Quick setup instructions and one-click copyable configuration snippets for Claude Desktop, Cursor IDE, VS Code (Cline/Continue), Chatbox, and Python scripts (OpenAI SDK / LangChain).
Model Management Module: Disk footprint inspection for local models, hot-swap deployment, and Hugging Face catalog exploration with support for official NVIDIA quantized models (NVFP4 / FP8), GGUF variants, assisted guidance for protected repositories (403 Gated Models), and --language-only mode for Coder/text models.
Real-Time Download Telemetry: Live transfer speed measurement in MB/s (β‘οΈ 34.8 MB/s), continuous progress bar, exact GB downloaded counter vs expected total, and phase detection (DFlash2 speculative accelerator, model weights, and Splash engine assembly).
Model Testing Module: Complete one-click verification suite with Smoke Testing (server health, Metal engine readiness, Jinja templates, OpenAI Chat, Anthropic Messages, and Tool Calling/JSON validation), Metal speed benchmarking with KV Cache speedup factor calculation, and an interactive local inference Playground.
Settings Module: Language selector (Dominican Spanish π©π΄ / English π¬π§ / macOS auto-sync), customizable macOS menu bar item display modes, and background polling interval controls.
About Module: Version information (v1.2.2-beta), native Swift 6 and Metal architecture details, MIT open-source license, and author credits for Joan Gregorio PΓ©rez (JMGREP Developers).
Splash Monitor is a graphical monitor for Inco AI's Splash local inference engine. Before installing Splash Monitor, you need Splash running on your Mac.
Install Splash from the official Inco AI repository:
# Add the official Inco AI tap and install Splash
brew install incoai/tap/splashπ Splash engine requirements (from incoai/splash):
- Mac with Apple Silicon M3 or newer
- macOS 26.4 (Tahoe) or later
- 36 GB of unified memory (48 GB or more recommended)
Models are downloaded automatically on first use. See available models at huggingface.co/incoai.
Once Splash is installed and running, install Splash Monitor:
The native macOS package manager method. When installed through Homebrew, macOS does not flag it with browser quarantine:
brew install --cask hometrix/tap/splash-monitor
β οΈ Check which version the cask installs. The tap cask is a separate file inhometrix/homebrew-tapand can lag behind this repository's releases: in the v1.0.2-beta audit the cask still served 1.0.0-beta. Verify withbrew info --cask splash-monitororSplash Monitor.app/Contents/Info.plist. If the cask is behind, use Option B or C, which always point at the latest release.
The quickest method without tapping:
curl -fsSL https://raw.githubusercontent.com/hometrix/SplashMonitor/main/scripts/install.sh | bashβ‘οΈ This script resolves the latest release, downloads the official DMG, verifies its SHA-256 checksum against the published
SHA256SUMSfile (aborting on mismatch), mounts it, installs to/Applications, and opens the app automatically. Pin a specific version withSPLASH_MONITOR_TAG=v1.2.2-beta.
-
Download the official installer: π SplashMonitor-1.2.2-beta.dmg
And its checksum file: SHA256SUMS
shasum -a 256 -c SHA256SUMS # must print "OK" -
Double-click the downloaded
.dmgand drag Splash Monitor to Applications.
π‘οΈ If macOS shows: "Apple cannot verify that this app is free of malware...": This is a standard Gatekeeper notice for independent open-source apps. To allow it:
- Open System Settings on your Mac.
- Go to Privacy & Security and scroll down to the Security section.
- Click "Open Anyway".
Or via Terminal (1 second):
xattr -d com.apple.quarantine ~/Downloads/SplashMonitor*.dmg
Requirements:
| Requirement | Minimum Version |
|---|---|
| Mac | Apple Silicon (M3, M4, M5) |
| macOS | 13.0 or later |
| Xcode | 15+ or Swift 6.0 Toolchain |
| Splash Engine | incoai/tap/splash |
# 1. Clone the repository
gh repo clone hometrix/SplashMonitor
cd SplashMonitor
# 2. Run the test suite (142 tests, no network, no real engine)
swift test
# 3. Build the release binary and bundle .app
./scripts/build_app.sh
# 4. (Optional) Create the compressed DMG installer + SHA256SUMS
./scripts/create_dmg.sh
# 5. Launch the application
open "Splash Monitor.app"π’ Single source of truth for the version.
Sources/SplashMonitor/Services/Version.swiftholds the version, bundle identifier and build number, and all three scripts extract them withsed. Before, the version was declared in five places and had already diverged.
swift test # 113 automated tests (100% pass)
swift test --filter PollingTests # one suite
swift test --filter ServerOptionsTests # CLI options and Splash 1.3.2 flags
swift test --filter SystemMemoryPressureTests # macOS kernel memory sentinelTests are hermetic by design: a stub status transport, a recording process terminator,
a private temp directory and bootstrapNetwork: false (no Hugging Face or GitHub
traffic). No test signals a real process or writes to your ~/.zshrc.
| Suite | Purpose |
|---|---|
VersionTests |
Semantic version ordering and single-source versioning consistency |
ModelIDValidatorTests |
Rejection of model identifiers with shell injection or traversal |
ProcessIntrospectionTests |
Guarantees client processes are never signaled, only engine listeners |
ServeLockTests |
Parsing serve-<port>.lock, empty, corrupted, and orphaned locks |
ShellEnvironmentTests |
Environment sync, idempotent ~/.zshrc mutation and revert |
ModelSizeCacheTests |
Avoids re-scanning model directory trees on every polling tick |
PollingTests |
Guarantees the dashboard re-detects the engine after restart |
ClientTerminationPolicyTests |
Prevents terminating recycled PIDs or the monitor itself |
StatusModelTests |
Engine /status contract conformity and forward-compatibility |
ServerCLIValidatorTests |
Strict validation of CLI arguments, GDN formats, and token budgets |
ServerOptionsTests |
Command generation with LAN host, variants, GDN BF16, and 1.3.2 flags |
AgentLaunchTests |
Launchers and environment integration for Claude Cowork, Pi, Hermes, and DeepSeek Harness |
SystemMemoryPressureTests |
Kernel memory pressure notifications and on-demand purge |
ModelDiagnosticTests |
Comprehensive endpoint verification and Metal KV acceleration benchmark |
SplashMonitor/
βββ Package.swift # Swift Package Manager manifest
βββ LICENSE # MIT License
βββ CONTRIBUTING.md # Contribution guidelines (bilingual)
βββ SECURITY.md # Vulnerability disclosure policy
βββ CODE_OF_CONDUCT.md # Contributor Covenant v2.1
βββ README.md # Bilingual technical documentation
βββ Resources/
β βββ AppIcon.icns # Multi-resolution macOS icon bundle
β βββ AppIcon.iconset/ # Standard & Retina icon assets
βββ scripts/
β βββ build_app.sh # Release build + .app bundling
β βββ create_dmg.sh # DMG packaging via hdiutil + SHA256SUMS
β βββ install.sh # 1-line installer with SHA-256 verification
βββ Sources/
βββ SplashMonitor/
βββ SplashMonitorApp.swift # Entry point (WindowGroup + MenuBarExtra)
βββ Models/
β βββ SplashStatus.swift # Codable structs for /status & HF API
βββ Services/
β βββ SplashService.swift # Singleton (polling, processes, server)
β βββ LocalizationService.swift # Dynamic OS language detection
β βββ SystemMemoryPressureSentinel.swift # macOS kernel RAM pressure sentinel
β βββ ServerCLIValidator.swift # CLI flags sanitization and validation
β βββ ModelIDValidator.swift # Strict model identifier validator
β βββ ModelBenchmarkRunner.swift # Token benchmark and KV acceleration
β βββ Version.swift # Single source of truth for version (P-15)
βββ Views/
βββ MainWindowView.swift # NavigationSplitView desktop window (8 modules)
βββ MenuBarView.swift # Interactive menu bar popover
βββ TokenMetricsView.swift # Sparkline, speed cards, memory gauge
βββ ModelManagerView.swift # Local models + HF catalog + telemetry
βββ ServerControlView.swift # Selector, controls, agent launchers, 1.3.2 flags
βββ ConnectedAppsView.swift # Connected apps + DeepSeek Harness
βββ ConnectedAppsGuideView.swift # Client integration guide
βββ ModelTestingView.swift # Smoke testing + benchmarking + playground
βββ SettingsView.swift # Language, menu bar, and polling preferences
βββ AboutView.swift # Author credits and version info
βββ AppIconView.swift # App icon rendering component
βββ DominicanEmblem.swift # Dominican Republic national emblem
| Component | Technology |
|---|---|
| Language | Swift 6 |
| UI Framework | SwiftUI |
| Package Manager | Swift Package Manager |
| Platform | macOS 13.0+ (Apple Silicon) |
| Inference Engine | Inco AI Splash |
| Model Catalog | Hugging Face API |
| Icon | Custom 3D liquid droplet (SF Symbols + Canvas) |
| Packaging | hdiutil (native macOS DMG) |
Contributions are welcome! Please read our guidelines before participating:
| Document | Description |
|---|---|
| π Contributing Guide | Workflow, code conventions, and project structure |
| π Security Policy | Responsible vulnerability disclosure |
| π Code of Conduct | Contributor Covenant v2.1 |
Si el puerto predeterminado 8000 estΓ‘ ocupado por otro servicio de tu Mac (como Uvicorn, Django, Docker o Node.js):
- OpciΓ³n A (AutomΓ‘tica): En el panel de control del servidor, pulsa el botΓ³n β¨ "Sugerir libre" para que Splash Monitor asigne automΓ‘ticamente el siguiente puerto disponible (ej. 8001 o 8005).
- OpciΓ³n B (Personalizada): Escribe manualmente el puerto que desees en el campo de texto. Splash Monitor utilizarΓ‘ su Bridge Launcher para ejecutar Splash en el puerto elegido sin errores.
- OpciΓ³n C (Liberar puerto): Si intentas arrancar en un puerto ocupado, la app te mostrarΓ‘ quΓ© proceso lo tiene tomado y te ofrecerΓ‘ un botΓ³n para liberarlo con un solo clic.
Si al ejecutar splash claude en tu terminal ves el mensaje:
error: No ready Splash server. Run 'splash serve --model <HF_REPO_ID>' in another terminal first.
AsegΓΊrate de que:
- El servidor Splash estΓ© iniciado y con su modelo cargado (verΓ‘s el estado en verde en Splash Monitor).
- Si ejecutaste el servidor en un puerto personalizado (distinto de 8000), lanza el agente directamente desde los botones de Splash Monitor para que la app configure automΓ‘ticamente las variables de entorno de conexiΓ³n (
ANTHROPIC_BASE_URL,SPLASH_PORT).
|
|
Joan Gregorio PΓ©rez Software Engineer Β· JMGREP Developers π©π΄ Dominican Republic GitHub |
Special Thanks:
- Inco AI β Splash inference engine
- Hugging Face β Model catalog
If you find Splash Monitor valuable for your local AI workflows and autonomous coding agents, consider supporting its ongoing development by buying me a coffee! Every contribution helps keep the project updated, tested, and fine-tuned for Apple Silicon.
This project is licensed under the MIT License. See the LICENSE file for full terms.
MIT License β Copyright (c) 2026 JMGREP Developers / Joan Gregorio PΓ©rez
Splash Monitor is an independent open-source application that interfaces with the Splash inference engine, machine learning models, and autonomous coding agents. Below are the licenses and attributions for each component:
| Component | License | Author / Organization | Repository |
|---|---|---|---|
| Splash Monitor | MIT | JMGREP Developers (Joan Gregorio PΓ©rez) | hometrix/SplashMonitor |
| Splash Engine | Apache-2.0 | Inco AI | incoai/splash |
| Model / Checkpoint | License | Provider / Origin | Repository |
|---|---|---|---|
| Qwen3.8-27B-NVFP4 | Apache-2.0 | NVIDIA Model Optimizer | nvidia/Qwen3.8-27B-NVFP4 |
| Qwen3.6-35B-A3B-nvfp4 | Apache-2.0 | MLX Community | mlx-community/Qwen3.6-35B-A3B-nvfp4 |
| Qwen3.8-27B-4bit | Apache-2.0 | MLX Community | mlx-community/Qwen3.8-27B-4bit |
| Qwen3.6-35B-A3B-4bit | Apache-2.0 | MLX Community | mlx-community/Qwen3.6-35B-A3B-4bit |
| DFlash 2 Speculative Decoders | Apache-2.0 | Inco AI | incoai/Qwen3.8-27B-DFlash2 |
| Qwen Base Models (27B & 35B) | Apache-2.0 | Alibaba Cloud / Qwen Team | Qwen/Qwen |
| GGUF Quantized Variants | Apache-2.0 / MIT | llama.cpp / Community Creators | Hugging Face Hub |
| Agent / Client | License / Terms | Developer | Official Link |
|---|---|---|---|
DeepSeek Harness (dsh) |
MIT | DeepSeek Community | GitHub |
Pi Agent (pi) |
MIT | Mario Zechner / Pi.dev | pi.dev |
| Hermes Agent | MIT | Nous Research | NousResearch |
| OpenCode | MIT | SST | opencode.ai |
| Codex CLI | Apache-2.0 / MIT | OpenAI Community | OpenAI Developers |
| Claude Code & Cowork | Terms of Service | Anthropic, PBC | anthropic.com |
β οΈ Model Weights Notice: Model checkpoints, weights, and quantizations retain their own specific licenses and terms from their respective authors on the Hugging Face Hub.
βΉοΈ Disclaimer: Splash Monitor is an independent project developed by JMGREP Developers and is not affiliated with, sponsored by, or endorsed by Inco AI, Anthropic, OpenAI, NVIDIA, or Alibaba Cloud. "Splash" is a trademark of Inco AI. This software interfaces with the public Splash local API under the terms of the Apache-2.0 license.