macOS (edge, solo dev)
El binario ongrid-edge cross-compila a darwin/amd64 y darwin/arm64. El Makefile construye ambos como parte de make build-edge-all:
build-edge-darwin-amd64 → bin/darwin-amd64/ongrid-edge
build-edge-darwin-arm64 → bin/darwin-arm64/ongrid-edgeLos binarios existen para que los ingenieros que trabajan en el agente puedan iterar en una Mac sin levantar una VM Linux. No son un target de producción soportado.
Qué funciona en macOS
- El proceso del agente arranca, lee env vars
ONGRID_EDGE_*desde tu shell y abre el túnel geminio al manager. - Los RPCs de ciclo de vida funcionan: el agente se registra, envía heartbeats, acepta tool calls iniciadas por el manager.
- El skill
bash(gateado por cmdpolicy) corre contra el host:ls,ps,df,unamey un set curado read-only funcionan como anunciado. - El collector gopsutil embebido respalda
host_info,get_host_load,get_host_processes. Devuelven números reales. - WebSSH contra
127.0.0.1:22funciona (asumiendo que has habilitado Remote Login en System Settings).
Qué NO funciona en macOS
| Capacidad | Por qué |
|---|---|
plugin promtail de logs | Grafana no publica un binario promtail darwin en sus release tarballs. El paso make fetch-promtail solo fetchea Linux. |
plugin node_exporter de host-metrics | Mismo gap upstream — node_exporter distribuye releases Linux-only. |
plugin process-exporter de proc-metrics | Mismo gap upstream. |
plugin otelcol-contrib de trazas | Bundled solo para Linux — mantiene el tarball de release bajo control. |
| El installer curl-pipe | deploy/install/edge/install.sh explícitamente erra con only linux is supported by this installer; got: darwin. |
| Supervisión estilo systemd | macOS usa launchd. No se envía plist launchd en el release. |
Log source journald | macOS usa el log unificado (os_log); el plugin de logs necesitaría un reader distinto incluso si promtail tuviera un binario. |
| El hook de upgrade de bundle staged de ADR-024 | El hook es un script shell Linux cableado a ExecStartPre=. No hay path equivalente. |
Lo que esto significa en la práctica: si haces make build-edge-darwin-arm64 y ejecutas ./bin/darwin-arm64/ongrid-edge en tu Mac, verás tu laptop aparecer en la página Edges del manager UI, puedes chatear con el agente y hacer que corra ls, ps, df, pero las páginas Logs, los paneles de host de Monitor y la página Trazas todas quedarán vacías para ese edge.
Corriendo el agente en una 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-edgeEl agente loguea a stderr. No hay /var/log/ongrid-edge/ porque nada lo crea; si quieres un logfile, redirige: ./ongrid-edge 2>&1 | tee ~/ongrid-edge.log.
¿launchd? Todavía no
Un plist launchd te daría arrancar-al-login más restart automático. No lo hemos enviado porque:
- Los cuatro plugins no corren en macOS de todos modos, así que un agente supervisado ahí te da un subset de features que es difícil de razonar.
- Los hosts macOS en producción son extremadamente raros. Preferimos no comprometernos a una plataforma medio-soportada.
Si quieres uno para tu propio desarrollo, aquí hay un ejemplo mínimo. Guarda como ~/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>Luego launchctl load ~/Library/LaunchAgents/io.ongrid.edge.plist.
Codesigning / Gatekeeper
El agente no está codesigned. La primera vez que lo corras, macOS rehusará con "cannot be opened because the developer cannot be verified". O bien:
xattr -d com.apple.quarantine ./ongrid-edgepara quitar el flag de quarantine, o- Right-click → Open en Finder una vez, luego recuerda tu elección.
Construir desde fuente (go build ./cmd/ongrid-edge) en tu propia Mac evita el flag de quarantine totalmente.
¿Deberías usar macOS en producción?
No. Usa una caja Linux. El agente corre perfecto en una VM Linux de $5/mes; correrlo en un Mac mini funciona para un homelab pero pierdes los cuatro plugins que suministran 80% del valor que Ongrid entrega (host metrics, logs, trazas).
La ruta dev-only existe para que podamos dogfoodear el agente durante desarrollo. No es un target de despliegue.