Jede Idee. Jeder Bildschirm.
Bau an einem Nachmittag eine Radio-App.
mHub ist eine offene Plattform, die aus Ordnern mit einfachen Dateien und ganz normalen Websites Apps für Handys, Fernseher und Desktops macht. Du musst nicht programmieren können: Wenn du beschreiben kannst, was du willst, kann eine KI es bauen, und mHub bringt es zum Laufen.
Eine Plattform, drei Teile.
mHub ist nicht eine einzelne App. Es sind drei Teile, die zusammenpassen, und jeder davon ist offen. Zwei sind Fundamente: ein Inhaltsformat und eine Browser-API. Der dritte Teil sind die Apps, und jede davon steht auf einem der Fundamente oder auf beiden.
Die Apps
Das, was du tatsächlich benutzt. Vuma macht aus Addons einen einzigen Bildschirm zum Stöbern, und andere Apps bringen jeweils eine Idee auf jeden Bildschirm im Haus. Alle sind Web-Apps: Es gibt nichts zu installieren. Zu den Apps
Die Inhalte: Addons
Ein Addon ist eine Quelle für Inhalte: Filme, Radiosender, Podcasts, Kurse. Technisch ist es ein Ordner mit kleinen Textdateien auf einem beliebigen Webhost, beschrieben durch das Addon Protocol v2. Eine KI kann dir eins schreiben. Zum Protokoll
Die Fähigkeiten: window.mhub
Öffne eine normale Website in einer mHub-App, und sie kann Dinge, die ein Browser nie erlaubt: Daten von überall lesen, eine tote Domain überleben, auf deinem Fernseher zu Hause sein. Ein Namespace, ein Script-Tag: die mHub Browser API. Zur API
Unsere Favoriten. Alle live.
Vuma steht auf beiden Fundamenten; die Apps daneben zeigen, wie weit ein Fundament allein trägt. Fünf Apps, fünf verschiedene Ideen, und jede davon ist ein guter Ausgangspunkt.
Vuma
Gib Vuma Addons, und es macht daraus einen einzigen Bildschirm zum Stöbern: jeder Katalog, den deine Addons anbieten, eine Suche über alle, eine Bibliothek, ein Player, der dort weitermacht, wo du aufgehört hast. Es ist eine Web-App, die auf Handys, Fernsehern und Desktops gleichermaßen läuft und Touch, Fernbedienung und Maus selbst beherrscht.
Es steht auf beiden Fundamenten: Addons liefern die Inhalte, und in einem mHub-Browser ergänzt die Browser API die Fähigkeiten, die eine normale Seite nie hat. Du kannst es sogar auf einer eigenen Seite einbinden, mit deinen Addons und deinem Namen: eine HTML-Datei.


Waves
Radiosender, Podcasts und kostenlose Hörbücher in einer App. Waves ist eine HTML-Datei auf demselben Vuma-Build: fünf Audio-Addons, ein türkiser Akzent und addonManager: "fixed", die Quellen sind also fest vorgegeben und man schaltet sie nur ein und aus. Schau dir den Quelltext an: Die Seite ist das ganze Tutorial.
Junior
Kinderfernsehen. Ein Addon, kräftige Farben, Deutsch ab dem ersten Bildschirm (locale: "de") und addonManager: "hidden": Vom Sofa aus lässt sich nichts verstellen. Ebenfalls eine HTML-Datei auf dem Vuma-Build.
Mediathek
Das Addon sind die Daten; was jemand darauf baut, ist die App. Mediathek ist eine HTML-Datei direkt auf dem ard-mediathek-Addon, ohne Vuma darunter: Reihen, Suche, Serien mit ihren Folgen, Untertitel und ein Player, der sich merkt, wo du aufgehört hast. Das Addon holt die Daten, die Seite sorgt für das Aussehen.
Glance
Das andere Fundament für sich allein: Glance nutzt überhaupt keine Addons. Eine HTML-Datei auf der Browser API, die Live-Wetter, Schlagzeilen, Marktpreise und den Status deiner eigenen Server auf einen ruhigen Bildschirm holt. In einem normalen Browser bleibt sie eingeschränkt nutzbar; in einer mHub-App erwacht jede Kachel.
Eine Idee, ein Ordner, jeder Bildschirm.
Alles mit einer Liste kann ein Addon sein, und alles, was ein Browser verweigert, kann eine Seite in mHub sein. Das sind Ideen, die wir gern umgesetzt sehen würden, und jede ist nur einen Prompt entfernt: Wähl eine aus, und sie landet weiter unten im KI-Prompt.
Schauen
Dein Regionalsender
Jede Sendung, die der Sender online stellt, in Reihen nach Format, die Abendnachrichten zuerst.
Ein Filmfestival
Das Programm mit Trailern und Inhaltsangaben, zum Stöbern nach Tag, Spielort und Sektion.
Stummfilmkino
Gemeinfreie Filme aus dem Internet Archive, sortiert nach Jahrzehnt und Regie.
Dein Sportverein
Highlights, ganze Spiele und der Spielplan der Saison als Live-Katalog.
Live-Webcams der Stadt
Die öffentlichen Webcams einer Stadt, Hafen, Marktplatz, Hausberg, als Live-Kanäle.
Gemeinderatssitzungen
Aufzeichnungen und Livestreams deines Gemeinderats, nach Sitzung und Tagesordnungspunkt.
Hören
Deine Radiosender
Die zehn Sender, die du wirklich hörst, mit Logos, in deiner Lieblingsreihenfolge.
Ein Podcast-Netzwerk
Jede Sendung eines Netzwerks aus seinen RSS-Feeds, neueste Folgen zuerst.
Hörbücher nach Autor
LibriVox-Aufnahmen eines Autors, Kapitel als Folgen, mit Weiterhören.
Gutenachtgeschichten
Kurze Hörgeschichten für Kinder, mit einem ruhigen Cover pro Geschichte und ohne Werbung.
Eine Gemeinde
Die Gottesdienste und Vorträge deiner Kirche, Moschee oder Gemeinschaft, live und aufgezeichnet.
Die eigene App eines Senders
Waves, mit den Streams und Podcasts eines Senders und seinen eigenen Farben. Eine HTML-Datei.
Lernen
Vorlesungen einer Uni
Die öffentlichen Vorlesungsaufzeichnungen, nach Fakultät und Semester, auf dem Fernseher statt auf dem Laptop.
Ein Sprachkurs
Lektionen als Folgen, in der richtigen Reihenfolge, mit den Hörübungen neben den Videos.
Museumsführungen
Die Video- und Audioguides eines Museums, Raum für Raum.
Kochschule
Rezeptvideos nach Gang und Landesküche, mit den Zutaten in der Beschreibung.
Ein Archiv-Browser
Eine freundliche Oberfläche für Archive.org oder Project Gutenberg: stöbern, suchen und lesen wie in einer App.
Vorträge einer Konferenz
Jeder aufgezeichnete Vortrag einer Konferenzreihe, nach Jahr und Track.
Zuhause und Familie
Ein Familienbildschirm
Wetter, Schlagzeilen und die Preise der Dinge, die dir wichtig sind, auf einem ruhigen Bildschirm. Den haben wir selbst gebaut: Es ist Glance.
Steuerzentrale fürs Zuhause
Licht, NAS, Drucker, Router. Browser verweigern solche lokalen Anfragen; die mHub-App stellt sie für dich.
Kamerawand
Deine eigenen Kameras aus dem lokalen Netzwerk als Raster auf dem Fernseher.
Der digitale Bilderrahmen der Familie
Fotos von deinem eigenen Server als Bilderkatalog: Der Fernseher wird zum Bilderrahmen.
Zeichentrick von einem Sender
Die kostenlosen Folgen eines Kindersenders, nach Sendung, bedenkenlos in Kinderhände zu geben.
Werkzeuge
Ein Newsreader
Hol dir jeden Feed direkt von der Quelle. Normale Browser blockieren das; in mHub funktioniert es einfach, und vom Sofa aus liest es sich gut.
Ein Preiswächter
Prüf Shops auf Preise und Verfügbarkeit, führ eine Beobachtungsliste und sieh das Ergebnis auf jedem Bildschirm.
Server-Statusboard
Deine eigenen Rechner, ihre Festplatten und Dienste, als Kacheln, die rot werden, bevor jemand anruft.
Ein YouTube-Kanal, aufgelöst
Ein Resolver-Addon: Kanal einfügen und seine Videos als abspielbaren Katalog bekommen.
Untertitel für eine Sprache
Ein Untertitel-Addon für eine Sprache, das auf imdb-IDs antwortet, aus einer offenen Untertitelquelle.
Wo ein Titel läuft
Gib einen Film ein und sieh, wo er in deinem Land läuft. Ein Item-Addon auf Basis einer offenen Datenbank.
Eins davon gebaut? Veröffentliche es auf mhub.mx: Wir prüfen es, hosten es unter deinem Namen und listen es im Community-Repository.
Deine eigene App ist eine HTML-Datei.
Genau das sind Waves und Junior: den Vuma-Build laden, ihm ein Element geben, mount aufrufen. Diese Datei ist auf jedem statischen Host eine fertige App mit deinen Addons, deinem Namen und deinen Farben, und sie folgt den Vuma-Releases von selbst. Kein Build-Schritt, kein Servercode, kein Konto.
<!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>
Ein Addon ist seine Manifest-URL. Die hier gehosteten stehen im Addon-Verzeichnis, und eine KI kann dir ein neues bauen.
Jede mount-Option und woher die Dateien kommen, ist in der App selbst dokumentiert: So baust du deine eigene App. Die Anleitung kommt mit dem Build, beschreibt also die Version, die du gleich lädst, und nicht die, für die diese Seite geschrieben wurde.
Ein Addon ist ein Ordner mit JSON-Dateien.
Ein Addon ist eine Quelle für Inhalte: Filme, Radiosender, Podcasts, Rezepte, Kurse. Leg den Ordner irgendwo ins Web, füg seine Adresse in einer App hinzu, und alles darin erscheint dort zum Stöbern. Version 2 des Protokolls braucht keinen Server: Jeder Endpunkt kann eine statische Datei auf einem beliebigen CDN sein. Jedes bestehende v1-Addon funktioniert weiter; die Apps übersetzen zwischen beiden, und v1 wird weiter unterstützt.
Statisch zuerst
Alle Endpunkte sind GET, alle cachebar, alle als einfache Dateien hostbar. Dazu ein optionaler POST für das Task-System.
/mhub-addon.json /catalog/{type}/{catalogId}.json /item/{type}/{id}.json /source/{type}/{id}.json
Kombinierbar
Kataloge, Details, Quellen, Resolver und Untertitel sind getrennte Ressourcen. Ein Addon kann alle davon liefern oder nur eine.
"resources": ["catalog", "item", "source", "resolve", "subtitle"]
Client-Fetch-Tasks
Ein Endpunkt kann statt mit Daten mit einem Task antworten. Die App ruft dann mit der eigenen IP des Nutzers ab, so funktioniert ein statisches Addon auch mit geogesperrten APIs.
// Addon bleibt statisch,
// der Client holt die Daten
mhub-addon.json
Ein minimales Addon besteht aus einem Manifest und einer Katalogdatei. Lad beide auf einen beliebigen statischen Host, und es funktioniert. Die Spezifikation ist OpenAPI 3.1 mit generierten TypeScript-Typen und einer Client-Bibliothek ohne Abhängigkeiten, MIT-lizenziert, auf GitHub.
{ "id": "my-movies", "name": "My Movies", "specVersion": 2, "resources": ["catalog"], "types": ["video"], "catalogs": [{ "id": "all", "name": "All", "type": "video" }] }
Beschreib es. Eine KI baut es.
Das ganze Addon-Format passt in einen einzigen Prompt, und du musst es nie lesen. Kopier den Prompt, füg deine Idee hinzu, und die KI antwortet mit einem Ordner voller Dateien. Lad sie irgendwo hoch, und dein Addon ist live.
Prompt kopieren
Er verweist die KI auf die Spezifikation. Funktioniert mit jedem Assistenten, der Links lesen kann, etwa ChatGPT oder Claude.
Idee hinzufügen
„Meine Lieblingsradiosender.“ „Jeder Film eines Regisseurs.“ „Die öffentlichen Vorlesungen meiner Uni.“ Alles, was sich als Liste denken lässt.
Dateien hochladen
Jeder statische Host funktioniert, GitHub Pages ist kostenlos. Füg die Adresse in einer mHub-App hinzu und stöbere in deinem eigenen Addon.
Lies die Spezifikation des mHub Addon Protocol v2 unter
https://raw.githubusercontent.com/mediahubmx/protocol/main/openapi.yaml
und bau mir ein Addon. Ein Addon ist ein Ordner mit statischen JSON-Dateien,
bereit zum Hochladen auf einen beliebigen Webhost. Antworte mit jeder Datei:
zuerst ihr vollständiger Pfad, dann ihr kompletter Inhalt.
Mein Addon: [beschreib hier deine Idee]
Wenn dein Assistent keine Links öffnen kann, füg stattdessen die Spezifikationsdatei in den Chat ein. Die Spezifikation und vollständige Beispiel-Addons liegen auf GitHub.
Was deine Seite in mHub kann
Alles liegt unter einem Namespace: window.mhub, und jeder Host liefert den vollständigen Kern. Prüf einmal, ob der Namespace da ist, und ruf ihn dann einfach auf. Kein SDK, kein Build-Schritt, kein Konto: Ein Script-Tag ist die ganze Einrichtung, und du darfst das Script auch selbst hosten.
- Host
- …
- Gerät
- …
- Fähigkeiten
- …
Die API ist in den Apps live und kommt mit ihren Releases überall an. Programmier schon heute dagegen, deine Seite funktioniert so oder so: Wo kein Host vorhanden ist, fehlt window.mhub einfach, und deine Seite bleibt eine normale Website. Hol dir einen Browser, der sie hat.
mhub.fetch
Hol dir alles. Kein CORS, und dazu Request-Header, die der Browser sonst für sich selbst reserviert.
// Cross-Origin, lesbar const r = await mhub.fetch(url);
mhub.openStream
Manche Medien brauchen zum Abspielen eigene Request-Header. Ein Aufruf, und der Host wählt auf jeder Plattform den richtigen Weg.
const s = await mhub.openStream( { url, headers }); video.src = s.url;
mhub.storage
Key-Value-Speicher, der deiner Seite folgt, nicht der Domain, auf der sie gerade läuft. Keine Rückfrage, keine Einrichtung.
await mhub.storage.set(k, v);
mhub-site.json
Eine Domain fällt aus, deine Seite lädt trotzdem. Leg auf jeder Domain eine kleine Datei ab; der Browser findet sie, prüft deine Mirrors und weicht von selbst aus. Kein Code.
{ "id": "mysite", "endpoints": [ "https://a.example", "https://b.example" ] }
mhub.setLinks
Eine Kachel auf dem Startbildschirm des Browsers. Der Weg zurück zu deiner Seite, der auch zwischen Besuchen bleibt.
mhub.setLinks([ { id, name, icon, url }]);
mhub.setSearch
Die Adressleiste wird zur Suche deiner Seite. Suchanfragen und Vorschläge gehen direkt an deine Seite.
mhub.setSearch({ placeholder, onQuery, onSuggest });
mhub.device + capabilities
Wisse schon vor dem ersten Rendern, wo du läufst und was der Host kann, vom Handy bis zum Fernseher.
if (mhub.device.isTV) tvUi();
…und die App-Deklarationen
Eine Seite, die als App läuft, sagt dem Host, was sie selbst übernimmt: ihre eigene Zurück-Navigation (setBackHandler), einen Vollbild-Player (setImmersive) und den Ausgang (exit); ein Meta-Tag im HTML sagt, dass sie eine App für die Fernbedienung ist. Jedes Element, samt Berechtigungsmodell und Mirror-System, steht in der API-Referenz.
mhub.setBackHandler(depth); mhub.setImmersive(true); <meta name="mhub" content="app dpad">
Veröffentlicht von Leuten wie dir.
Bisher 56 Community-Addons von 31 Personen. Melde dich mit deiner E-Mail an, lad einen Ordner als Zip hoch oder verlinke ein Addon, das du selbst hostest. Sobald es die Prüfung besteht, liegt es unter mhub.mx/@you/addon, in der Community-Liste und im Community-Repository.
Bau etwas. Groß oder klein.
Die API-Referenz beschreibt jedes Element, das Berechtigungsmodell und das Mirror-System. Die Protokollspezifikation enthält vollständige Beispiel-Addons zum Kopieren.
Internet Archive
RTVE