Alla idéer. Alla skärmar.
Bygg en radioapp på en eftermiddag.
mHub är en öppen plattform som gör mappar med enkla filer och vanliga webbplatser till appar för mobiler, tv-apparater och datorer. Du behöver inte vara programmerare: kan du beskriva vad du vill ha kan en AI bygga det, och mHub ger det en plats att köras.
En plattform, tre delar.
mHub är inte en app. Det är tre delar som passar ihop, och alla är öppna. Två av dem är grunder: ett innehållsformat och ett webbläsar-API. Den tredje är apparna, och var och en av dem står på den ena grunden eller på båda.
Apparna
Det du faktiskt använder. Vuma gör tillägg till en enda skärm att bläddra i, och andra appar tar var sin idé till alla skärmar i hemmet. Alla är webbappar: inget att installera. Se apparna
Innehållet: tillägg
Ett tillägg är en källa till innehåll: filmer, radiokanaler, poddar, kurser. Under huven är det en mapp med små textfiler på valfritt webbhotell, beskriven av Addon Protocol v2. En AI kan skriva ett åt dig. Se protokollet
Förmågorna: window.mhub
Öppna en vanlig webbplats i en mHub-app så kan den göra saker som en webbläsare aldrig tillåter: läsa data från var som helst, överleva en död domän, leva på din tv. En namnrymd, en script-tagg: mHub Browser API. Se API:t
Våra favoriter. Alla är live.
Vuma står på båda grunderna; apparna bredvid visar hur långt en enda grund räcker. Fem appar, fem olika idéer, och var och en är en bra startpunkt.
Vuma
Ge Vuma tillägg så gör den dem till en enda skärm att bläddra i: alla kataloger som dina tillägg har, sökning i alla på en gång, ett bibliotek och en spelare som fortsätter där du slutade. Det är en enda webbapp som körs lika bra på mobiler, tv-apparater och datorer, och som själv hanterar touch, fjärrkontroll och muspekare.
Den står på båda grunderna: tilläggen står för innehållet, och i en mHub-webbläsare lägger Browser API till förmågorna som en vanlig sida aldrig har. Du kan till och med bädda in den på en egen sida, med dina tillägg och ditt namn: en HTML-fil.


Waves
Radiokanaler, poddar och gratis ljudböcker i en app. Waves är en HTML-fil ovanpå samma Vuma-bygge: fem ljudtillägg, en blågrön accentfärg och addonManager: "fixed", så källorna är bestämda och användaren bara slår på och av dem. Visa källkoden: sidan är hela handledningen.
Junior
Barn-tv. Ett tillägg, glada färger, tyska från första skärmen (locale: "de") och addonManager: "hidden": inget att ställa in fel från soffan. Också en HTML-fil ovanpå Vuma-bygget.
Mediathek
Tillägget är datan; det någon bygger ovanpå är appen. Mediathek är en HTML-fil direkt på tillägget ard-mediathek, utan Vuma under: rader, sökning, serier med sina avsnitt, undertexter och en spelare som minns var du slutade. Tillägget hämtar, sidan står för utseendet.
Glance
Den andra grunden på egen hand: Glance använder inga tillägg alls. En HTML-fil på Browser API som hämtar väder, rubriker, marknadspriser och status för dina egna servrar live till en lugn skärm. I en vanlig webbläsare fungerar den i begränsad form; i en mHub-app vaknar varje ruta till liv.
En idé, en mapp, alla skärmar.
Allt som har en lista kan bli ett tillägg, och allt som en webbläsare vägrar göra kan bli en webbsida i mHub. Det här är idéer vi gärna vill se förverkligade, och var och en är bara en prompt bort: välj en, så hamnar den i AI-prompten längre ner.
Titta
Din regionala tv-kanal
Allt som kanalen lägger ut på nätet, som rader per program, med kvällsnyheterna först.
En filmfestival
Programmet med trailers och handlingar, att bläddra i per dag, biograf och sektion.
Stumfilm
Filmer i allmän egendom från Internet Archive, sorterade efter årtionde och regissör.
Din idrottsförening
Höjdpunkter, hela matcher och säsongens spelschema som en livekatalog.
Stadens webbkameror
En stads offentliga webbkameror, hamnen, torget, berget, som livekanaler.
Kommunfullmäktige
Inspelningar och livesändningar från kommunfullmäktige, per möte och ärende.
Lyssna
Dina radiokanaler
De tio kanaler du faktiskt lyssnar på, med loggor, i den ordning du vill.
Ett poddnätverk
Alla program från ett nätverk via deras RSS-flöden, nyaste avsnittet först.
Ljudböcker per författare
LibriVox-inspelningar av en författare, kapitel som avsnitt, och du fortsätter där du slutade.
Godnattsagor
Korta ljudsagor för barn, med ett lugnt omslag per saga och utan reklam.
En församling
Gudstjänster och föredrag från din kyrka, moské eller gemenskap, live och inspelat.
En kanals egen app
Waves, med en kanals strömmar och poddar och dess egna färger. En HTML-fil.
Lär dig
Föreläsningar från ett universitet
De offentliga föreläsningsinspelningarna, per fakultet och termin, på tv:n i stället för på en laptop.
En språkkurs
Lektioner som avsnitt, i ordning, med ljudövningarna bredvid videorna.
Museivisningar
Ett museums video- och ljudguider, rum för rum.
Matlagningsskola
Receptvideor per typ av rätt och kök, med ingredienserna i beskrivningen.
En arkivläsare
Ett vänligt ansikte för Archive.org eller Project Gutenberg: bläddra, sök och läs som i en app.
Föredrag från en konferens
Alla inspelade föredrag från en konferensserie, per år och spår.
Hem och familj
En familjeskärm
Väder, rubriker och priset på det du bryr dig om, på en lugn skärm. Den här har vi byggt: det är Glance.
Kontrollpanel för hemmet
Lampor, NAS, skrivare, router. Webbläsare vägrar sådana lokala anrop; mHub-appen gör dem åt dig.
Kameravägg
Dina egna kameror, från det lokala nätverket, som ett rutnät på tv:n.
Familjens fotoram
Foton från din egen server som en bildkatalog: tv:n blir ramen.
Tecknat från en kanal
De gratis avsnitten från en barnkanal, per program, tryggt att lämna över till barnen.
Verktyg
En nyhetsläsare
Hämta vilket flöde som helst direkt från källan. Vanliga webbläsare blockerar det; i mHub fungerar det bara, och det är lätt att läsa från soffan.
En prisbevakare
Kolla priser och lagerstatus i butiker, håll en bevakningslista och se svaret på vilken skärm som helst.
Statustavla för servrar
Dina egna maskiner, deras diskar och tjänster, som rutor som blir röda innan någon ringer.
En YouTube-kanal, upplöst
Ett resolver-tillägg: klistra in en kanal och få dess videor som en katalog som går att spela.
Undertexter på ett språk
Ett undertexttillägg för ett språk, som svarar på imdb-id:n, från en öppen undertextkälla.
Var en titel strömmas
Skriv en film och se var den finns i ditt land. Ett objekttillägg ovanpå en öppen databas.
Har du gjort något av det här? Publicera det på mhub.mx: vi granskar det, hostar det under ditt namn och listar det i community-repositoryt.
Din egen app är en HTML-fil.
Waves och Junior är precis det här: ladda Vuma-bygget, ge det ett element, anropa mount. Den här filen, på valfritt statiskt webbhotell, är en färdig app med dina tillägg, ditt namn och dina färger, och den följer Vumas nya versioner av sig själv. Inget byggsteg, ingen serverkod, inget 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>
Ett tillägg är dess manifest-URL. De som hostas här listas i tilläggsindexet, och en AI kan bygga ett nytt åt dig.
Alla mount-alternativ, och var filerna kommer ifrån, finns dokumenterade i själva appen: Så gör du din egen app. Dokumentationen följer med bygget, så den beskriver versionen du ska ladda och inte den som den här sidan skrevs för.
Ett tillägg är en mapp med JSON-filer.
Ett tillägg är en källa till innehåll: filmer, radiokanaler, poddar, recept, kurser. Lägg mappen var som helst på webben, lägg till adressen i en app, så dyker allt i den upp där, redo att bläddra i. Version 2 av protokollet behöver ingen server: varje endpoint kan vara en statisk fil på valfritt CDN. Alla befintliga v1-tillägg fortsätter att fungera; apparna översätter mellan de två, och v1 stöds även framöver.
Statiskt först
Alla endpoints är GET, alla går att cacha, alla kan hostas som vanliga filer. En valfri POST för uppgiftssystemet.
/mhub-addon.json /catalog/{type}/{catalogId}.json /item/{type}/{id}.json /source/{type}/{id}.json
Kombinerbart
Kataloger, objektdetaljer, källor, resolvers och undertexter är separata resurser. Ett tillägg kan erbjuda alla eller bara en.
"resources": ["catalog", "item", "source", "resolve", "subtitle"]
Client-fetch-uppgifter
En endpoint kan svara med en uppgift i stället för data. Appen hämtar med användarens egen IP, så ett statiskt tillägg fungerar med geoblockerade API:er.
// tillägget förblir statiskt,
// klienten gör resan
mhub-addon.json
Ett minimalt tillägg är ett manifest och en katalogfil. Ladda upp båda till valfritt statiskt webbhotell så fungerar det. Specifikationen är OpenAPI 3.1 med genererade TypeScript-typer och ett klientbibliotek utan beroenden, MIT-licensierat, på GitHub.
{ "id": "my-movies", "name": "My Movies", "specVersion": 2, "resources": ["catalog"], "types": ["video"], "catalogs": [{ "id": "all", "name": "All", "type": "video" }] }
Beskriv det. En AI bygger det.
Hela tilläggsformatet ryms i en enda prompt, och du behöver aldrig läsa den. Kopiera prompten, lägg till din idé, så svarar AI:n med en mapp med filer. Ladda upp dem var som helst så är ditt tillägg live.
Kopiera prompten
Den pekar AI:n mot specifikationen. Fungerar med alla assistenter som kan läsa länkar, till exempel ChatGPT eller Claude.
Lägg till din idé
"Mina favoritradiokanaler." "Alla filmer av en regissör." "De offentliga föreläsningarna på mitt universitet." Allt som har en lista.
Ladda upp filerna
Alla statiska webbhotell fungerar, GitHub Pages är gratis. Lägg till adressen i en mHub-app och bläddra i ditt eget tillägg.
Läs specifikationen för mHub Addon Protocol v2 på
https://raw.githubusercontent.com/mediahubmx/protocol/main/openapi.yaml
och bygg ett tillägg åt mig. Ett tillägg är en mapp med statiska JSON-filer,
redo att laddas upp till valfritt webbhotell. Svara med varje fil: först dess
fullständiga sökväg, sedan hela dess innehåll.
Mitt tillägg: [beskriv din idé här]
Om din assistent inte kan öppna länkar kan du klistra in specifikationsfilen i chatten i stället. Specifikationen och kompletta exempeltillägg finns på GitHub.
Vad din webbplats kan göra i mHub
Allt finns under en namnrymd: window.mhub, och alla värdar erbjuder hela kärnan. Kontrollera en gång att namnrymden finns, sedan är det bara att anropa. Ingen SDK, inget byggsteg, inget konto: en script-tagg är hela installationen, och du får gärna hosta den själv.
- Värd
- …
- Enhet
- …
- Förmågor
- …
API:t är live i apparna och rullas ut med deras nya versioner. Skriv mot det i dag så fortsätter din sida att fungera oavsett: där ingen värd finns saknas window.mhub helt enkelt och din webbplats förblir en vanlig webbplats. Skaffa en webbläsare som har det.
mhub.fetch
Hämta vad som helst. Ingen CORS, och request-headers som webbläsaren annars reserverar för sig själv.
// cross-origin, läsbart const r = await mhub.fetch(url);
mhub.openStream
Vissa medier behöver egna request-headers för att spelas. Ett anrop, så väljer värden rätt väg på varje plattform.
const s = await mhub.openStream( { url, headers }); video.src = s.url;
mhub.storage
Nyckel/värde-lagring som följer din webbplats, inte domänen den råkar köras på. Ingen fråga, ingen installation.
await mhub.storage.set(k, v);
mhub-site.json
En domän nere, din webbplats laddas ändå. Lägg en liten fil på varje domän; webbläsaren hittar den, verifierar dina speglar och växlar över av sig själv. Ingen kod.
{ "id": "mysite", "endpoints": [ "https://a.example", "https://b.example" ] }
mhub.setLinks
En ruta på webbläsarens startskärm. Vägen tillbaka till din webbplats, som finns kvar mellan besöken.
mhub.setLinks([ { id, name, icon, url }]);
mhub.setSearch
Adressfältet blir din webbplats sökfält. Sökningar och förslag går direkt till din sida.
mhub.setSearch({ placeholder, onQuery, onSuggest });
mhub.device + capabilities
Vet var du körs och vad värden kan, från mobil till tv, redan innan sidan ritas första gången.
if (mhub.device.isTV) tvUi();
…och appdeklarationerna
En sida som körs som app talar om för värden vad den hanterar själv: sin egen bakåtnavigering (setBackHandler), en helskärmsspelare (setImmersive) och vägen ut (exit); en meta-tagg i HTML-koden säger att den är en app byggd för fjärrkontrollen. Alla medlemmar, med behörighetsmodellen och spegelsystemet, finns i API-referensen.
mhub.setBackHandler(depth); mhub.setImmersive(true); <meta name="mhub" content="app dpad">
Publicerat av folk som du.
56 communitytillägg från 31 skapare hittills. Logga in med din e-post, ladda upp en mapp som zip eller länka en som du hostar själv, och när tillägget har klarat granskningen finns det på mhub.mx/@you/addon, i communitylistan och i community-repositoryt.
Bygg något. Stort eller litet.
API-referensen täcker alla medlemmar, behörighetsmodellen och spegelsystemet. Protokollspecifikationen kommer med kompletta exempeltillägg som du kan kopiera.
Internet Archive
RTVE