Cualquier idea. En cada pantalla.
Crea una app de radio en una tarde.
mHub es una plataforma abierta que convierte carpetas de archivos sencillos y sitios web normales en apps para teléfonos, televisores y equipos de escritorio. No hace falta que sepas programar: si puedes describir lo que quieres, una IA puede construirlo, y mHub le da un lugar donde funcionar.
Una plataforma, tres partes.
mHub no es una sola app. Son tres partes que encajan entre sí, y todas son abiertas. Dos son cimientos: un formato de contenido y una API de navegador. La tercera son las apps, y cada una se apoya en uno de esos cimientos o en los dos.
Las apps
Lo que de verdad usas. Vuma convierte addons en una sola pantalla para explorar, y cada una de las otras apps lleva una idea a todas las pantallas de la casa. Todas son apps web: no hay nada que instalar. Ver las apps
El contenido: addons
Un addon es una fuente de contenido: películas, emisoras de radio, podcasts, cursos. Por dentro es una carpeta de pequeños archivos de texto en cualquier alojamiento web, descrita por el Addon Protocol v2. Una IA puede escribir uno por ti. Ver el protocolo
Los poderes: window.mhub
Abre un sitio web normal dentro de una app de mHub y podrá hacer cosas que un navegador nunca permite: leer datos de cualquier sitio, sobrevivir a un dominio caído, vivir en tu televisor. Un espacio de nombres, una etiqueta script: la mHub Browser API. Ver la API
Nuestras favoritas. Todas en línea.
Vuma se apoya en los dos cimientos; las apps que la acompañan muestran hasta dónde llega uno solo. Cinco apps, cinco ideas distintas, y cada una es un buen punto de partida.
Vuma
Dale addons a Vuma y los convierte en una sola pantalla para explorar: cada catálogo que ofrecen tus addons, búsqueda en todos ellos, una biblioteca y un reproductor que sigue donde lo dejaste. Es una sola app web que funciona igual en teléfonos, televisores y equipos de escritorio, y se encarga ella misma del táctil, el control remoto y el puntero.
Se apoya en los dos cimientos: los addons aportan el contenido y, dentro de un navegador mHub, la Browser API añade los poderes que una página normal nunca tiene. Incluso puedes montarla en una página tuya, con tus addons y tu nombre: un archivo HTML.


Waves
Emisoras de radio, podcasts y audiolibros gratuitos en una sola app. Waves es un archivo HTML sobre la misma compilación de Vuma: cinco addons de audio, un color de acento verde azulado y addonManager: "fixed", así que las fuentes están fijadas y el usuario solo las activa o desactiva. Mira su código fuente: la página es el tutorial completo.
Junior
TV infantil. Un addon, colores vivos, alemán desde la primera pantalla (locale: "de") y addonManager: "hidden": nada que desconfigurar desde el sofá. También es un archivo HTML sobre la compilación de Vuma.
Mediathek
El addon son los datos; lo que alguien construye encima es la app. Mediathek es un archivo HTML directamente sobre el addon ard-mediathek, sin Vuma debajo: filas, búsqueda, series con sus episodios, subtítulos y un reproductor que recuerda dónde te quedaste. El addon se encarga de obtener los datos; la página, del aspecto.
Glance
El otro cimiento por sí solo: Glance no usa ningún addon. Es un archivo HTML sobre la Browser API que reúne el clima en vivo, titulares, cotizaciones y el estado de tus propios servidores en una pantalla tranquila. En un navegador normal se degrada con elegancia; dentro de una app de mHub cada tarjeta cobra vida.
Una idea, una carpeta, todas las pantallas.
Todo lo que tenga una lista puede ser un addon, y todo lo que un navegador se niega a hacer puede ser un sitio dentro de mHub. Son ideas que nos gustaría ver hechas realidad, y cada una está a un prompt de distancia: elige una y aparecerá en el prompt para la IA, más abajo.
Ver
Tu canal de televisión regional
Cada emisión que el canal pone en línea, en filas por programa, con las noticias de la noche primero.
Un festival de cine
La programación con tráileres y sinopsis, para explorar por día, sala y sección.
Cine mudo
Películas de dominio público del Internet Archive, ordenadas por década y director.
Tu club deportivo
Resúmenes de partidos, partidos completos y el calendario de la temporada como catálogo en vivo.
Cámaras en vivo de la ciudad
Las webcams públicas de una ciudad, el puerto, la plaza, la montaña, como canales en vivo.
Sesiones municipales
Grabaciones y transmisiones en vivo del consejo municipal de tu localidad, por sesión y punto del orden del día.
Escuchar
Tus emisoras de radio
Las diez emisoras que de verdad escuchas, con logos, en el orden que prefieras.
Una red de podcasts
Todos los programas de una red a partir de sus feeds RSS, con los episodios más recientes primero.
Audiolibros por autor
Grabaciones de LibriVox de un autor, con los capítulos como episodios y la opción de seguir donde lo dejaste.
Cuentos para dormir
Cuentos breves en audio para niños, con una portada tranquila para cada cuento y sin anuncios.
Una comunidad religiosa
Los oficios y charlas de tu iglesia, mezquita o comunidad, en vivo y grabados.
La app propia de una emisora
Waves, con los streams y podcasts de una emisora y sus propios colores. Un archivo HTML.
Aprender
Clases de una universidad
Las grabaciones de clases públicas, por facultad y semestre, en el televisor en lugar de en el portátil.
Un curso de idiomas
Lecciones como episodios, en orden, con los ejercicios de audio junto a los videos.
Visitas a museos
Las videoguías y audioguías de un museo, sala por sala.
Escuela de cocina
Videos de recetas por tipo de plato y de cocina, con los ingredientes en la descripción.
Un explorador de bibliotecas digitales
Una cara amable para Archive.org o Project Gutenberg: explora, busca y lee como en una app.
Charlas de una conferencia
Todas las charlas grabadas de una serie de conferencias, por año y temática.
Hogar y familia
Una pantalla familiar
El clima, los titulares y el precio de las cosas que te importan, en una pantalla tranquila. Esta la hicimos nosotros: es Glance.
Panel de control de casa
Luces, NAS, impresora, router. Los navegadores rechazan peticiones locales como esas; la app de mHub las hace por ti.
Muro de cámaras
Tus propias cámaras, desde la red local, en una cuadrícula en el televisor.
El marco de fotos familiar
Fotos de tu propio servidor como catálogo de imágenes: el televisor se convierte en el marco.
Dibujos animados de un canal
Los episodios gratuitos de un canal infantil, por programa, para dejarles el mando sin preocuparte.
Herramientas
Un lector de noticias
Obtén cualquier feed directamente de su fuente. Los navegadores normales lo bloquean; dentro de mHub simplemente funciona, y se lee bien desde el sofá.
Un vigilante de precios
Consulta precios y disponibilidad en tiendas, lleva una lista de seguimiento y mira la respuesta en cualquier pantalla.
Panel de estado de servidores
Tus propias máquinas, sus discos y servicios, como tarjetas que se ponen rojas antes de que nadie llame.
Un canal de YouTube, resuelto
Un addon de resolución: pega un canal y obtén sus videos como un catálogo que se reproduce.
Subtítulos para un idioma
Un addon de subtítulos para un idioma, que responde a ids de imdb, a partir de una fuente abierta de subtítulos.
Dónde ver un título
Escribe una película y mira dónde se puede ver en tu país. Un addon de elementos sobre una base de datos abierta.
¿Has creado uno de estos? Publícalo en mhub.mx: lo revisamos, lo alojamos con tu nombre y lo incluimos en el repositorio de la comunidad.
Tu propia app es un archivo HTML.
Waves y Junior son exactamente esto: carga la compilación de Vuma, dale un elemento y llama a mount. Este archivo, en cualquier alojamiento estático, es una app terminada con tus addons, tu nombre y tus colores, y sigue las nuevas versiones de Vuma por sí solo. Sin compilación, sin código de servidor, sin cuenta.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport"
content="width=device-width, initial-scale=1.0, viewport-fit=cover, user-scalable=no">
<title>My App</title>
<link rel="stylesheet" href="https://vuma.mx/latest/style.css">
</head>
<body>
<div id="app"></div>
<script type="module">
import { mount } from "https://vuma.mx/latest/app.js";
mount({
addons: [
"https://www.mhub.mx/radio-and-podcasts",
"https://www.mhub.mx/public-domain",
],
brand: { name: "My App", colors: { accent: "#00AAFF" } },
});
</script>
</body>
</html>
Un addon es la URL de su manifiesto. Los que se alojan aquí aparecen en el índice de addons, y una IA puede crearte uno nuevo.
Todas las opciones de mount, y de dónde vienen los archivos, están documentadas en la propia app: Cómo crear tu propia app. Viene con la compilación, así que describe la versión que estás a punto de cargar y no aquella con la que se escribió esta página.
Un addon es una carpeta de archivos JSON.
Un addon es una fuente de contenido: películas, emisoras de radio, podcasts, recetas, cursos. Pon la carpeta en cualquier lugar de la web, añade su dirección en una app y todo lo que contiene aparecerá allí, listo para explorar. La versión 2 del protocolo no necesita servidor: cada endpoint puede ser un archivo estático en cualquier CDN. Todos los addons v1 existentes siguen funcionando; las apps traducen entre ambas versiones, y v1 sigue siendo compatible.
Primero lo estático
Todos los endpoints son GET, todos se pueden cachear y todos se pueden alojar como archivos normales. Un único POST opcional para el sistema de tareas.
/mhub-addon.json /catalog/{type}/{catalogId}.json /item/{type}/{id}.json /source/{type}/{id}.json
Componible
Catálogos, detalles de elementos, fuentes, resolvers y subtítulos son recursos separados. Un addon puede ofrecerlos todos o solo uno.
"resources": ["catalog", "item", "source", "resolve", "subtitle"]
Tareas client-fetch
Un endpoint puede responder con una tarea en lugar de datos. La app hace la petición con la IP del propio usuario, así que un addon estático funciona con API con bloqueo geográfico.
// el addon sigue siendo estático,
// el cliente hace el viaje
mhub-addon.json
Un addon mínimo es un manifiesto y un archivo de catálogo. Sube ambos a cualquier alojamiento estático y funciona. La especificación es OpenAPI 3.1 con tipos TypeScript generados y una biblioteca cliente sin dependencias, con licencia MIT, en GitHub.
{ "id": "my-movies", "name": "My Movies", "specVersion": 2, "resources": ["catalog"], "types": ["video"], "catalogs": [{ "id": "all", "name": "All", "type": "video" }] }
Descríbelo. Una IA lo construye.
Todo el formato de addons cabe en un solo prompt, y nunca tienes que leerlo. Copia el prompt, añade tu idea y la IA te responde con una carpeta de archivos. Súbelos a cualquier sitio y tu addon estará en línea.
Copia el prompt
Le indica a la IA dónde está la especificación. Funciona con cualquier asistente que pueda leer enlaces, como ChatGPT o Claude.
Añade tu idea
"Mis emisoras de radio favoritas." "Todas las películas de un director." "Las clases públicas de mi universidad." Cualquier cosa que tenga una lista.
Sube los archivos
Sirve cualquier alojamiento estático, y GitHub Pages es gratis. Añade la dirección en una app de mHub y explora tu propio addon.
Lee la especificación del mHub Addon Protocol v2 en
https://raw.githubusercontent.com/mediahubmx/protocol/main/openapi.yaml
y crea un addon para mí. Un addon es una carpeta de archivos JSON estáticos,
lista para subir a cualquier alojamiento web. Responde con cada archivo: su ruta completa
y después su contenido completo.
Mi addon: [describe aquí tu idea]
Si tu asistente no puede abrir enlaces, pega en el chat el archivo de la especificación. La especificación y addons de ejemplo completos están en GitHub.
Lo que tu sitio puede hacer dentro de mHub
Todo vive bajo un único espacio de nombres: window.mhub, y cada anfitrión ofrece el núcleo completo. Detecta el espacio de nombres una vez y después simplemente úsalo. Sin SDK, sin compilación, sin cuenta: una etiqueta script es toda la configuración, y puedes alojarla tú mismo sin problema.
- Anfitrión
- …
- Dispositivo
- …
- Capacidades
- …
La API ya funciona en las apps y va llegando con sus nuevas versiones. Programa con ella hoy y tu página seguirá funcionando en cualquier caso: donde no hay anfitrión, window.mhub simplemente no existe y tu sitio sigue siendo un sitio web normal. Consigue un navegador que la tenga.
mhub.fetch
Obtén lo que sea. Sin CORS, y con cabeceras de petición que el navegador normalmente se reserva para sí.
// otro origen, legible const r = await mhub.fetch(url);
mhub.openStream
Algunos contenidos multimedia necesitan sus propias cabeceras de petición para reproducirse. Una llamada, y el anfitrión elige la vía correcta en cada plataforma.
const s = await mhub.openStream( { url, headers }); video.src = s.url;
mhub.storage
Almacenamiento clave/valor que sigue a tu sitio, no al dominio en el que se esté ejecutando. Sin avisos, sin configuración.
await mhub.storage.set(k, v);
mhub-site.json
Si cae un dominio, tu sitio sigue cargando. Sirve un pequeño archivo en cada dominio; el navegador lo encuentra, verifica tus espejos y cambia de uno a otro por sí solo. Sin código.
{ "id": "mysite", "endpoints": [ "https://a.example", "https://b.example" ] }
mhub.setLinks
Una tarjeta en la pantalla de inicio del navegador. El camino de vuelta a tu sitio, que se conserva entre visitas.
mhub.setLinks([ { id, name, icon, url }]);
mhub.setSearch
La barra de direcciones se convierte en el buscador de tu sitio. Las búsquedas y sugerencias van directo a tu página.
mhub.setSearch({ placeholder, onQuery, onSuggest });
mhub.device + capabilities
Sabe dónde se ejecuta tu página y qué puede hacer el anfitrión, del teléfono al televisor, antes de dibujar nada.
if (mhub.device.isTV) tvUi();
…y las declaraciones de app
Una página que funciona como app le dice al anfitrión qué gestiona ella misma: su propia navegación hacia atrás (setBackHandler), un reproductor a pantalla completa (setImmersive) y la puerta de salida (exit); una etiqueta meta en el HTML indica que es una app pensada para el control remoto. Todos los miembros, con el modelo de permisos y el sistema de espejos, están en la referencia de la API.
mhub.setBackHandler(depth); mhub.setImmersive(true); <meta name="mhub" content="app dpad">
Publicado por gente como tú.
56 addons comunitarios de 31 creadores hasta ahora. Inicia sesión con tu correo, sube una carpeta como zip o enlaza una que alojes tú, y en cuanto pase la revisión estará en mhub.mx/@you/addon, en la lista de la comunidad y en el repositorio de la comunidad.
Crea algo. Grande o pequeño.
La referencia de la API cubre todos los miembros, el modelo de permisos y el sistema de espejos. La especificación del protocolo incluye addons de ejemplo completos que puedes copiar.
Internet Archive
RTVE