Chaque idée. Chaque écran.
Créez une application radio en un après-midi.
mHub est une plateforme ouverte qui transforme des dossiers de fichiers simples et des sites web ordinaires en applications pour téléphones, téléviseurs et ordinateurs. Pas besoin d'être programmeur : si vous savez décrire ce que vous voulez, une IA peut le construire, et mHub lui donne un endroit où tourner.
Une plateforme, trois parties.
mHub n'est pas une application. Ce sont trois parties qui s'emboîtent, et chacune d'elles est ouverte. Deux sont des fondations : un format de contenu et une API de navigateur. La troisième, ce sont les applications, et chacune repose sur l'une des fondations ou sur les deux.
Les applications
Ce que vous utilisez vraiment. Vuma réunit des addons sur un seul écran à parcourir, et d'autres applications portent chacune une idée sur tous les écrans de la maison. Ce sont toutes des applications web : rien à installer. Voir les applications
Le contenu : les addons
Un addon est une source de contenu : films, stations de radio, podcasts, cours. Techniquement, c'est un dossier de petits fichiers texte sur n'importe quel hébergeur web, décrit par l'Addon Protocol v2. Une IA peut en écrire un pour vous. Voir le protocole
Les pouvoirs : window.mhub
Ouvrez un site web normal dans une application mHub et il peut faire ce qu'un navigateur n'autorise jamais : lire des données de n'importe où, survivre à la disparition d'un domaine, vivre sur votre téléviseur. Un espace de noms, une balise script : la Browser API de mHub. Voir l'API
Nos préférées. Toutes en ligne.
Vuma repose sur les deux fondations ; les applications à ses côtés montrent jusqu'où une seule fondation peut mener. Cinq applications, cinq idées différentes, et chacune est un point de départ.
Vuma
Donnez des addons à Vuma et elle les réunit sur un seul écran à parcourir : tous les catalogues que proposent vos addons, une recherche sur l'ensemble, une bibliothèque, un lecteur qui reprend là où vous vous êtes arrêté. C'est une seule application web qui fonctionne aussi bien sur téléphone que sur téléviseur ou ordinateur, et qui gère elle-même le tactile, la télécommande et le pointeur.
Elle repose sur les deux fondations : les addons apportent le contenu, et dans un navigateur mHub, la Browser API ajoute les pouvoirs qu'une page ordinaire n'a jamais. Vous pouvez même l'intégrer à votre propre page, avec vos addons et votre nom : un seul fichier HTML.


Waves
Stations de radio, podcasts et livres audio gratuits réunis dans une seule application. Waves est un seul fichier HTML sur le même build de Vuma : cinq addons audio, une couleur d'accent bleu sarcelle, et addonManager: "fixed", si bien que les sources sont fixées et que l'utilisateur ne fait que les activer ou les désactiver. Affichez son code source : la page est à elle seule tout le tutoriel.
Junior
La télé pour enfants. Un addon, des couleurs vives, l'allemand dès le premier écran (locale: "de"), et addonManager: "hidden" : rien à dérégler depuis le canapé. Là aussi, un seul fichier HTML sur le build de Vuma.
Mediathek
L'addon, ce sont les données ; ce que l'on construit par-dessus, c'est l'application. Mediathek est un seul fichier HTML posé directement sur l'addon ard-mediathek, sans Vuma en dessous : rangées, recherche, séries avec leurs épisodes, sous-titres, et un lecteur qui se souvient de l'endroit où vous vous êtes arrêté. L'addon va chercher les données, la page s'occupe de l'apparence.
Glance
L'autre fondation, seule : Glance n'utilise aucun addon. Un fichier HTML sur la Browser API, qui réunit la météo en direct, les gros titres, les cours des marchés et l'état de vos propres serveurs sur un écran calme. Dans un navigateur ordinaire, elle se dégrade en douceur ; dans une application mHub, chaque tuile s'anime.
Une idée, un dossier, tous les écrans.
Tout ce qui tient dans une liste peut devenir un addon, et tout ce qu'un navigateur refuse de faire peut devenir un site dans mHub. Voici des idées que nous aimerions voir réalisées, et chacune n'est qu'à un prompt de distance : choisissez-en une, et elle arrive dans le prompt pour l'IA plus bas.
Regarder
Votre chaîne de télé régionale
Toutes les émissions que la chaîne met en ligne, en rangées par programme, avec le journal du soir en premier.
Un festival de cinéma
Le programme avec bandes-annonces et synopsis, à parcourir par jour, par salle et par section.
Cinéma muet
Des films du domaine public issus de l'Internet Archive, classés par décennie et par réalisateur.
Votre club de sport
Les temps forts, les matchs complets et le calendrier de la saison dans un catalogue en direct.
Webcams de la ville
Les webcams publiques d'une ville, le port, la place, la montagne, en chaînes en direct.
Conseil municipal
Les enregistrements et les directs de votre conseil municipal, par séance et par point de l'ordre du jour.
Écouter
Vos stations de radio
Les dix stations que vous écoutez vraiment, avec leurs logos, dans l'ordre qui vous plaît.
Un réseau de podcasts
Toutes les émissions d'un réseau à partir de leurs flux RSS, les épisodes les plus récents en premier.
Livres audio par auteur
Les enregistrements LibriVox d'un auteur, les chapitres comme épisodes, avec reprise de la lecture.
Histoires du soir
De courtes histoires audio pour enfants, avec une couverture apaisante par histoire et sans publicité.
Une communauté religieuse
Les offices et les prédications de votre église, de votre mosquée ou de votre communauté, en direct et en différé.
L'application d'une station
Waves, avec les flux et les podcasts d'une seule station et ses propres couleurs. Un fichier HTML.
Apprendre
Les cours d'une université
Les enregistrements des cours publics, par faculté et par semestre, sur le téléviseur plutôt que sur un ordinateur portable.
Un cours de langue
Les leçons comme épisodes, dans l'ordre, avec les exercices audio à côté des vidéos.
Visites de musée
Les guides vidéo et audio d'un musée, salle par salle.
École de cuisine
Des vidéos de recettes par type de plat et par cuisine, avec les ingrédients dans la description.
Un explorateur d'archives
Une interface agréable pour Archive.org ou Project Gutenberg : parcourir, chercher et lire comme dans une application.
Les conférences d'un événement
Toutes les conférences enregistrées d'une série d'événements, par année et par thématique.
Maison et famille
Un écran familial
La météo, les gros titres et le prix des choses qui vous intéressent, sur un écran calme. Celui-ci, nous l'avons construit : c'est Glance.
Tableau de bord de la maison
Lumières, NAS, imprimante, routeur. Les navigateurs refusent ce genre de requêtes locales ; l'application mHub les effectue pour vous.
Mur de caméras
Vos propres caméras, depuis le réseau local, en grille sur le téléviseur.
Le cadre photo familial
Les photos de votre propre serveur sous forme de catalogue d'images : le téléviseur devient le cadre.
Les dessins animés d'une chaîne
Les épisodes gratuits d'une chaîne pour enfants, par émission, à confier sans crainte.
Outils
Un lecteur d'actualités
Récupérez n'importe quel flux directement à la source. Les navigateurs normaux le bloquent ; dans mHub, cela fonctionne tout simplement, et c'est agréable à lire depuis le canapé.
Un suivi des prix
Surveillez les prix et la disponibilité dans les boutiques, tenez une liste de suivi, consultez le résultat sur n'importe quel écran.
Tableau d'état des serveurs
Vos propres machines, leurs disques et leurs services, en tuiles qui passent au rouge avant que quelqu'un n'appelle.
Une chaîne YouTube, résolue
Un addon de résolution : collez une chaîne, obtenez ses vidéos dans un catalogue prêt à être lu.
Des sous-titres pour une langue
Un addon de sous-titres pour une langue, qui répond aux identifiants imdb, à partir d'une source de sous-titres ouverte.
Où regarder un titre
Tapez un film, voyez où il est disponible dans votre pays. Un addon d'éléments construit sur une base de données ouverte.
Vous avez réalisé l'une de ces idées ? Publiez-la sur mhub.mx : nous la vérifions, l'hébergeons sous votre nom et la référençons dans le dépôt de la communauté.
Votre propre application tient dans un fichier HTML.
Waves et Junior, c'est exactement cela : charger le build de Vuma, lui donner un élément, appeler mount. Ce fichier, sur n'importe quel hébergeur statique, est une application complète avec vos addons, votre nom et vos couleurs, et il suit tout seul les nouvelles versions de Vuma. Sans compilation, sans code serveur, sans compte.
<!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, c'est l'URL de son manifeste. Ceux qui sont hébergés ici figurent dans l'index des addons, et une IA peut vous en construire un nouveau.
Chaque option de mount, et la provenance des fichiers, sont documentées dans l'application elle-même : Créer votre propre application. Cette documentation est livrée avec le build, elle décrit donc la version que vous allez charger, et non celle pour laquelle cette page a été écrite.
Un addon est un dossier de fichiers JSON.
Un addon est une source de contenu : films, stations de radio, podcasts, recettes, cours. Placez le dossier n'importe où sur le web, ajoutez son adresse dans une application, et tout ce qu'il contient y apparaît, prêt à être parcouru. La version 2 du protocole n'a besoin d'aucun serveur : chaque point d'accès peut être un fichier statique sur n'importe quel CDN. Tous les addons v1 existants continuent de fonctionner ; les applications font la conversion entre les deux, et la v1 reste prise en charge.
Statique d'abord
Tous les points d'accès sont en GET, tous peuvent être mis en cache, tous peuvent être hébergés comme simples fichiers. Un seul POST facultatif, pour le système de tâches.
/mhub-addon.json /catalog/{type}/{catalogId}.json /item/{type}/{id}.json /source/{type}/{id}.json
Modulaire
Catalogues, détails des éléments, sources, résolveurs et sous-titres sont des ressources distinctes. Un addon peut toutes les fournir, ou une seule.
"resources": ["catalog", "item", "source", "resolve", "subtitle"]
Tâches client-fetch
Un point d'accès peut répondre par une tâche au lieu de données. L'application effectue la requête avec l'adresse IP de l'utilisateur, si bien qu'un addon statique fonctionne avec des API géobloquées.
// l'addon reste statique,
// le client fait le trajet
mhub-addon.json
Un addon minimal, c'est un manifeste et un fichier de catalogue. Mettez les deux sur n'importe quel hébergeur statique et cela fonctionne. La spécification est en OpenAPI 3.1, avec des types TypeScript générés et une bibliothèque cliente sans dépendance, sous licence MIT, sur GitHub.
{ "id": "my-movies", "name": "My Movies", "specVersion": 2, "resources": ["catalog"], "types": ["video"], "catalogs": [{ "id": "all", "name": "All", "type": "video" }] }
Décrivez-le. Une IA le construit.
Tout le format des addons tient dans un seul prompt, et vous n'avez jamais besoin de le lire. Copiez le prompt, ajoutez votre idée, et l'IA répond avec un dossier de fichiers. Mettez-les en ligne n'importe où, et votre addon est disponible.
Copiez le prompt
Il indique la spécification à l'IA. Fonctionne avec tout assistant capable de lire des liens, comme ChatGPT ou Claude.
Ajoutez votre idée
« Mes stations de radio préférées. » « Tous les films d'un réalisateur. » « Les cours publics de mon université. » Tout ce qui tient dans une liste.
Mettez les fichiers en ligne
N'importe quel hébergeur statique convient, GitHub Pages est gratuit. Ajoutez l'adresse dans une application mHub et parcourez votre propre addon.
Lisez la spécification mHub Addon Protocol v2 à l'adresse
https://raw.githubusercontent.com/mediahubmx/protocol/main/openapi.yaml
et construisez-moi un addon. Un addon est un dossier de fichiers JSON statiques,
prêt à être mis en ligne sur n'importe quel hébergeur web. Répondez avec chaque fichier :
son chemin complet, puis son contenu intégral.
Mon addon : [décrivez votre idée ici]
Si votre assistant ne peut pas ouvrir de liens, collez plutôt le fichier de spécification dans la conversation. La spécification et des exemples d'addons complets se trouvent sur GitHub.
Ce que votre site peut faire dans mHub
Tout se trouve sous un seul espace de noms : window.mhub, et chaque hôte fournit l'intégralité du noyau. Détectez l'espace de noms une fois, puis appelez-le, tout simplement. Pas de SDK, pas de compilation, pas de compte : une balise script suffit, et vous pouvez l'héberger vous-même.
- Hôte
- …
- Appareil
- …
- Capacités
- …
L'API est disponible dans les applications et se déploie au fil de leurs versions. Codez avec elle dès aujourd'hui, votre page continuera de fonctionner dans tous les cas : là où aucun hôte n'est présent, window.mhub est simplement absent et votre site reste un site web ordinaire. Obtenez un navigateur qui l'intègre.
mhub.fetch
Récupérez n'importe quoi. Pas de CORS, et des en-têtes de requête que le navigateur se réserve d'habitude.
// cross-origin, lisible const r = await mhub.fetch(url);
mhub.openStream
Certains médias ont besoin de leurs propres en-têtes de requête pour être lus. Un seul appel, et l'hôte choisit la bonne voie sur chaque plateforme.
const s = await mhub.openStream( { url, headers }); video.src = s.url;
mhub.storage
Un stockage clé/valeur qui suit votre site, et non le domaine sur lequel il se trouve. Sans demande d'autorisation, sans configuration.
await mhub.storage.set(k, v);
mhub-site.json
Un domaine tombe, votre site se charge quand même. Servez un petit fichier sur chaque domaine ; le navigateur le trouve, vérifie vos miroirs et bascule tout seul. Sans code.
{ "id": "mysite", "endpoints": [ "https://a.example", "https://b.example" ] }
mhub.setLinks
Une tuile sur l'écran d'accueil du navigateur. Le chemin du retour vers votre site, conservé d'une visite à l'autre.
mhub.setLinks([ { id, name, icon, url }]);
mhub.setSearch
La barre d'adresse devient la recherche de votre site. Requêtes et suggestions arrivent directement sur votre page.
mhub.setSearch({ placeholder, onQuery, onSuggest });
mhub.device + capabilities
Sachez où vous tournez et ce dont l'hôte est capable, du téléphone au téléviseur, avant le premier affichage.
if (mhub.device.isTV) tvUi();
…et les déclarations d'application
Une page qui fonctionne comme une application indique à l'hôte ce qu'elle gère elle-même : sa propre navigation arrière (setBackHandler), un lecteur plein écran (setImmersive) et la sortie (exit) ; une balise meta dans le HTML indique qu'il s'agit d'une application conçue pour la télécommande. Chaque membre, avec le modèle de permissions et le système de miroirs, est décrit dans la référence de l'API.
mhub.setBackHandler(depth); mhub.setImmersive(true); <meta name="mhub" content="app dpad">
Publiés par des gens comme vous.
À ce jour, 56 addons communautaires de 31 créateurs. Connectez-vous avec votre adresse e-mail, envoyez un dossier au format zip ou indiquez le lien d'un dossier que vous hébergez, et une fois la vérification passée, il est en ligne sur mhub.mx/@you/addon, dans la liste de la communauté et dans son dépôt.
Créez quelque chose. Petit ou grand.
La référence de l'API couvre chaque membre, le modèle de permissions et le système de miroirs. La spécification du protocole est livrée avec des exemples d'addons complets que vous pouvez copier.
Internet Archive
RTVE