macOS (Edge, nur Dev)
Das ongrid-edge-Binary kreuz-kompiliert nach darwin/amd64 und darwin/arm64. Das Makefile baut beide als Teil von make build-edge-all:
build-edge-darwin-amd64 → bin/darwin-amd64/ongrid-edge
build-edge-darwin-arm64 → bin/darwin-arm64/ongrid-edgeDie Binaries existieren, damit Engineers, die am Agenten arbeiten, auf einem Mac iterieren können, ohne eine Linux-VM hochzufahren. Sie sind kein unterstütztes Produktionsziel.
Was auf macOS funktioniert
- Der Agent-Prozess startet, liest
ONGRID_EDGE_*-Umgebungsvariablen aus Ihrer Shell und öffnet den geminio-Tunnel zum Manager. - Lifecycle-RPCs funktionieren: der Agent registriert, sendet Heartbeats, akzeptiert manager-initiierte Tool-Aufrufe.
- Das
bash-Skill (cmdpolicy-gated) läuft gegen den Host:ls,ps,df,unameund eine kuratierte Read-only-Menge funktionieren wie beworben. - Der eingebettete gopsutil-Collector stützt
host_info,get_host_load,get_host_processes. Sie geben echte Zahlen zurück. - WebSSH gegen
127.0.0.1:22funktioniert (vorausgesetzt, Sie haben Remote Login in den System-Einstellungen aktiviert).
Was auf macOS NICHT funktioniert
| Fähigkeit | Warum |
|---|---|
promtail-Logs-Plugin | Grafana veröffentlicht kein Darwin-promtail-Binary in ihren Release-Tarballs. Der make fetch-promtail-Schritt fetcht nur Linux. |
node_exporter-Host-Metriken-Plugin | Gleiche Upstream-Lücke — node_exporter liefert nur Linux-Releases aus. |
process-exporter-Proc-Metriken-Plugin | Gleiche Upstream-Lücke. |
otelcol-contrib-Traces-Plugin | Nur für Linux gebündelt — hält das Release-Tarball unter Kontrolle. |
| Der curl-pipe-Installer | deploy/install/edge/install.sh errort explizit mit only linux is supported by this installer; got: darwin. |
| systemd-style Supervision | macOS verwendet launchd. Keine launchd-plist wird im Release ausgeliefert. |
journald-Log-Quelle | macOS verwendet das Unified Log (os_log); das Logs-Plugin würde einen anderen Reader brauchen, auch wenn promtail ein Binary hätte. |
| Der ADR-024 Staged-Bundle-Upgrade-Hook | Der Hook ist ein Linux-Shell-Skript, in ExecStartPre= verdrahtet. Es gibt keinen äquivalenten Pfad. |
Was das in der Praxis bedeutet: wenn Sie make build-edge-darwin-arm64 und ./bin/darwin-arm64/ongrid-edge auf Ihrem Mac laufen lassen, sehen Sie Ihren Laptop auf der Edges-Seite der Manager-UI erscheinen, Sie können mit dem Agenten chatten und ihn ls, ps, df laufen lassen, aber die Logs-Seite, die Host-Panels der Monitor-Seite und die Traces-Seite werden alle für diese Edge leer bleiben.
Den Agenten auf einem Mac laufen lassen
# 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-edgeDer Agent loggt nach stderr. Es gibt kein /var/log/ongrid-edge/, weil nichts es erstellt; wenn Sie eine Log-Datei wollen, leiten Sie um: ./ongrid-edge 2>&1 | tee ~/ongrid-edge.log.
launchd? Noch nicht
Eine launchd-plist würde Ihnen Start-on-Login plus automatischen Restart geben. Wir haben keine ausgeliefert, weil:
- Die vier Plugins auf macOS sowieso nicht laufen, sodass ein überwachter Agent dort Ihnen eine Untermenge von Features gibt, über die schwer zu argumentieren ist.
- macOS-Hosts in Produktion sind extrem selten. Wir würden lieber nicht zu einer halb-unterstützten Plattform committen.
Wenn Sie eine für Ihre eigene Entwicklung wollen, hier ist ein minimales Beispiel. Speichern als ~/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>Dann launchctl load ~/Library/LaunchAgents/io.ongrid.edge.plist.
Codesigning / Gatekeeper
Der Agent ist nicht codesigniert. Das erste Mal, wenn Sie ihn ausführen, wird macOS mit „cannot be opened because the developer cannot be verified" ablehnen. Entweder:
xattr -d com.apple.quarantine ./ongrid-edge, um das Quarantine-Flag zu entfernen, oder- Rechtsklick → Open in Finder einmal, dann merkt es sich Ihre Wahl.
Aus dem Quellcode bauen (go build ./cmd/ongrid-edge) auf Ihrem eigenen Mac vermeidet das Quarantine-Flag vollständig.
Sollten Sie macOS in Produktion verwenden?
Nein. Verwenden Sie eine Linux-Maschine. Der Agent läuft perfekt auf einer $5/Monat-Linux-VM; ihn auf einem Mac mini laufen zu lassen funktioniert für ein Homelab, aber Sie verlieren die vier Plugins, die 80% des Wertes liefern, den Ongrid bringt (Host-Metriken, Logs, Traces).
Der nur-Dev-Pfad existiert, damit wir den Agenten während der Entwicklung dogfooden können. Es ist kein Deployment-Ziel.