npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

umbot

v3.0.13

Published

Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф

Readme

umbot

umbot — это TypeScript-фреймворк для разработки голосовых навыков и чат-ботов. Он даёт единую бизнес-логику для всех платформ — но одинаково эффективен, даже если вы работаете только с одной. Поддерживаются: Яндекс.Алиса, Маруся, Сбер Салют, а также Telegram, VK, MAX и Viber из коробки.

В отличие от большинства решений, требующих отдельной реализации под каждую платформу, umbot абстрагирует различия в форматах запросов и ответов, предоставляя разработчику единый, предсказуемый интерфейс. Это позволяет писать логику один раз — и запускать её везде.

Фреймворк следует SemVer. Breaking changes возможны только в MAJOR-версиях.

npm version License: MIT TypeScript Security Supported Platforms


💡 Почему umbot?

Больше не нужно писать несколько версий одного приложения.
Больше не нужно разбираться в JSON-форматах Алисы, Сбера, Маруси, Telegram, Max и тд.
Бизнес-логика — одна. Платформа — любая.

Ключевые преимущества:

  • ✅ Одна кодовая база для любой платформы. Хотите только Алису? Легко. Решите добавить Марусю или Telegram — просто добавьте нужный адаптер, логика остаётся.
  • ⚡ В типичных сценариях (до 1 000 команд) полная обработка запроса внутри фреймворка, включая поиск и выполнение команд, занимает менее 30 мс даже в самом сложном случае (fallback). В большинстве случаев это время составляет < 10 мс. Это оставляет разработчику более 2.5 секунд на выполнение собственной бизнес-логики — это критически важно для платформ с жёсткими тайм-аутами (Алиса, Маруся, Сбер и др.).
  • При первичной загрузке медиафайлов время ответа может превысить 1 секунду — поэтому umbot предусмотрел это, и рекомендует использовать предзагрузку необходимых ресурсов за счет использования класса Preload.
  • 🔒 Безопасная обработка регулярных выражений с защитой от ReDoS из коробки
  • 💾 Встроенное состояние, кэширование медиа, кнопки, карточки — «из коробки»
  • 🛠 TypeScript, CLI, автодополнение, 80%+ покрытие тестами
  • 🧰 Дополнительные утилиты для навигации и поиска текста, ускоряющие разработку.

umbot — пишешь один раз, запускаешь везде.

Единый API, адаптированный под платформу

umbot предоставляет унифицированный интерфейс для работы с ответами, но при этом учитывает специфику каждой платформы:

  • Голосовые платформы (Алиса, Маруся, Салют) — поддерживается весь доступный функционал (кнопки, аудиосообщения, карточки и т.д.).
  • Чат-боты (Telegram, VK, Viber и др.) — поддерживается только необходимый и востребованный набор функций (карточки, кнопки, аудиосообщения). Специфические элементы вроде опросов или кастомных интерфейсов мессенджеров исключены, так как они не имеют аналогов в голосовых платформах и редко нужны в кроссплатформенной логике.

Этот подход гарантирует, что ваш навык/бот будет вести себя предсказуемо и не потребует специальных обходных путей при переходе между платформами.

Чем umbot отличается от других решений?

Большинство фреймворков (например, telegraf, alice-sdk и тд) ориентированы только на одну платформу. Чтобы запустить приложение и в Алисе, и в Telegram, приходится:

  • писать две (или больше) версии логики,
  • поддерживать разные форматы ответов,
  • дублировать обработку состояний, кнопок, медиа
  • знать API каждой платформы.

umbot решает эту проблему:
одна бизнес-логика для всех платформ,
единый API для кнопок, карточек, голоса и текста,
автоматическая адаптация под формат каждой платформы "под капотом".

Это особенно ценно, если вы уже поддерживаете навык на Алисе и хотите быстро выйти в Марусю, Max или VK — без переписывания или существенных доработок кода.

Даже если вы пока разрабатываете только под одну платформу, umbot избавляет от boilerplate, даёт единый API для работы с состоянием, кнопками и медиа, а главное — не мешает, когда придёт время добавлять новые каналы.

Для кого umbot?

umbot — это не просто обёртка под несколько платформ. Это архитектурное решение для проектов, где диалог инициирует пользователь. Оно одинаково ценно как для одной платформы, так и для десятка.

Вы будете использовать umbot, если:

  • Вы разрабатываете под одну платформу (Алиса, Салют, Маруся, VK и др.). Вы получите чистое разделение логики и транспорта, избавитесь от дублирования кода внутри проекта и заложите архитектуру, которая безболезненно масштабируется, когда потребуется вторая платформа. Инструмент не усложнит — он упорядочит.
  • Вы поддерживаете несколько платформ одновременно. Вы перестанете синхронизировать изменения вручную. Новая функциональность появляется сразу везде, а поддержка разных API сводится к единому интерфейсу.
  • Вы проектируете систему с прицелом на будущее. Вы не хотите переписывать ядро, когда бизнес попросит добавить Telegram, корпоративный портал или голосового ассистента. umbot делает расширение предсказуемым.
  • Вы работаете в корпоративной среде с внутренними мессенджерами. Вы унифицируете разработку чат-ботов, упрощаете онбординг и переиспользование компонентов между командами.
  • Вы цените чистоту кода и не терпите копипасту. Вы устали переносить обработчики из проекта в проект или мучительно адаптировать бизнес-логику под каждый новый API. umbot позволяет писать ядро один раз и забыть о boilerplate.

Ключевая мысль: umbot — это не «надстройка для мультиплатформенности», а базовый слой, который делает разработку под любую платформу (даже одну) быстрее, чище и готовой к масштабированию.


Поддерживаемые платформы

| Платформа | Идентификатор | Статус | | :-------------------- | :------------ | -------------------- | | Яндекс.Алиса | alisa | ✅ Полная поддержка | | Маруся | marusia | ✅ Полная поддержка | | Сбер Салют (SmartApp) | smart_app | ✅ Полная поддержка | | Telegram | telegram | ✅ Полная поддержка | | VK | vk | ✅ Полная поддержка | | Max | max_app | ✅ Полная поддержка | | Viber | viber | ✅ Полная поддержка | | Ваша платформа | ... | ✅ За счет адаптеров |

💡 Нужна своя платформа?
Просто создайте свой адаптер согласно документации для нужной платформы и подключите его к приложению.
Это позволяет интегрировать umbot в любую внутреннюю систему, корпоративный мессенджер или поддержать любую другую платформу, например whatsapp.


🚀 Быстрый старт

Установите фреймворк:

npm install umbot

Создайте и запустите проект за четыре команды:

npx umbot create echo
cd echo
npm i
npm run start

Поправьте файлы нужным вам образом. Например:

// index.ts
import { Bot } from 'umbot';
import { EchoController } from './EchoController';

const bot = new Bot()
    .setAppConfig({ json: './data', isLocalStorage: true })
    .initBotController(EchoController)
    .start('localhost', 3000);
// EchoController.ts
import { BotController, WELCOME_INTENT_NAME } from 'umbot';

export class EchoController extends BotController {
    public action(intentName: string): void {
        if (intentName === WELCOME_INTENT_NAME) {
            this.text = 'Привет! Я повторяю за вами.';
        } else {
            this.text = `Вы сказали: ${this.userCommand}`;
        }
    }
}

Протестируйте приложение, и в случае необходимости опубликуйте его.

👉 Подробное руководство по запуску

Производительность

В стресс-тестах на стандартном оборудовании (AMD Ryzen 5 5600G, Windows 10) фреймворк при 1003 командах показывает:

  • Пропускная способность (реалистичный сценарий)41 000 RPS
    (эмуляция полного цикла: входящий запрос → нормализация → логика → ответ)
  • Пиковая пропускная способность (burst)40 000 RPS
    (одновременная обработка тысяч параллельных вызовов)
  • Последовательная пропускная способность (ядро)66 000 RPS
    (максимальная скорость одного потока)

Важно:

  • Тесты проводились без сетевых вызовов и операций с базами данных, поэтому цифры показывают потенциал ядра фреймворка.
  • В реальном проекте итоговый RPS будет определяться внешними факторами (сеть, БД, логика приложения).

Длительное тестирование (48 часов) не выявило утечек памяти или снижения производительности: средняя пропускная способность в последовательном сценарии осталась на уровне 66 000 RPS, а потребление памяти стабильно.

📚 Документация

Подробная документация доступна в следующих разделах:

Полезные ссылки

🛠 Инструменты разработчика

  • CLI команды

📝 Лицензия

MIT License. См. LICENSE для деталей.

🤝 Поддержка

Если у вас есть вопросы или предложения: