Skip to content

macOS (edge, только dev)

Бинарь ongrid-edge кросс-компилируется на darwin/amd64 и darwin/arm64. Makefile собирает оба как часть make build-edge-all:

text
build-edge-darwin-amd64   → bin/darwin-amd64/ongrid-edge
build-edge-darwin-arm64   → bin/darwin-arm64/ongrid-edge

Бинари существуют, чтобы инженеры, работающие над агентом, могли итерировать на Mac, не поднимая Linux VM. Они не поддерживаемый production-target.

Что работает на macOS

  • Процесс агента стартует, читает env-переменные ONGRID_EDGE_* из вашей оболочки и открывает geminio-туннель к manager'у.
  • Lifecycle RPC работают: агент регистрируется, отправляет heartbeats, принимает manager-initiated tool-вызовы.
  • Скилл bash (cmdpolicy-gated) запускается против хоста: ls, ps, df, uname и curated read-only set работают как обещано.
  • Встроенный gopsutil collector подкрепляет host_info, get_host_load, get_host_processes. Они возвращают реальные числа.
  • WebSSH против 127.0.0.1:22 работает (предполагая, что вы включили Remote Login в System Settings).

Что НЕ работает на macOS

ВозможностьЗачем
promtail logs-плагинGrafana не публикует darwin promtail-бинарь в их release tarballs. Шаг make fetch-promtail fetch'ит только Linux.
node_exporter host-metrics плагинТот же upstream gap — node_exporter отгружает только Linux-релизы.
process-exporter proc-metrics плагинТот же upstream gap.
otelcol-contrib traces-плагинBundled только для Linux — держит release tarball под контролем.
Curl-pipe installerdeploy/install/edge/install.sh явно ошибается с only linux is supported by this installer; got: darwin.
systemd-style supervisionmacOS использует launchd. Никакой launchd plist не отгружается в релизе.
journald log-sourcemacOS использует unified log (os_log); logs-плагину нужен был бы другой reader, даже если бы promtail имел бинарь.
ADR-024 staged-bundle upgrade hookHook — это Linux shell-script, подключённый к ExecStartPre=. Нет эквивалентного пути.

Что это значит на практике: если вы make build-edge-darwin-arm64 и запускаете ./bin/darwin-arm64/ongrid-edge на вашем Mac, вы увидите ваш ноутбук, появляющийся на странице Edges UI manager'а, вы можете чатиться с агентом и заставить его запускать ls, ps, df, но страница Logs, host-панели страницы Monitor и страница Traces — все будут сидеть пустыми для этого edge.

Запуск агента на Mac

sh
# 1. cross-compile (or just `go build`, since you're already on darwin)
make build-edge-darwin-arm64

# 2. point at your manager
export ONGRID_EDGE_CLOUD_ADDR=ongrid.example.com:40012
export ONGRID_EDGE_ACCESS_KEY=<from manager UI: Edges → New>
export ONGRID_EDGE_SECRET_KEY=<from manager UI; shown once>

# 3. run it in the foreground
./bin/darwin-arm64/ongrid-edge

Агент логирует на stderr. Нет /var/log/ongrid-edge/, потому что ничто его не создаёт; если хотите logfile, redirect: ./ongrid-edge 2>&1 | tee ~/ongrid-edge.log.

launchd? Пока нет

launchd plist дал бы вам start-on-login плюс автоматический restart. Мы не отгрузили один, потому что:

  • Четыре плагина всё равно не запускаются на macOS, так что supervised агент там даёт вам подмножество фич, о котором трудно рассуждать.
  • macOS-хосты в production крайне редки. Мы предпочли бы не commit'иться на half-supported платформу.

Если вы хотите один для вашей собственной разработки, вот минимальный пример. Сохраните как ~/Library/LaunchAgents/io.ongrid.edge.plist:

xml
<?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>io.ongrid.edge</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/bin/ongrid-edge</string>
  </array>
  <key>EnvironmentVariables</key>
  <dict>
    <key>ONGRID_EDGE_CLOUD_ADDR</key><string>ongrid.example.com:40012</string>
    <key>ONGRID_EDGE_ACCESS_KEY</key><string>...</string>
    <key>ONGRID_EDGE_SECRET_KEY</key><string>...</string>
  </dict>
  <key>RunAtLoad</key><true/>
  <key>KeepAlive</key><true/>
  <key>StandardOutPath</key><string>/tmp/ongrid-edge.out.log</string>
  <key>StandardErrorPath</key><string>/tmp/ongrid-edge.err.log</string>
</dict>
</plist>

Затем launchctl load ~/Library/LaunchAgents/io.ongrid.edge.plist.

Codesigning / Gatekeeper

Агент не codesigned. Впервые, когда вы его запускаете, macOS откажет с «cannot be opened because the developer cannot be verified». Либо:

  • xattr -d com.apple.quarantine ./ongrid-edge, чтобы удалить quarantine-флаг, либо
  • Right-click → Open в Finder один раз, потом он помнит ваш выбор.

Сборка из исходников (go build ./cmd/ongrid-edge) на вашем собственном Mac полностью избегает quarantine-флага.

Стоит ли использовать macOS в production?

Нет. Используйте Linux-машину. Агент работает идеально на $5/month Linux VM; запуск на Mac mini работает для homelab'а, но вы теряете четыре плагина, которые поставляют 80% стоимости, которую Ongrid доставляет (host-метрики, логи, трейсы).

Dev-only путь существует, чтобы мы могли dogfood агента во время разработки. Это не deployment target.