BPMkitStand
Свободный диспетчер стендов BPMSoft. Локальный веб-дашборд для запуска, остановки и мониторинга ваших стендов — в один клик, без консоли.
Что это
BPMkitStand — бесплатный инструмент экосистемы BPMkit для управления локальными и удалёнными стендами BPMSoft. Открывает лёгкий локальный веб-дашборд в браузере: видно состояние каждого стенда, его можно запустить/остановить/перезапустить, посмотреть логи текущей сессии и очистить Redis — всё без ручных команд в PowerShell.
Ядро (standkit) написано на чистой стандартной библиотеке Python — без тяжёлых зависимостей,
работает на Windows и Linux.
Возможности
- Диспетчер стендов — список из общего реестра BPMkit (
projects.json), состояние в реальном времени. - Жизненный цикл — старт / стоп / рестарт стенда с честной обратной связью (спиннер до готовности, без ложных «не поднялся» на прогреве).
- Логи — просмотр логов текущей сессии стенда, открытие папки логов стенда и папки BPMkit-проекта.
- Redis — очистка кэша стенда (номер БД берётся из конфигурации стенда).
- Тёмная и светлая тема с переключателем.
- Встроенная справка — кнопка «?» в шапке открывает кукбук: установка, работа с дашбордом, удалённые агенты, траблшутинг. Один самодостаточный файл, работает офлайн.
- Безопасность по умолчанию — дашборд слушает только
127.0.0.1, сессионный токен, защита мутаций (CSRF + проверка Origin). - Удалённые стенды (в развитии) — через лёгкие кроссплатформенные headless-агенты с TLS/mTLS.
- Канал обновлений (редакция Companion) — вкладка «Обновления»: паттерны разработки, обновление MCP с проверкой подписи и откатом, список отзыва лицензий.
Скриншоты
| Диспетчер (светлая тема) | Диспетчер (тёмная тема) |
|---|---|
Как это работает
BPMkitStand состоит из ядра, двух оболочек и канала обновлений:
standkit— ядро (MIT) на чистой стандартной библиотеке Python: движок жизненного цикла над реестромprojects.json(старт/стоп/рестарт процесса стенда), health-пробы (процесс / HTTP / порт БД / порт Redis), tail лога, Secret-first доступ к секретам. Без веб-слоя и сетевых зависимостей — можно использовать и как библиотеку/CLI.standkit_hub— локальный веб-дашборд (то, что видно на скриншотах). Сам себя отдаёт по HTTP черезstdlib http.server(vanilla JS/CSS, без CDN и сборки) и открывается в системном браузере; опционально — в нативном окне (standkit[desktop],--desktop). Устанавливается только на машину оператора.standkit_agent— лёгкий headless-демон на хосте удалённого стенда (см. ниже).standkit_companion— транспорт канала обновлений издателя (см. ниже). Хаб импортирует его мягко: пакета нет — дашборд работает как обычно, в свободной редакции.
Диспетчер — федеративный клиент: он собирает в один список и локальные стенды (управляет ими
напрямую через ядро), и удалённые (ходит к их агентам по HTTP). В таблице колонка «Транспорт»
показывает, как дашборд дотягивается до стенда: local или agent.
Реестр стендов — единый с MCP BPMkit: один projects.json (стенды под ключом projects),
путь резолвится через BPMSOFT_PROJECTS_FILE → %APPDATA%\BPMkit\projects.json
(~/.config/BPMkit/... на Linux) → ./projects.json. Секреты (пароли БД, токены агентов) в
реестре не хранятся — только ссылки на них (Secret-first).
Запуск стенда честный: дашборд поднимает dotnet <stand_dll> и держит спиннер до реального
ответа web-хоста по HTTP, а не рапортует «запущено» по факту создания процесса.
Виды хостинга (kestrel/iis/docker) — см. docs/HOSTING.md.
Удалённые стенды
Стенды на других хостах (виртуалки, серверы, контуры заказчика) управляются через федерацию
лёгких кроссплатформенных агентов (standkit_agent, Windows/Linux, только stdlib). На хосте
стенда поднимается агент, дашборд оператора ходит к нему по HTTPS с Bearer-токеном; стенд
объявляется удалённым одним полем transport: "agent" в реестре. Агент — RCE-поверхность по
дизайну, поэтому защищён secure-defaults: loopback по умолчанию, fail-closed на non-loopback без
TLS, TLS 1.2+/mTLS, скоупы control/readonly, lockout по IP, аудит.
Полное описание, установка агента, TLS/mTLS, служба и траблшутинг — в docs/REMOTE_STANDS.md.
Установка
Нужен Python 3.10+.
pip install standkit
Обновление — pip install -U standkit. Конкретная версия (в том числе откат) —
pip install "standkit==0.6.1"; полный список выпусков — на
PyPI.
Запуск дашборда:
standkit-hub
Откроется браузер с локальным дашбордом. Реестр стендов берётся из
%APPDATA%\BPMkit\projects.json (или из переменной окружения BPMSOFT_PROJECTS_FILE).
Реестр стендов
BPMkitStand использует тот же реестр, что и MCP BPMkit — единый projects.json.
Образец формата — projects.sample.json. Стенд можно
зарегистрировать прямо из дашборда (кнопка «Зарегистрировать стенд»).
Канал обновлений
Вкладка «Обновления» в дашборде — канал доставки от издателя BPMkit: паттерны
разработки, обновления самого MCP и список отозванных лицензий. В репозитории живёт
транспорт (пакет standkit_companion, stdlib-only: HTTP-клиент, планировщик трёх
циклов, проверка целостности и подписи Ed25519, раскладка файлов, откат). Лицензия,
содержимое паттернов и подписанные бинари — на стороне издателя, поэтому без
лицензионного ключа канал ничего не делает и честно об этом сообщает.
Редакция определяется наличием пакета: нет standkit_companion рядом — вкладка говорит
«свободная редакция», управление стендами работает как работало. Главный рубильник —
companion.enabled в настройках диспетчера; интервалы и циклы включаются там же
(«Настройки» → «Канал обновлений»).
Два правила, которые канал не нарушает: бинарь MCP не подменяется без вашей команды (автоматика доходит максимум до скачивания в отдельный каталог) и обновление не применяется без подтверждённой подписи — это не отключается настройкой.
То же самое из консоли, когда дашборд под рукой не нужен:
python -m standkit_companion status # состояние канала (плюс --json)
python -m standkit_companion sync # синхронизировать паттерны
python -m standkit_companion check-update # проверить обновление MCP (не качая файл)
python -m standkit_companion stage-update # скачать и проверить, не применяя
python -m standkit_companion apply-update # применить подготовленное
python -m standkit_companion rollback # вернуть предыдущую версию
Подробности — в кукбуке, раздел «Канал обновлений» (что приезжает, чем различаются три цикла, где лежат файлы, таблица диагностик). Почему транспорт живёт в MIT-ядре и чего модуль не делает никогда — docs/adr/0005-companion-transport-in-mit-core.md.
Безопасность
Диспетчер и агент проектировались с расчётом на прод-контур. Модель угроз, харденинг и чек-лист — в SECURITY.md. Кратко: fail-closed bind на loopback, TLS 1.2+/mTLS для агента, скоупы токена, per-IP lockout, аудит без утечки секретов. Канал обновлений разобран там же отдельным разделом (§4.2): fail-closed подпись исполняемого артефакта, публичный ключ из поставки, запись только в пользовательские каталоги.
Документация проекта
Карта всех документов — docs/README.md: кому, о чём и когда открывать. Коротко:
| Документ | Для кого |
|---|---|
| Кукбук — обзор, установка, дашборд, реестр, хостинг, агент, безопасность, траблшутинг. Один standalone-файл: в работающем диспетчере открывается кнопкой «?» в шапке, без него — прямо с диска в браузере | оператор |
| docs/COOKBOOK_LINUX.md — пошаговое развёртывание агента на Linux: pipx/venv, реестр, секреты, systemd, TLS/mTLS, разбор типичных ошибок с реальными сообщениями | администратор |
| docs/REMOTE_STANDS.md · docs/HOSTING.md · SECURITY.md | оператор / администратор |
| docs/ARCHITECTURE.md · docs/adr/ · docs/CHANGELOG.md | разработчик |
| docs/ROADMAP.md — крупные работы · docs/BACKLOG.md — заглушки и заделы в коде · docs/GAPs/ — код прав, а сценарий оператора ломается | планирование |
Статус:
standkit— молодой проект (0.9.x). Ядро/агент/хаб работоспособны, но ряд возможностей — это каркас/заделы (например, глубокие пробы БД/Redis, транспорты ssh/winrm, живая приёмка Docker/k8s/IIS). Что именно ещё не дописано — прозрачно перечислено в docs/BACKLOG.md.
BPMkitStand и Companion
Бесплатная версия — полноценный диспетчер стендов. Companion-версия дополнительно даёт канал обновлений: паттерны разработки, автообновление MCP BPMkit и контроль лицензии; поставляется в составе установщика MCP-клиента. Код транспорта канала лежит в этом репозитории под MIT (см. раздел «Канал обновлений» выше) — платное здесь то, что канал доставляет: лицензия, содержимое паттернов и подписанные бинари. Подробнее — на bpmkit.pro.
Лицензия
MIT © Владимир Терновский
Release files for standkit 0.12.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| standkit-0.12.5.tar.gz | 1.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| standkit-0.12.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.0 MB
Release files / standkit-0.12.5.tar.gz
| Download URL | standkit-0.12.5.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b97a4565684879caf554edc7f5582a088dd36cce6603e10c58e8355806e22f8e
|
|
BLAKE2b-256 checksum How to use checksums |
d579079db7ba81dd360c4145828d5dc2e00c20be8d428884d249f9e008bc925b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|
Release files / standkit-0.12.5-py3-none-any.whl
| Download URL | standkit-0.12.5-py3-none-any.whl |
|---|---|
| Size | 794.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
88f8f2f177022e9cd39f905c15bd3546311cf89be0068875a633d9f6e0bb265b
|
|
BLAKE2b-256 checksum How to use checksums |
901f30edb0eac318fbd2dffc7c41c31aa37f5c88de3cfe335e26ce2716bbaa56
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.0
|