macOS (edge, только dev)
Бинарь ongrid-edge кросс-компилируется на darwin/amd64 и darwin/arm64. Makefile собирает оба как часть make build-edge-all:
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 installer | deploy/install/edge/install.sh явно ошибается с only linux is supported by this installer; got: darwin. |
| systemd-style supervision | macOS использует launchd. Никакой launchd plist не отгружается в релизе. |
journald log-source | macOS использует unified log (os_log); logs-плагину нужен был бы другой reader, даже если бы promtail имел бинарь. |
| ADR-024 staged-bundle upgrade hook | Hook — это 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
# 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 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.