Skip to content

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:

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

Die 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, uname und 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:22 funktioniert (vorausgesetzt, Sie haben Remote Login in den System-Einstellungen aktiviert).

Was auf macOS NICHT funktioniert

FähigkeitWarum
promtail-Logs-PluginGrafana veröffentlicht kein Darwin-promtail-Binary in ihren Release-Tarballs. Der make fetch-promtail-Schritt fetcht nur Linux.
node_exporter-Host-Metriken-PluginGleiche Upstream-Lücke — node_exporter liefert nur Linux-Releases aus.
process-exporter-Proc-Metriken-PluginGleiche Upstream-Lücke.
otelcol-contrib-Traces-PluginNur für Linux gebündelt — hält das Release-Tarball unter Kontrolle.
Der curl-pipe-Installerdeploy/install/edge/install.sh errort explizit mit only linux is supported by this installer; got: darwin.
systemd-style SupervisionmacOS verwendet launchd. Keine launchd-plist wird im Release ausgeliefert.
journald-Log-QuellemacOS 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-HookDer 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

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

Der 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
<?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.