Код приходит так, как он у тебя уже лежит.
Репозиторий GitHub, GitLab или Bitbucket, zip-архив с папкой проекта или готовый образ, в том числе из своего реестра. Для образа сборка пропускается.
nodbox собирает приложение из репозитория, архива или готового образа, выдаёт адрес с HTTPS и держит его в работе: добавляет экземпляры под нагрузку и усыпляет без неё. Логи, метрики, версии и откат - в панели и по API, без SSH.
Платформа в раннем доступе, доступность пока не заявляем.
14:02:01Забираем код: ветка main, коммит a3f19c2
14:02:03Стек определён: Go, зависимости по go.mod
14:02:41Образ собран за 38 с
14:02:44Ждём ответа на пути проверки готовности
14:02:46Приложение ответило, трафик идёт на v19
14:06:12GET /orders 200 - 38 мс
14:06:09Медленный запрос к базе: 480 мс
14:06:02POST /orders 201 - 64 мс
14:05:57Экземпляр 2 принял трафик
Платформа сама определяет язык, зависимости и команду запуска, собирает образ и пускает трафик только на ответившую версию. Dockerfile, манифесты и описание сборки писать не нужно.
Репозиторий GitHub, GitLab или Bitbucket, zip-архив с папкой проекта или готовый образ, в том числе из своего реестра. Для образа сборка пропускается.
Язык, зависимости и команду запуска - по содержимому папки. На реальных приложениях проверены Node.js, Python и Go.
package.jsonNode.jspyproject.tomlPythongo.modGoАвтодеплой выключается. В монорепозитории версия выезжает, только если менялись файлы в указанных папках.
a3f19c2 services/api/orders.go v199b2e71d web/index.tsxпропущеноПлатформа ждёт ответа на пути проверки готовности. Не ответило за 5 минут - версия помечается неудачной, а прежняя продолжает работать.
Лог идёт живым потоком и показывает строку, на которой всё сломалось. Сборка ограничена 8 минутами, идущий деплой можно отменить.
14:10:02npm ci
14:10:31npm run build
14:10:44Error: Cannot find module ./config
14:10:44Сборка v20 не прошла, работает v19
Свой домен привязывается отдельно: платформа проверяет записи, выпускает сертификат и продлевает его сама. Протокол - HTTP/1.1 или HTTP/2.
Управляемые PostgreSQL и Redis поднимаются во внутренней сети проекта, строка подключения подставляется в переменные сама. Воркеры и боты работают постоянно, а не только по запросу.
Логи, метрики, состояние и лента событий лежат в панели и отдаются по API. Падение платформа замечает сама: состояние проверяется раз в минуту, а не когда кто-то зашёл посмотреть.
Их видно по конкретной версии, лента листается в обе стороны, а те же строки отдаются по API.
14:06:12v19GET /orders 200 - 38 мс
14:06:09v19Медленный запрос к базе: 480 мс
14:06:04v19POST /checkout 502 - платёжный шлюз не ответил
14:05:57v19Экземпляр 2 принял трафик
14:05:40v19Приложение ответило на проверку готовности
14:05:38v18GET /orders 200 - 41 мс
Запросы за сутки, медиана ответа, процессор, память и перезапуски. Снимок каждые 30 секунд, график за 24 часа.
Состояние проверяется раз в минуту и обновляется в панели без перезагрузки страницы.
Что происходило с приложением, пока никто не смотрел: деплой, падение, откат, сон и пробуждение.
Тот же образ, переменные и размер. Доступны три последние выкаченные версии.
Порог задаётся числом одновременных запросов, потолок - десять экземпляров на приложение. Пока приложение спит, его минуты не тарифицируются, а первый запрос будит его за 1,25 секунды.
Порог на экземпляр по умолчанию - 100 запросов, настраивается до 1 000. Потолок - 10 экземпляров на приложение, а ночью без запросов - ноль.
Столько проходит из полного нуля до первого байта, замер на реальном приложении. Засыпает приложение через 15 минут без запросов, паузу можно растянуть до часа.
Тогда приложение работает круглосуточно и тарифицируется всё время - для того, что должно отвечать без паузы.
Шесть размеров от 0,25 до 1 ядра, приложение переедет за один деплой. В Eco процессор делится с соседями, в High закреплён за приложением.
Изоляция - исходное требование к платформе, а не надстройка сверху. Каждый проект живёт в своём отсеке, а наружу приложение смотрит только своим адресом.
CI и агент получают токен с нужными правами, а проверяет права платформа: выключенное действие не выполнится, даже если клиент его попробует.
Читать, деплоить, менять мощность и удалять - четыре независимых переключателя. Токен живёт 60 суток, виден списком с отметкой последнего использования и отзывается одним действием.
Пароль в терминал не вводится: утилита показывает код, а вход подтверждается в браузере.
Если связь оборвалась посреди заказа, повторный запрос не заведёт второе приложение и вторую сборку.
Владелец отвечает за всё, разработчик деплоит без доступа к деньгам и участникам, наблюдатель только смотрит. Ссылка-приглашение живёт 7 дней.
nodbox подключается к редактору как MCP-сервер, то есть набор инструментов, которые агент вызывает сам. Агент заказывает деплой, читает логи и делает откат, но только то, что разрешает его токен.
Платишь за размер приложения по минутам работы. Минуты сна, остановки и падения не считаются, а сборки, трафик, логи и метрики не тарифицируются вовсе.
Один экземпляр: цена размера, умноженная на долю суток без сна. Округлено до рубля.
| Размер | Процессор | Память | Месяц без сна |
|---|---|---|---|
| Eco 256 | 0,25 ядра | 256 МБ | 190 ₽ |
| Eco 512 | 0,5 ядра | 512 МБ | 380 ₽ |
| Eco 1024 | 1 ядро | 1 ГБ | 760 ₽ |
| High 256 | 0,25 ядра | 256 МБ | 590 ₽ |
| High 512 | 0,5 ядра | 512 МБ | 1 190 ₽ |
| High 1024 | 1 ядро | 1 ГБ | 2 380 ₽ |
Размер в Eco и High один и тот же. В Eco процессор делится с соседями, в High закреплён за приложением.
Сборки, входящий и исходящий трафик, логи, метрики, адрес платформы и сами операции. Платишь только за приложение.
Счёт начинается, когда платформа подтвердила, что версия выкачена и отвечает. Сбой запуска клиент не оплачивает.
Новое приложение не заказывается, если баланса не хватит на неделю его работы. Лимиты проекта ограничивают ёмкость. Удаление спрашивает подтверждение.
Пополнение от 100 ₽ до 300 000 ₽ за раз через ЮKassa, есть автопополнение и закрывающие документы для юрлиц.
Письмо с датой, когда закончится баланс, - по фактическому расходу, а не по календарю.
Приложения останавливаются, новые не заказываются. Код, настройки и версии на месте.
Приложения сохранены. Пополнил - заказ снова открыт, запуск одним действием.
Второе письмо: ресурсы проекта будут удалены завтра.
Приложения проекта удаляются безвозвратно.
Лимиты проекта защищают от неожиданного счёта и от соседа, который занял бы всю площадку. Ниже - всё, во что можно упереться, и то, чего на платформе нет.
На платформе нет:
Все ответы открыты: раскрывающиеся списки прячут содержание и от человека, и от поисковика.
На VPS контейнеры, обратный прокси, сертификаты, автозапуск и мониторинг - твоя работа, а машина стоит денег и тогда, когда простаивает. Здесь это делает платформа, а спящее приложение стоит ноль. Цена этого - полного доступа к машине нет: приложение работает в песочнице.
По содержимому папки: язык, зависимости и команду запуска она определяет сама. На реальных приложениях проверены Node.js, Python и Go. Если образ уже собран, сборка пропускается и платформа только запускает его, в том числе из твоего реестра.
Постоянного диска у приложения нет: файлы между перезапусками не сохраняются. Данные держат управляемые PostgreSQL и Redis во внутренней сети проекта или твоё собственное хранилище.
Цифру в запросах в секунду не называем: она зависит от приложения сильнее, чем от размера, а непроверенное число хуже, чем никакого. Управляешь порогом: новый экземпляр добавляется, когда одновременных запросов на экземпляр больше 100, порог настраивается до 1 000, потолок - десять экземпляров на приложение.
Спящему приложению нужно куда-то проснуться, поэтому его место в лимитах проекта сохраняется и во сне. Денег оно при этом не стоит: тарифицируются только минуты работы.
Сборка длится не больше 8 минут, деплой целиком - не больше 35. Если приложение не ответило на проверку готовности за 5 минут, версия помечается неудачной с причиной отказа. Идущий деплой можно отменить, а работающая версия всё это время отвечает.
Выпусти для CI токен с правами «читать» и «деплоить». Право «удалять» у токена выключено, пока его не включить, а проверяет права платформа: выключенное действие не выполнится, даже если скрипт его попробует. Токен живёт 60 суток и отзывается одним действием.
Доступность мы пока не заявляем: платформа в раннем доступе. Если что-то сломается, чинить будем быстро, но сломаться может. Что сделано, чтобы сбой не задел работающее, - на этой странице: проверка готовности, откат, изоляция проектов.
На серверах в России, площадка одна: выбрать регион нельзя. Оплата в рублях через ЮKassa, интерфейс и ошибки на русском.
Код твой: репозиторий как был, так и есть, и приложение собирается из него обычным способом. Ни проприетарного формата, ни переписывания кода при переезде.
Места открываем постепенно: оставь заявку - напишем, когда подойдёт очередь.