Перейти к содержанию

macOS

Portable-бандл для macOS поставляется отдельно для Apple Silicon и Intel: darwin-arm64 и darwin-x64. Внутри — Node.js 22, приложение и bin/synth; Homebrew и Node.js на машине не нужны.

Поддерживаемые версии

Версия macOS Кодовое имя Архитектура Артефакт
26 Tahoe Intel (x86_64) synth-<version>-darwin-x64.tar.gz
26 Tahoe Apple Silicon (arm64) synth-<version>-darwin-arm64.tar.gz
27 Golden Gate Apple Silicon (arm64) synth-<version>-darwin-arm64.tar.gz

macOS 27 не поддерживает Intel

Для Intel-машин используйте macOS 26 Tahoe и артефакт darwin-x64. Артефакт darwin-arm64 на Intel не запускается; darwin-x64 на Apple Silicon запускается только через Rosetta и не является поддерживаемым сценарием.

Проверьте версию и архитектуру:

sw_vers
uname -m

uname -m возвращает arm64 или x86_64.

Распаковка и проверка

cd <bundle-dir>
shasum -a 256 -c SHA256SUMS
tar -xzf synth-<version>-darwin-arm64.tar.gz
cd synth-<version>-darwin-arm64
./bin/synth --version

Для Intel замените arm64 на x64.

Установка в пользовательский контур

На macOS Synth ставится per-user: системный LaunchDaemon не используется. Пример установки в ~/Applications/Synth:

mkdir -p ~/Applications
mv synth-<version>-darwin-arm64 ~/Applications/Synth
~/Applications/Synth/bin/synth --version

Запуск:

~/Applications/Synth/bin/synth serve --home ~/.synth

Сервер слушает 127.0.0.1:4300. Если ключ не задан, synth serve создаст устойчивый ключ в ~/.synth/data/secrets/api-key и напечатает его при старте. Этот ключ вводится в интерфейсе.

Ключ и автозапуск

Для LaunchAgent удобно не указывать ключ в plist: он будет создан в каталоге данных. Не храните API-ключ в открытом plist — файл читается другими процессами пользователя.

Gatekeeper и карантин

Скачанный из сети архив может получить атрибут com.apple.quarantine. При запуске macOS покажет предупреждение, что разработчик не подтверждён.

  1. Проверьте SHA256 архива и распакованных файлов — Проверка SHA256.
  2. Посмотрите атрибуты:
xattr -l ~/Applications/Synth/bin/synth
  1. Для локального запуска одобрите конкретный артефакт средствами macOS, если это разрешено политикой организации. Не снимайте карантин рекурсивно с каталогов и не отключайте Gatekeeper.

  2. В управляемом парке добавьте Synth в allowlist MDM по хешу/пути.

Не отключайте Gatekeeper глобально

spctl --master-disable и отключение SIP ослабляют защиту всей системы. Для закрытого контура добавьте Synth в allowlist по хешу (MDM) или одобрите конкретный артефакт средствами ОС, если это разрешено политикой.

LaunchAgent (автозапуск)

LaunchAgent запускает Synth при входе пользователя и перезапускает при падении. Файл — ~/Library/LaunchAgents/ru.itphx.synth.plist. Метка (Label) в бандле может отличаться; если установщик создал свой plist, используйте его.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>ru.itphx.synth</string>

    <key>ProgramArguments</key>
    <array>
        <string>/Users/<user>/Applications/Synth/bin/synth</string>
        <string>serve</string>
        <string>--home</string>
        <string>/Users/<user>/.synth</string>
    </array>

    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>

    <key>StandardOutPath</key>
    <string>/Users/<user>/Library/Logs/Synth/synth.log</string>
    <key>StandardErrorPath</key>
    <string>/Users/<user>/Library/Logs/Synth/synth.err.log</string>
</dict>
</plist>

Замените <user> на имя домашнего каталога. Создайте каталог логов и загрузите агент:

mkdir -p ~/Library/Logs/Synth

launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ru.itphx.synth.plist
launchctl kickstart -k gui/$(id -u)/ru.itphx.synth
launchctl print gui/$(id -u)/ru.itphx.synth | head -n 20

Остановка и выгрузка:

launchctl bootout gui/$(id -u)/ru.itphx.synth

Логи:

tail -f ~/Library/Logs/Synth/synth.log
tail -f ~/Library/Logs/Synth/synth.err.log

Только LaunchAgent

LaunchDaemon (системный, до входа пользователя) для Synth не используется. Это осознанное ограничение per-user поставки: данные, ключи и обновления принадлежат пользователю.

Каталоги

Что Пример пути Как изменить
Установка ~/Applications/Synth выбрать другой каталог при распаковке
Home (конфиг и данные) ~/.synth --home / SYNTH_HOME
Данные ~/.synth/data --data-dir / SYNTH_DATA_DIR
Секреты ~/.synth/data/secrets внутри каталога данных
Логи LaunchAgent ~/Library/Logs/Synth пути в plist

Точная раскладка бандла указана в manifest.json; пути выше — пример для ручной установки.

Обновление и удаление

  • Обновление — выгрузить LaunchAgent, заменить каталог приложения новой версией, выполнить synth migrate --yes, загрузить агент обратно. Не используйте synth update в офлайне — Эксплуатация.
  • Удаление — launchctl bootout, затем удалить ~/Applications/Synth. Данные в ~/.synth по умолчанию сохраняются; для удаления используйте synth uninstall --purge --yes.

Что дальше