Любая идея. Любой экран.
Собери радиоприложение за один вечер.
Открытая платформа mHub превращает папки с простыми файлами и обычные сайты в приложения для телефонов, телевизоров и компьютеров. Программистом быть не нужно: если ты можешь описать, что хочешь, ИИ это соберёт, а mHub даст ему место для работы.
Одна платформа, три части.
mHub не одно приложение, а три части, которые подходят друг к другу, и все они открыты. Две из них служат фундаментом: формат контента и Browser API. Третья часть состоит из приложений, и каждое из них опирается на один фундамент или на оба.
Приложения
То, чем ты на самом деле пользуешься. Vuma превращает аддоны в один экран для просмотра, а другие приложения доносят каждое свою идею до всех экранов в доме. Все они веб-приложения: ничего не нужно устанавливать. Смотреть приложения
Контент: аддоны
Аддон служит источником контента: фильмы, радиостанции, подкасты, курсы. Технически это папка с небольшими текстовыми файлами на любом веб-хостинге, описанная в Addon Protocol v2. ИИ может написать его за тебя. Смотреть протокол
Возможности: window.mhub
Открой обычный сайт внутри приложения mHub, и он сможет то, чего браузер никогда не позволяет: читать данные откуда угодно, пережить отключение домена, жить на твоём телевизоре. Одно пространство имён, один тег script: mHub Browser API. Смотреть API
Наши любимцы. И все уже работают.
Vuma опирается на оба фундамента; приложения рядом с ней показывают, как далеко может завести один фундамент. Пять приложений, пять разных идей, и с каждого из них можно начать.
Vuma
Дай Vuma аддоны, и она превратит их в один экран для просмотра: все каталоги твоих аддонов, поиск сразу по всем, библиотека и плеер, который продолжает с того же места. Это одно веб-приложение, которое одинаково работает на телефонах, телевизорах и компьютерах и само справляется с касаниями, пультом и мышью.
Она стоит на обоих фундаментах: аддоны приносят контент, а внутри браузера mHub Browser API добавляет возможности, которых у обычной страницы нет. Её даже можно встроить в собственную страницу, с твоими аддонами и твоим названием: один HTML-файл.


Waves
Радиостанции, подкасты и бесплатные аудиокниги в одном приложении. Waves сделан одним HTML-файлом поверх той же сборки Vuma: пять аудиоаддонов, бирюзовый акцент и addonManager: "fixed", так что источники заданы заранее, а пользователь только включает и выключает их. Открой исходный код страницы: она сама по себе и есть весь урок.
Junior
Детское телевидение. Один аддон, яркие цвета, немецкий язык с первого экрана (locale: "de") и addonManager: "hidden": с дивана в настройках ничего не сломаешь. Тоже один HTML-файл поверх сборки Vuma.
Mediathek
Аддон отвечает за данные, а то, что кто-то строит поверх него, становится приложением. Mediathek сделан одним HTML-файлом прямо на аддоне ard-mediathek, без Vuma внизу: ряды, поиск, сериалы с эпизодами, субтитры и плеер, который помнит, где ты остановился. Аддон загружает данные, страница отвечает за внешний вид.
Glance
Второй фундамент сам по себе: Glance вообще не использует аддоны. Один HTML-файл на Browser API, который собирает на одном спокойном экране погоду, заголовки новостей, биржевые цены и состояние твоих собственных серверов. В обычном браузере он аккуратно обходится без лишнего; внутри приложения mHub оживает каждая плитка.
Одна идея, одна папка, любой экран.
Всё, где есть список, может стать аддоном, а всё, что браузер делать отказывается, может стать сайтом внутри mHub. Это идеи, которые мы хотели бы увидеть воплощёнными, и до каждой всего один промпт: выбери любую, и она попадёт в промпт для ИИ ниже.
Смотреть
Твой региональный телеканал
Всё, что телеканал выкладывает в сеть, рядами по передачам, вечерние новости первыми.
Кинофестиваль
Программа с трейлерами и аннотациями, по дням, площадкам и секциям.
Немое кино
Фильмы из общественного достояния из Internet Archive, по десятилетиям и режиссёрам.
Твой спортивный клуб
Лучшие моменты, полные записи матчей и расписание сезона в виде живого каталога.
Веб-камеры города
Публичные веб-камеры одного города, гавань, площадь, гора, как каналы в прямом эфире.
Заседания горсовета
Записи и трансляции заседаний твоего городского совета, по заседаниям и пунктам повестки.
Слушать
Твои радиостанции
Те десять станций, которые ты действительно слушаешь, с логотипами, в удобном тебе порядке.
Одна сеть подкастов
Все шоу одной сети из их RSS-лент, новые выпуски первыми.
Аудиокниги одного автора
Записи LibriVox одного автора, главы как эпизоды, с продолжением с того же места.
Сказки на ночь
Короткие аудиосказки для детей, со спокойной обложкой у каждой и без рекламы.
Религиозная община
Службы и беседы твоей церкви, мечети или общины, в прямом эфире и в записи.
Собственное приложение радиостанции
Waves с потоками и подкастами одной станции и её собственными цветами. Один HTML-файл.
Учиться
Лекции одного университета
Открытые записи лекций по факультетам и семестрам, на телевизоре вместо ноутбука.
Языковой курс
Уроки как эпизоды, по порядку, с аудиоупражнениями рядом с видео.
Экскурсии по музею
Видео- и аудиогиды музея, зал за залом.
Кулинарная школа
Видеорецепты по типу блюда и кухне, с ингредиентами в описании.
Браузер архива
Дружелюбный интерфейс для Archive.org или Project Gutenberg: листай, ищи и читай, как в приложении.
Доклады одной конференции
Все записанные доклады серии конференций, по годам и секциям.
Дом и семья
Семейный экран
Погода, заголовки и цены на то, что тебе важно, на одном спокойном экране. Этот мы уже сделали: это Glance.
Панель управления домом
Свет, NAS, принтер, роутер. Браузеры отказываются делать такие локальные запросы; приложение mHub делает их за тебя.
Стена камер
Твои собственные камеры из локальной сети, сеткой на телевизоре.
Семейная фоторамка
Фотографии с твоего собственного сервера в виде каталога изображений: телевизор становится рамкой.
Мультфильмы одного канала
Бесплатные серии одного детского канала, по передачам, их спокойно можно дать ребёнку.
Инструменты
Читалка новостей
Загружай любую ленту прямо из источника. Обычные браузеры это блокируют; внутри mHub это просто работает, и читать удобно прямо с дивана.
Слежение за ценами
Проверяй цены и наличие в магазинах, веди список отслеживания, смотри результат на любом экране.
Панель статуса серверов
Твои собственные машины, их диски и сервисы в виде плиток, которые краснеют раньше, чем кто-нибудь позвонит.
Канал YouTube через резолвер
Аддон-резолвер: вставь канал и получи его видео в виде каталога, который воспроизводится.
Субтитры на одном языке
Аддон субтитров для одного языка, который отвечает на imdb id, из открытого источника субтитров.
Где посмотреть фильм
Введи название фильма и узнай, где его можно посмотреть в твоей стране. Аддон элементов поверх открытой базы данных.
Уже есть что-то из этого? Опубликуй на mhub.mx: мы проверим, разместим под твоим именем и покажем в репозитории сообщества.
Твоё собственное приложение умещается в один HTML-файл.
Waves и Junior устроены именно так: загрузи сборку Vuma, дай ей элемент, вызови mount. Этот файл на любом статическом хостинге уже становится готовым приложением с твоими аддонами, твоим названием и твоими цветами, и он сам подхватывает новые релизы Vuma. Без сборки, без серверного кода, без аккаунта.
<!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>
Аддон задаётся URL своего манифеста. Размещённые здесь аддоны перечислены в каталоге аддонов, а новый тебе может собрать ИИ.
Все параметры mount и то, откуда берутся файлы, описаны в самом приложении: Как сделать своё приложение. Инструкция поставляется вместе со сборкой, поэтому описывает ту версию, которую ты собираешься загрузить, а не ту, для которой писалась эта страница.
Аддон: папка JSON-файлов.
Аддон служит источником контента: фильмы, радиостанции, подкасты, рецепты, курсы. Положи папку в любое место в интернете, добавь её адрес в приложении, и всё её содержимое появится там, готовое к просмотру. Второй версии протокола сервер не нужен: каждый эндпоинт может быть статическим файлом на любом CDN. Все существующие аддоны v1 продолжают работать; приложения переводят между двумя версиями, и поддержка v1 сохраняется.
Статика прежде всего
Все эндпоинты работают через GET, все кэшируются, и все можно разместить как обычные файлы. Один необязательный POST для системы задач.
/mhub-addon.json /catalog/{type}/{catalogId}.json /item/{type}/{id}.json /source/{type}/{id}.json
Модульность
Каталоги, сведения об элементах, источники, резолверы и субтитры являются отдельными ресурсами. Один аддон может предоставлять их все или только один.
"resources": ["catalog", "item", "source", "resolve", "subtitle"]
Задачи на стороне клиента
Эндпоинт может ответить задачей вместо данных. Приложение делает запрос с IP самого пользователя, поэтому статический аддон работает и с API, закрытыми по географии.
// аддон остаётся статическим,
// запрос делает клиент
mhub-addon.json
Минимальный аддон состоит из одного манифеста и одного файла каталога. Загрузи оба на любой статический хостинг, и всё работает. Спецификация написана на OpenAPI 3.1, к ней есть сгенерированные типы TypeScript и клиентская библиотека без зависимостей, всё под лицензией MIT, на GitHub.
{ "id": "my-movies", "name": "My Movies", "specVersion": 2, "resources": ["catalog"], "types": ["video"], "catalogs": [{ "id": "all", "name": "All", "type": "video" }] }
Опиши. ИИ соберёт.
Весь формат аддонов умещается в один промпт, и тебе не придётся его читать. Скопируй промпт, добавь свою идею, и ИИ ответит папкой с файлами. Загрузи их куда угодно, и твой аддон заработает.
Скопируй промпт
Он направляет ИИ к спецификации. Работает с любым ассистентом, который умеет открывать ссылки, например ChatGPT или Claude.
Добавь свою идею
«Мои любимые радиостанции». «Все фильмы одного режиссёра». «Открытые лекции моего университета». Всё, где есть список.
Загрузи файлы
Подойдёт любой статический хостинг, GitHub Pages бесплатен. Добавь адрес в приложении mHub и открой свой собственный аддон.
Прочитай спецификацию mHub Addon Protocol v2 по адресу
https://raw.githubusercontent.com/mediahubmx/protocol/main/openapi.yaml
и собери для меня аддон. Аддон представляет собой папку статических JSON-файлов,
готовых к загрузке на любой веб-хостинг. В ответе приведи каждый файл: его полный путь,
а затем полное содержимое.
Мой аддон: [опиши здесь свою идею]
Если твой ассистент не умеет открывать ссылки, вставь файл спецификации прямо в чат. Спецификация и полные примеры аддонов лежат на GitHub.
Что может твой сайт внутри mHub
Всё находится в одном пространстве имён: window.mhub, и каждый хост предоставляет полное ядро. Один раз проверь, есть ли пространство имён, а дальше просто вызывай. Без SDK, без сборки, без аккаунта: вся настройка сводится к одному тегу script, и его можно разместить у себя.
- Хост
- …
- Устройство
- …
- Возможности
- …
API уже работает в приложениях и выходит вместе с их релизами. Пиши под него уже сегодня, и твоя страница будет работать в любом случае: где хоста нет, window.mhub просто отсутствует, и твой сайт остаётся обычным сайтом. Получить браузер с этим API.
mhub.fetch
Загружай что угодно. Без ограничений CORS и с заголовками запроса, которые браузер обычно оставляет за собой.
// с другого домена, и ответ можно прочитать const r = await mhub.fetch(url);
mhub.openStream
Некоторым медиа для воспроизведения нужны собственные заголовки запроса. Один вызов, и хост сам выберет правильный путь на любой платформе.
const s = await mhub.openStream( { url, headers }); video.src = s.url;
mhub.storage
Хранилище ключ/значение, привязанное к твоему сайту, а не к домену, на котором он сейчас работает. Без запросов разрешения, без настройки.
await mhub.storage.set(k, v);
mhub-site.json
Один домен упал, а твой сайт всё равно загружается. Размести один маленький файл на каждом домене; браузер найдёт его, проверит твои зеркала и сам переключится. Без кода.
{ "id": "mysite", "endpoints": [ "https://a.example", "https://b.example" ] }
mhub.setLinks
Плитка на домашнем экране браузера. Путь обратно к твоему сайту, который сохраняется между визитами.
mhub.setLinks([ { id, name, icon, url }]);
mhub.setSearch
Адресная строка становится поиском по твоему сайту. Запросы и подсказки идут прямо на твою страницу.
mhub.setSearch({ placeholder, onQuery, onSuggest });
mhub.device + capabilities
Узнай, где запущена страница и что умеет хост, от телефона до телевизора, ещё до первой отрисовки.
if (mhub.device.isTV) tvUi();
…и объявления приложения
Страница, которая работает как приложение, сообщает хосту, что берёт на себя: собственную навигацию назад (setBackHandler), полноэкранный плеер (setImmersive) и выход (exit); мета-тег в HTML говорит, что это приложение, сделанное для пульта. Все члены API, модель разрешений и система зеркал описаны в справочнике API.
mhub.setBackHandler(depth); mhub.setImmersive(true); <meta name="mhub" content="app dpad">
Опубликовано такими же людьми, как ты.
Уже 56 аддонов сообщества от 31 автора. Войди по email, загрузи папку в zip-архиве или дай ссылку на папку на своём хостинге, и после проверки аддон будет жить по адресу mhub.mx/@you/addon, в списке сообщества и в репозитории сообщества.
Создай что-нибудь. Большое или маленькое.
Справочник API описывает все члены, модель разрешений и систему зеркал. Спецификация протокола поставляется с полными примерами аддонов, которые можно скопировать.
Internet Archive
RTVE