Enhver idé. Alle skærme.
Byg en radioapp på en eftermiddag.
mHub er en åben platform, der gør mapper med simple filer og almindelige websites til apps til telefoner, tv og computere. Du behøver ikke være programmør: kan du beskrive, hvad du vil have, kan en AI bygge det, og mHub giver det et sted at køre.
Én platform, tre dele.
mHub er ikke én app. Det er tre dele, der passer sammen, og de er alle åbne. To af dem er fundamenter: et indholdsformat og et browser-API. Den tredje er appsene, og hver af dem står på det ene fundament eller på begge.
Appsene
Det, du faktisk bruger. Vuma samler tilføjelser på én skærm, du kan gennemse, og andre apps tager hver én idé ud på alle skærme i hjemmet. De er alle webapps: intet at installere. Se appsene
Indholdet: tilføjelser
En tilføjelse er en kilde til indhold: film, radiostationer, podcasts, kurser. Under motorhjelmen er det en mappe med små tekstfiler på en vilkårlig webhost, beskrevet af Addon Protocol v2. En AI kan skrive en til dig. Se protokollen
Evnerne: window.mhub
Åbn et almindeligt website i en mHub-app, og det kan ting, som en browser aldrig tillader: læse data hvor som helst fra, overleve et dødt domæne, bo på dit tv. Ét navnerum, ét script-tag: mHub Browser API. Se API'et
Vores favoritter. Alle er live.
Vuma står på begge fundamenter; appsene ved siden af viser, hvor langt ét fundament alene rækker. Fem apps, fem forskellige idéer, og hver af dem er et sted at starte fra.
Vuma
Giv Vuma tilføjelser, og den samler dem på én skærm, du kan gennemse: alle de kataloger, dine tilføjelser stiller til rådighed, søgning på tværs af dem alle, et bibliotek og en afspiller, der fortsætter, hvor du slap. Det er én webapp, der kører på telefoner, tv og computere, og som selv håndterer touch, fjernbetjening og mus.
Den står på begge fundamenter: tilføjelser leverer indholdet, og i en mHub-browser tilføjer Browser API de evner, en almindelig side aldrig har. Du kan endda montere den på din egen side, med dine tilføjelser og dit navn på: én HTML-fil.


Waves
Radiostationer, podcasts og gratis lydbøger som én app. Waves er én HTML-fil oven på det samme Vuma-build: fem lydtilføjelser, en turkis accentfarve og addonManager: "fixed", så kilderne er fastlagt, og brugeren kun slår dem til og fra. Se kildekoden: siden er hele vejledningen.
Junior
Børne-tv. Én tilføjelse, klare farver, tysk fra første skærm (locale: "de") og addonManager: "hidden": intet at stille forkert ind fra sofaen. Også én HTML-fil oven på Vuma-buildet.
Mediathek
Tilføjelsen er dataene; det, nogen bygger oven på den, er appen. Mediathek er én HTML-fil direkte på ard-mediathek-tilføjelsen, uden Vuma nedenunder: rækker, søgning, serier med deres afsnit, undertekster og en afspiller, der husker, hvor du stoppede. Tilføjelsen henter, siden står for udseendet.
Glance
Det andet fundament alene: Glance bruger slet ingen tilføjelser. Én HTML-fil på Browser API, der henter live-vejr, overskrifter, markedspriser og status for dine egne servere ind på én rolig skærm. I en almindelig browser klarer den sig pænt med mindre; i en mHub-app vågner hver flise.
Én idé, én mappe, alle skærme.
Alt med en liste kan blive en tilføjelse, og alt, hvad en browser nægter at gøre, kan blive et site i mHub. Det her er idéer, vi gerne vil se lavet, og hver af dem er kun en prompt væk: vælg én, så havner den i AI-prompten længere nede.
Se
Din regionale tv-station
Alle udsendelser, stationen lægger online, som rækker efter program, med aftennyhederne først.
En filmfestival
Programmet med trailere og resuméer, til at gennemse efter dag, spillested og sektion.
Stumfilm
Ophavsretsfri film fra Internet Archive, sorteret efter årti og instruktør.
Din sportsklub
Højdepunkter, hele kampe og sæsonens kampprogram som et live-katalog.
Byens live-kameraer
De offentlige webcams i én by, havnen, torvet, bjerget, som live-kanaler.
Byrådsmøder
Optagelser og livestreams fra dit byråd, efter møde og dagsordenspunkt.
Lyt
Dine radiostationer
De ti stationer, du faktisk lytter til, med logoer, i den rækkefølge, du kan lide.
Ét podcastnetværk
Alle programmer fra ét netværk fra dets RSS-feeds, nyeste afsnit først.
Lydbøger efter forfatter
LibriVox-indspilninger af én forfatter, kapitler som afsnit, kan genoptages.
Godnathistorier
Korte lydhistorier til børn, med et roligt omslag pr. historie og ingen reklamer.
En menighed
Gudstjenester og foredrag fra din kirke, moské eller dit trossamfund, live og optaget.
En stations egen app
Waves med én stations streams og podcasts og dens egne farver. Én HTML-fil.
Lær
Forelæsninger fra ét universitet
De offentlige forelæsningsoptagelser, efter fakultet og semester, på tv'et i stedet for på en bærbar.
Et sprogkursus
Lektioner som afsnit, i rækkefølge, med lydøvelserne ved siden af videoerne.
Museumsrundvisninger
Et museums video- og lydguider, rum for rum.
Madskole
Opskriftsvideoer efter type ret og køkken, med ingredienserne i beskrivelsen.
En arkivbrowser
Et venligt ansigt på Archive.org eller Project Gutenberg: gennemse, søg og læs som i en app.
Foredrag fra én konference
Alle optagede foredrag fra en konferenceserie, efter år og spor.
Hjem og familie
En familieskærm
Vejr, overskrifter og prisen på det, du holder øje med, som én rolig skærm. Den har vi bygget: det er Glance.
Kontrolpanel til hjemmet
Lys, NAS, printer, router. Browsere afviser den slags lokale anmodninger; mHub-appen sender dem for dig.
Kameravæg
Dine egne kameraer fra det lokale netværk som et gitter på tv'et.
Familiens fotoramme
Fotos fra din egen server som et billedkatalog: tv'et bliver rammen.
Tegnefilm fra én kanal
De gratis afsnit fra én børnekanal, efter program, trygge at give videre til børnene.
Værktøjer
En nyhedslæser
Hent ethvert feed direkte fra kilden. Almindelige browsere blokerer det; i mHub virker det bare, og det er let at læse fra sofaen.
En prisovervåger
Tjek butikker for priser og lagerstatus, hold en overvågningsliste, og se svaret på enhver skærm.
Statustavle for servere
Dine egne maskiner, deres diske og tjenester, som fliser, der bliver røde, før nogen ringer.
En YouTube-kanal, klar til afspilning
En resolver-tilføjelse: indsæt en kanal, og få dens videoer som et katalog, der kan afspilles.
Undertekster på ét sprog
En undertekst-tilføjelse til ét sprog, der svarer på imdb-id'er, fra en åben kilde til undertekster.
Hvor en titel kan streames
Skriv en film, og se, hvor den kan ses i dit land. En item-tilføjelse oven på en åben database.
Har du lavet en af dem? Udgiv den på mhub.mx: vi gennemgår den, hoster den under dit navn og viser den i fællesskabets repository.
Din egen app er én HTML-fil.
Waves og Junior er præcis dette: indlæs Vuma-buildet, giv det et element, kald mount. Denne fil er, på en vilkårlig statisk host, en færdig app med dine tilføjelser, dit navn og dine farver, og den følger selv med i Vumas udgivelser. Intet build-trin, ingen serverkode, ingen 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>
En tilføjelse er dens manifest-URL. Dem, der hostes her, står i tilføjelsesoversigten, og en AI kan bygge en ny til dig.
Alle mount-indstillinger, og hvor filerne kommer fra, er dokumenteret i selve appen: Sådan laver du din egen app. Vejledningen følger med buildet, så den beskriver den version, du er ved at indlæse, og ikke den, denne side blev skrevet til.
En tilføjelse er en mappe med JSON-filer.
En tilføjelse er en kilde til indhold: film, radiostationer, podcasts, opskrifter, kurser. Læg mappen hvor som helst på nettet, tilføj dens adresse i en app, og alt i den dukker op der, klar til at gennemse. Version 2 af protokollen kræver ingen server: hvert endpoint kan være en statisk fil på et vilkårligt CDN. Alle eksisterende v1-tilføjelser virker fortsat; appsene oversætter mellem de to, og v1 understøttes stadig.
Statisk først
Alle endpoints er GET, alle kan caches, og alle kan hostes som almindelige filer. Én valgfri POST til opgavesystemet.
/mhub-addon.json /catalog/{type}/{catalogId}.json /item/{type}/{id}.json /source/{type}/{id}.json
Kan kombineres
Kataloger, elementdetaljer, kilder, resolvere og undertekster er separate ressourcer. Én tilføjelse kan levere dem alle eller kun én.
"resources": ["catalog", "item", "source", "resolve", "subtitle"]
Client-fetch-opgaver
Et endpoint kan svare med en opgave i stedet for data. Appen henter med brugerens egen IP, så en statisk tilføjelse virker med geoblokerede API'er.
// tilføjelsen forbliver statisk,
// klienten tager turen
mhub-addon.json
En minimal tilføjelse er ét manifest og én katalogfil. Upload begge til en vilkårlig statisk host, og den virker. Specifikationen er OpenAPI 3.1 med genererede TypeScript-typer og et klientbibliotek uden afhængigheder, MIT-licenseret, 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.
Hele tilføjelsesformatet kan være i én prompt, og du behøver aldrig læse det. Kopiér prompten, tilføj din idé, og AI'en svarer med en mappe med filer. Upload dem hvor som helst, og din tilføjelse er live.
Kopiér prompten
Den peger AI'en hen på specifikationen. Virker med enhver assistent, der kan læse links, som ChatGPT eller Claude.
Tilføj din idé
"Mine yndlingsradiostationer." "Alle film af én instruktør." "De offentlige forelæsninger på mit universitet." Alt med en liste.
Upload filerne
Enhver statisk host virker, GitHub Pages er gratis. Tilføj adressen i en mHub-app, og gennemse din egen tilføjelse.
Læs specifikationen for mHub Addon Protocol v2 på
https://raw.githubusercontent.com/mediahubmx/protocol/main/openapi.yaml
og byg en tilføjelse (et addon) til mig. En tilføjelse er en mappe med statiske JSON-filer,
klar til at blive uploadet til en vilkårlig webhost. Svar med hver fil: dens fulde sti,
og derefter dens komplette indhold.
Min tilføjelse: [beskriv din idé her]
Hvis din assistent ikke kan åbne links, så indsæt specifikationsfilen i chatten i stedet. Specifikationen og komplette eksempeltilføjelser findes på GitHub.
Det kan dit site i mHub
Alt ligger under ét navnerum: window.mhub, og alle værter leverer hele kernen. Tjek én gang, om navnerummet findes, og kald det så bare. Intet SDK, intet build-trin, ingen konto: ét script-tag er hele opsætningen, og du må gerne selv hoste scriptet.
- Vært
- …
- Enhed
- …
- Funktioner
- …
API'et er live i appsene og rulles ud med deres udgivelser. Skriv op mod det i dag, så virker din side under alle omstændigheder: hvor der ikke er nogen vært, findes window.mhub simpelthen ikke, og dit site forbliver et almindeligt website. Få en browser, der har det.
mhub.fetch
Hent hvad som helst. Ingen CORS-begrænsninger, og du kan sætte request-headers, som browseren ellers forbeholder sig selv.
// på tværs af origins, læsbart const r = await mhub.fetch(url);
mhub.openStream
Nogle medier skal have deres egne request-headers for at spille. Ét kald, og værten vælger den rigtige vej på hver platform.
const s = await mhub.openStream( { url, headers }); video.src = s.url;
mhub.storage
Nøgle/værdi-lager, der følger dit site, ikke det domæne, det tilfældigvis kører på. Ingen forespørgsel, ingen opsætning.
await mhub.storage.set(k, v);
mhub-site.json
Er et domæne nede, indlæses dit site stadig. Læg én lille fil på hvert domæne; browseren finder den, verificerer dine spejle og skifter selv over. Ingen kode.
{ "id": "mysite", "endpoints": [ "https://a.example", "https://b.example" ] }
mhub.setLinks
En flise på browserens startskærm. Vejen tilbage til dit site, der overlever mellem besøgene.
mhub.setLinks([ { id, name, icon, url }]);
mhub.setSearch
Adresselinjen bliver dit sites søgning. Søgninger og forslag går direkte til din side.
mhub.setSearch({ placeholder, onQuery, onSuggest });
mhub.device + capabilities
Find ud af, hvor du kører, og hvad værten kan, fra telefon til tv, før siden tegnes første gang.
if (mhub.device.isTV) tvUi();
…og app-erklæringerne
En side, der kører som app, fortæller værten, hvad den selv håndterer: sin egen tilbage-navigation (setBackHandler), en afspiller i fuld skærm (setImmersive) og døren ud (exit); et meta-tag i HTML'en siger, at det er en app bygget til fjernbetjeningen. Alle medlemmer, med tilladelsesmodellen og spejlsystemet, står i API-referencen.
mhub.setBackHandler(depth); mhub.setImmersive(true); <meta name="mhub" content="app dpad">
Udgivet af folk som dig.
56 fællesskabstilføjelser fra 31 skabere indtil nu. Log ind med din e-mail, upload en mappe som zip eller link til en, du selv hoster, og når den er godkendt, ligger den på mhub.mx/@you/addon, i fællesskabslisten og i fællesskabets repository.
Byg noget. Stort eller småt.
API-referencen dækker alle medlemmer, tilladelsesmodellen og spejlsystemet. Protokolspecifikationen kommer med komplette eksempeltilføjelser, du kan kopiere.
Internet Archive
RTVE