mHub
Plateforme ouverte · Addon Protocol v2 · Browser API

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.

Fonctionne dans Vypn et dans tous les navigateurs mHub Open source, MIT Sans compilation, sans compte Fonctionne sur téléphones, téléviseurs et ordinateurs
Vuma sur un téléviseur : une émission de DW mise en avant au-dessus de rangées de documentaires et de vidéos économiques, avec les catalogues de l'addon en haut.
Vuma, une application mHub, sur un téléviseur. Tout ce qui s'affiche ici vient d'un seul addon : DW.
Le concept

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.

01

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

02

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

03

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

Première partie · Les applications

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.

Vuma sur un téléphone : une émission de DW mise en avant, avec ses détails et des boutons Ma liste, au-dessus d'une rangée de chaînes de télévision en direct.
L'addon DW dans Vuma sur un téléphone : une vidéo d'actualité mise en avant et une liste de clips à faire défiler.

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.

Waves : un podcast mis en avant au-dessus de rangées de stations de radio SomaFM, avec un logo de vague bleu sarcelle dans la barre latérale.
Waves : SomaFM, Radio Browser, podcasts et livres audio, bleu sarcelle sur fond sombre. Un fichier HTML sur Vuma.

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.

Junior : un dessin animé de KiKA mis en avant au-dessus de rangées d'émissions pour enfants, en allemand, avec un logo en étoile jaune dans la barre latérale.
Junior : l'addon KiKA et rien d'autre, avec une étoile sur la porte.

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.

Mediathek : des rangées de vidéos et de séries de l'ARD avec titres, dates et durées, et un champ de recherche.
Mediathek, un fichier HTML sur un addon, sans rien à héberger soi-même.

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.

Glance : horloge, météo, cours des marchés et gros titres sous forme de tuiles calmes sur un seul écran.
Glance, un fichier HTML qui affiche en direct la météo, les gros titres et les cours.
Ce que vous pouvez créer

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.

Addon : un dossier de fichiers JSON, hébergé n'importe où ou sur mhub.mx Site : une page web sur la Browser API Application : Vuma avec vos addons et votre nom

Regarder

Addon

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.

Addon

Un festival de cinéma

Le programme avec bandes-annonces et synopsis, à parcourir par jour, par salle et par section.

Addon

Cinéma muet

Des films du domaine public issus de l'Internet Archive, classés par décennie et par réalisateur.

Addon

Votre club de sport

Les temps forts, les matchs complets et le calendrier de la saison dans un catalogue en direct.

Addon

Webcams de la ville

Les webcams publiques d'une ville, le port, la place, la montagne, en chaînes en direct.

Addon

Conseil municipal

Les enregistrements et les directs de votre conseil municipal, par séance et par point de l'ordre du jour.

Écouter

Addon

Vos stations de radio

Les dix stations que vous écoutez vraiment, avec leurs logos, dans l'ordre qui vous plaît.

Addon

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.

Addon

Livres audio par auteur

Les enregistrements LibriVox d'un auteur, les chapitres comme épisodes, avec reprise de la lecture.

Addon

Histoires du soir

De courtes histoires audio pour enfants, avec une couverture apaisante par histoire et sans publicité.

Addon

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é.

Appli

L'application d'une station

Waves, avec les flux et les podcasts d'une seule station et ses propres couleurs. Un fichier HTML.

Apprendre

Addon

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.

Addon

Un cours de langue

Les leçons comme épisodes, dans l'ordre, avec les exercices audio à côté des vidéos.

Addon

Visites de musée

Les guides vidéo et audio d'un musée, salle par salle.

Addon

École de cuisine

Des vidéos de recettes par type de plat et par cuisine, avec les ingrédients dans la description.

Site

Un explorateur d'archives

Une interface agréable pour Archive.org ou Project Gutenberg : parcourir, chercher et lire comme dans une application.

Addon

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

Site

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.

Site

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.

Site

Mur de caméras

Vos propres caméras, depuis le réseau local, en grille sur le téléviseur.

Addon

Le cadre photo familial

Les photos de votre propre serveur sous forme de catalogue d'images : le téléviseur devient le cadre.

Appli

Télé pour enfants

Un addon, des couleurs vives, rien à dérégler depuis le canapé. C'est Junior.

Addon

Les dessins animés d'une chaîne

Les épisodes gratuits d'une chaîne pour enfants, par émission, à confier sans crainte.

Outils

Site

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é.

Site

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.

Site

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.

Addon

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.

Addon

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.

Addon

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é.

Première partie · Votre propre Vuma

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.

Deuxième partie · L'Addon Protocol v2

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" }] }
Deuxième partie · Créer avec l'IA

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.

01

Copiez le prompt

Il indique la spécification à l'IA. Fonctionne avec tout assistant capable de lire des liens, comme ChatGPT ou Claude.

02

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.

03

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.

Troisième partie · La Browser API de mHub

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.

<script src="https://mhub.mx/mhub.js"></script>
Vérification de ce navigateur…
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">
Communauté

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.