← Marshal Stack

Руководство Marshal Stack

Всё, что умеет приложение, экран за экраном — от демо до ваших собственных проектов, серверов и тревог.

С чего начать

Marshal Stack — пульт для всего, что вы выпускаете: приложений в сторах, серверов за ними и сайтов, куда ходят люди. Приложение на iPhone — это пульт, реле собирает данные, а небольшой агент на каждом вашем сервере сообщает его нагрузку.

Установите приложение из App Store. На первом экране нажмите Explore with demo data — и осмотритесь на примерах проектов и серверов, без регистрации. Сверху остаётся полоска Demo mode; когда будете готовы к своим данным, нажмите Connect.

Вход — через GitHub. Проекты, серверы и ключи принадлежат этому аккаунту: в Настройки → Account есть Log out, а Delete account удаляет всё. Приложение говорит по-английски и по-русски — язык меняется в Настройки → Language.

Главная

Главная — сводка с одного взгляда. Сверху карточка на каждый сервер с процессором, памятью и диском: зелёное — в порядке, оранжевое — требует внимания, красное — критично. Если секция не нужна, сверните её стрелкой.

Ниже — карточка на каждый проект с текущими задачами и статусом: Working, Needs you, Stopped, Paused, Idle. Нажмите на проект — откроется весь его чеклист: Next, Backlog, сделанное за неделю. Задачи приходят с досок GitHub и Trello, которые вы подключили.

Главная: серверы и проекты с одного взгляда
Главная: серверы и проекты с одного взгляда
Чеклист проекта
Чеклист проекта

Кнопка с солнцем не даёт экрану гаснуть — удобно, когда телефон стоит на подставке как настенный монитор.

Проекты

Проект — это всё, что стоит за одним продуктом: его приложения в сторе, сайт и бэкенд, репозитории. Точка рядом с каждым показывает его состояние с одного взгляда.

Шаг 1

Добавьте проекты из GitHub

На вкладке «Проекты» нажмите + и выберите репозитории. Каждый станет проектом — переименовать и заполнить его можно позже.

Шаг 2

Подключите App Store

Откройте Настройки → Connections → App Store. В App Store Connect зайдите в «Пользователи и доступ» → «Интеграции» → App Store Connect API, создайте ключ и вставьте Key ID, Issuer ID и файл .p8. Оценки, отзывы и стадия релиза будут тянуться вашим же ключом.

Ключ остаётся на реле и больше никогда не показывается — даже вам.
Шаг 3

Свяжите приложения с проектами

Auto-match App Store apps в настройках подтягивает все приложения аккаунта и привязывает каждое к своему проекту. Прикрепить приложение можно и вручную — на экране проекта Edit.

Шаг 4

Следите за адресами

В разделе проекта «Health» нажмите Watch an address и дайте адресу подпись (api, web…). Проверка — раз в минуту; пуш приходит, когда адрес не ответил два раза подряд, и ещё раз — когда он снова заработал.

Внутри проекта видно, из чего он состоит, его состояние со временем ответа, оценки в сторе, репозитории и ссылки. В Edit задаются имя, сайт, бэкенд, адрес проверки и ссылка на админку.

Проекты
Проекты
Внутри проекта
Внутри проекта

Серверы

Подключите сервер — и увидите его нагрузку, самые тяжёлые процессы и тревоги. Подойдёт любой Linux-сервер с systemd, хватит и небольшого VPS. Три шага, около минуты.

Шаг 1

Возьмите команду

На вкладке «Серверы» нажмите +, затем Add server. Приложение покажет команду с уже вставленным одноразовым ключом — нажмите Copy.

Ключ живёт пятнадцать минут и срабатывает один раз. Истёк — откройте Add server снова и получите новый.
Шаг 2

Запустите её на сервере

Вставьте её в терминал на сервере. Нужен sudo — цифры нагрузки читаются из /proc. Вручную она выглядит так — замените YOUR-KEY на ключ из приложения:

curl -fsSL marshalstack.com/install | sudo bash -s -- YOUR-KEY

Она кладёт агента в /opt/marshal-agent и заводит таймер systemd, который раз в минуту отправляет показания. Установщик — обычный bash, его стоит прочитать до запуска.

Шаг 3

Подтвердите в приложении

Нажмите I ran the command. Сервер появится в списке в течение минуты — под своим именем хоста.

Серверы
Серверы
Add server: команда с одноразовым ключом
Add server: команда с одноразовым ключом
Агент читает процессор, память, диск, имена процессов и какие порты слушают наружу. Он не открывает ни одного порта — все соединения исходящие, по HTTPS — и никогда не читает ваши файлы, переменные окружения и базы данных. Системные логи читает только ночная вахта, и только если вы включили её для этого сервера.

Чтобы увидеть, что именно уходит с сервера, снимите показания вручную — агент напечатает то, что отправляет:

sudo marshal-agent --once

Удаление — одна команда, она откатывает всё, что сделал установщик:

sudo marshal-agent-uninstall

Тревоги и пороги

Нажмите на сервер — откроется полная картина: процессор, память и диск с трендом, нагрузка, своп и время последних показаний. Когда что-то пересекает черту, карточка Attention говорит, что случилось и что с этим можно сделать.

What is loading the server показывает самые тяжёлые процессы по процессору и по памяти — только имена и доли, больше ничего.

Alert thresholds решает, когда вас предупреждать. Процессор и память — после пяти минут подряд выше черты (по умолчанию 80%); диск — при первом же превышении (по умолчанию 88%). Ещё два предупреждения включены, пока вы их не выключите: процесс, запущенный из /tmp, — почти верный признак заражения, — и новый порт наружу с прошлой проверки.

Сервер с тревогой
Сервер с тревогой
Пороги тревог
Пороги тревог

Ночная вахта Бета

По умолчанию выключена. Включается для каждого сервера отдельно: Серверы → сервер → Night watch.

Когда сервер поднимает тревогу или перестаёт отвечать, вахта собирает факты прямо на сервере и присылает вам разбор: чем забит диск, какой сервис упал, кого убили за память. Ночью тоже.

Она только смотрит. Все команды, которые ей можно выполнять, — это фиксированный список только на чтение внутри агента (его печатает команда ниже), а секреты маскируются ещё до того, как что-то покинет сервер. Check now запускает проверку по требованию; журнал хранит каждый запуск и его вывод 30 дней.

sudo marshal-agent --ops

Чтобы запретить вахту на сервере, что бы ни говорило приложение, пропишите DUTY=off в /etc/marshal-agent/agent.conf.

ДальшеПоднимать сервис самой — перезапуск через ваш же конвейер, карточку Trello и GitHub Actions, под отдельное согласие. Пока не включено.
Ночная вахта на сервере
Ночная вахта на сервере

Уведомления

Пуши приходят о том, где нужны вы: отказ стора, новый отзыв, бэкенд перестал отвечать, тревога на сервере. Что именно присылать — в Настройки → Notifications → Alerts.

Если к телефону привязаны Apple Watch, приложение Marshal Stack на часах показывает ваши серверы — худшие наверху — с их нагрузкой, а усложнение на циферблате — сколько из них в строю. Нажмите на сервер — увидите процессор, память, диск и активную тревогу.

Тревоги в Telegram

Хотите те же тревоги в Telegram? Настройки → Telegram alerts подключает вашего собственного бота:

  1. Откройте @BotFather в Telegram и отправьте /newbot.
  2. Скопируйте выданный токен, вставьте его в приложение и нажмите Connect.
  3. Откройте своего бота и нажмите Start — это привяжет чат к аккаунту.
  4. Нажмите Send a test alert, чтобы проверить. Отключить можно в любой момент на том же экране.
Настройки
Настройки

Экипаж агентов Ранний доступ

Экипаж — ИИ-инженеры, которые берут задачи с ваших досок и делают их, — в разработке. Экран Your machines открыт только аккаунтам с ранним доступом; если он у вас есть, вот как подключить машину для экипажа.

Это другой агент, не серверный: он запускает Claude на вашей машине под вашей же подпиской Claude. Marshal Stack не видит ваш вход в Claude и не тратит ваши лимиты — и работа, и токены остаются вашими.

Что понадобится

Шаг 1

Подготовьте машину

Идеально подойдёт небольшой всегда включённый Linux-VPS; Mac тоже годится. Убедитесь, что есть python3 и curl:

python3 --version && curl --version
Шаг 2

Войдите в Claude на машине

Установите Claude Code на машину и создайте токен входа:

claude setup-token

Проверьте, что Claude отвечает:

claude -p "reply with exactly: AUTHOK"
Это ваш Claude. Агент запускает его под вашей подпиской и на вашей машине — Marshal Stack не видит вход и не тратит ваши лимиты.
Шаг 3

Создайте ключ агента

В приложении откройте Настройки → Your machines (или меню ⋯ на вкладке Control → Your machines). В разделе «Add a machine» выберите Server или Mac и нажмите Generate agent key.

Ключ показывается один раз. Приложение сразу даёт готовую команду с уже вставленным ключом — нажмите «Copy command».
Шаг 4

Установите агента

Вставьте эту команду в терминал на машине. Настраиваете вручную? Она выглядит так — замените YOUR-KEY на ключ из приложения:

curl -fsSL https://relay.marshalstack.com/agent/install.sh | AGENT_KEY='YOUR-KEY' bash

Она скачивает небольшой агент, создаёт изолированное окружение Python и ставит его как службу (launchd на Mac, systemd на Linux), чтобы он работал постоянно и переживал перезагрузку. Больше на машине ничего не меняется.

Шаг 5

Проверьте и начните работу

Через несколько секунд машина появится в разделе «Connected now» в приложении. Если нет — проверьте лог:

~/.marshalstack/agent.log

Готово. Задачи для этой машины теперь выполняются здесь, на вашем железе, вашим Claude.

Экран «Your machines» показывает все выданные ключи, какая машина онлайн и когда её видели в последний раз. Смахните ключ, чтобы отозвать его, — эта машина сразу отключится, остальные продолжат работать.

Если что-то не так

Агент сервера

Сервер не появляется
Возможно, ключ истёк — он живёт пятнадцать минут и срабатывает один раз, откройте Add server за новым. Ещё серверу нужны systemd и исходящий HTTPS. Запустите sudo marshal-agent --once — увидите, что идёт не так.
«run with sudo»
Агент читает /proc, а для этого нужен root. Запустите ту же команду снова — с sudo перед bash, точно как в приложении.
Показания перестали приходить
Проверьте таймер: systemctl status marshal-agent.timer. Если сервер переустанавливали — удалите старую запись в приложении и добавьте сервер заново.

Машина экипажа

«python3 is required»
Установите Python 3 (apt install python3 на Debian/Ubuntu или brew install python на Mac) и запустите команду ещё раз.
«No agent key found»
Ключ не дошёл до скрипта. Запустите команду снова, указав AGENT_KEY точно как в приложении, вместе с кавычками.
Не появляется как connected
Проверьте ~/.marshalstack/agent.log. Убедитесь, что машина достаёт relay.marshalstack.com по HTTPS и что проверка AUTHOK на шаге 2 прошла.
Не переживает перезагрузку
Хост без менеджера служб не может прописать автозапуск агента. Используйте Linux с systemd или Mac, на котором сохраняется вход в систему.

Приватность и ваши ключи

Ключи сторов остаются на реле и больше не показываются. Каждый агент сервера держит один ключ для одного сервера — и ничего кроме. Удалите сервер в приложении или запустите деинсталлятор — и этого ключа больше нет.

У экипажа вход в Claude никогда не покидает машину. Ключ агента лишь позволяет этой машине присоединиться к вашему аккаунту на реле — отозвать его можно в любой момент. Этого агента запускайте от обычного пользователя, а не root, если нет причин делать иначе.

Где-то застряли?

Напишите нам — на письма о настройке отвечаем лично.

Написать нам