mHub

Any idea. Every screen.

mHub turns folders of simple files and ordinary websites into apps for phones, TVs and desktops. You do not need to be a programmer: if you can describe what you want, an AI can build it, and mHub gives it a place to run.

Dyscover on a TV: a featured DW show above rows of documentaries and business videos, with the addon's catalogs along the top.
Dyscover, the first mHub app, on a TV. Everything on this screen comes from one addon: DW.
The idea

One hub, three layers.

mHub is not one app. It is an open foundation anyone can build on, made of exactly three parts.

Addons: things to browse

An addon is a source of content: films, radio stations, podcasts, recipes, courses. Under the hood it is a folder of small text files. Put the folder anywhere on the web, add its address in an app, and everything in it appears there, browsable.

The DW addon opened in Dyscover on a TV: a featured news video and a row of thumbnails, with search and topic filters.
The DW addon: Deutsche Welle's public news videos, browsed from the couch.

Websites with powers

Open a normal website inside an mHub app and it can do things a browser never allows: read data from anywhere on the web, survive a dead domain, live on your TV with full remote control.

The Dashboard showcase: clock, weather, market prices and news headlines as calm tiles on one screen.
The Dashboard showcase: one HTML file, pulling live weather, headlines and prices.
Early preview

Apps for every screen

mHub apps bring both to phones, TVs and desktops. Dyscover is the first app built for the new protocol, and anyone can build another: browse every catalog your addons expose, search across all of them, keep a library, resume where you left off.

Mobile · Android & iOS TV · Android TV, webOS, Tizen Desktop · Windows, macOS, Linux
Dyscover on a phone: a featured DW show with details and my-list buttons above a row of live TV channels. The DW addon in Dyscover on a phone: featured news video and a scrollable list of clips.
Build with AI

Describe it. An AI builds it.

The whole addon format fits into a single prompt, and you never have to read it. Copy the prompt, add your idea, and the AI answers with a folder of files. Upload them anywhere and your addon is live.

01

Copy the prompt

It points the AI at the spec. Works with any assistant that can read links, like ChatGPT or Claude.

02

Add your idea

"My favorite radio stations." "Every film by one director." "The public lectures of my university." Anything with a list.

03

Upload the files

Any static host works, GitHub Pages is free. Add the address in an mHub app and browse your own addon.

Read the mHub Addon Protocol v2 spec at
https://raw.githubusercontent.com/mediahubmx/protocol/main/openapi.yaml
and build an addon for me. An addon is a folder of static JSON files,
ready to upload to any web host. Answer with every file: its full path,
then its complete content.

My addon: [describe your idea here]

If your assistant cannot open links, paste the spec file into the chat instead. The spec and complete example addons live on GitHub.

Ideas

Not just media.

The obvious use is a media library on your TV. But the powers underneath are general, and most of these are impossible as a normal website. A few things a single web page can be inside mHub:

A news reader

Pull any feed straight from its source. Normal browsers block that; inside mHub it just works. Your reading list follows you, and it reads well from the couch.

A family dashboard

Weather, headlines and the price of things you care about, as one calm screen on the TV. We built this one; it is the screenshot further up, and it runs live.

A home control panel

Talk to the devices in your own network: lights, NAS, printer, router. Browsers refuse local requests like that; the mHub app makes them for you.

A podcast player

Fetch feeds, play episodes, resume where you stopped. One page, no server, no app store.

A price watcher

Check shops for prices and availability, keep a watchlist. The page asks; you see the answer on any screen.

An archive browser

A friendly face for open archives like Archive.org or Project Gutenberg. Browse, search and read them like an app.

For developers · The mHub Browser API

What your site can do inside mHub

Everything lives under one namespace: window.mhub, and every host serves the full core. Feature-detect the namespace once, then just call it. No SDK, no build step, no account: one script tag is the whole setup, and self-hosting it is fine.

<script src="https://mhub.mx/mhub.js"></script>
Checking this browser…
Host
Device
Capabilities

The API is built and documented, and it arrives with the next release of the apps. Write against it today and your page keeps working either way: where no host is present, window.mhub is simply absent and your site stays an ordinary website.

mhub.fetch

Fetch anything. No CORS, and request headers the browser normally reserves for itself.

// cross-origin, readable
const r =
  await mhub.fetch(url);

mhub.openStream

Some media needs its own request headers to play. One call, and the host picks the right route on every platform.

const s =
  await mhub.openStream(
    { url, headers });
video.src = s.url;

mhub.storage

Key/value storage that follows your site, not the domain it happens to run on. No prompt, no setup.

await mhub.storage.set(k, v);

mhub-site.json

One domain down, your site still loads. Serve one small file on every domain; the browser finds it, verifies your mirrors and fails over by itself. No code.

{ "id": "mysite",
  "endpoints": [
    "https://a.example",
    "https://b.example" ] }

mhub.setLinks

A tile on the browser home screen. The way back to your site, surviving between visits.

mhub.setLinks([
  { id, name, icon, url }]);

mhub.setSearch

The address bar becomes your site's search. Queries and suggestions go straight to your page.

mhub.setSearch({ placeholder,
  onQuery, onSuggest });

mhub.device + capabilities

Know where you run and what the host can do, from phone to TV, before first paint.

if (mhub.device.isTV) tvUi();
For developers · The mHub Addon Protocol, v2

An addon is a folder of JSON files.

Version 2 of the addon protocol needs no server: every endpoint can be a static file on any CDN. Every existing v1 addon keeps working; the apps translate between the two, and v1 stays supported.

Static-first

All endpoints are GET, all cacheable, all hostable as plain files. One optional POST for the task system.

/mhub-addon.json
/catalog/{type}/{catalogId}.json
/item/{type}/{id}.json
/source/{type}/{id}.json

Composable

Catalogs, item details, sources, resolvers and subtitles are separate resources. One addon can provide all of them or just one.

"resources": ["catalog",
  "item", "source",
  "resolve", "subtitle"]

Client-fetch tasks

An endpoint can answer with a task instead of data. The app fetches with the user's own IP, so a static addon works with geo-blocked APIs.

// addon stays static,
// the client does the trip

mhub-addon.json

A minimal addon is one manifest and one catalog file. Upload both to any static host and it works. The spec is OpenAPI 3.1 with generated TypeScript types and a zero-dependency client library, MIT licensed, on GitHub.

{ "id": "my-movies", "name": "My Movies", "specVersion": 2,
  "resources": ["catalog"], "types": ["video"],
  "catalogs": [{ "id": "all", "name": "All", "type": "video" }] }

Build something. Big or small.

The API reference covers every member, the permission model, and the mirror system. The protocol spec ships with complete example addons you can copy.