macOS (edge, só dev)
O binário ongrid-edge cross-compila para darwin/amd64 e darwin/arm64. O Makefile builda 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-edgeOs binários existem para que engenheiros trabalhando no agent possam iterar num Mac sem subir uma VM Linux. Eles não são um alvo suportado de produção.
O que funciona no macOS
- O processo do agent inicia, lê env vars
ONGRID_EDGE_*do seu shell, e abre o tunnel geminio ao manager. - RPCs de ciclo de vida funcionam: o agent registra, envia heartbeats, aceita tool calls iniciados pelo manager.
- A skill
bash(cmdpolicy-gated) roda contra o host:ls,ps,df,unamee um conjunto curado read-only funcionam como anunciado. - O collector gopsutil embarcado alimenta
host_info,get_host_load,get_host_processes. Eles retornam números reais. - WebSSH contra
127.0.0.1:22funciona (assumindo que você habilitou Remote Login em System Settings).
O que NÃO funciona no macOS
| Capacidade | Por quê |
|---|---|
Plugin de logs promtail | Grafana não publica um binário promtail darwin em seus tarballs de release. O passo make fetch-promtail só fetcha Linux. |
Plugin de host-metrics node_exporter | Mesmo gap upstream — node_exporter distribui releases Linux-only. |
Plugin de proc-metrics process-exporter | Mesmo gap upstream. |
Plugin de traces otelcol-contrib | Bundled só para Linux — mantém o tarball de release sob controle. |
| O instalador curl-pipe | deploy/install/edge/install.sh explicitamente erra com only linux is supported by this installer; got: darwin. |
| Supervisão estilo systemd | macOS usa launchd. Nenhum plist launchd vem na release. |
Fonte de log journald | macOS usa o unified log (os_log); o plugin de logs precisaria de um reader diferente mesmo se o promtail tivesse binário. |
| O hook de upgrade staged-bundle do ADR-024 | O hook é um shell script Linux conectado em ExecStartPre=. Não há caminho equivalente. |
O que isso significa na prática: se você make build-edge-darwin-arm64 e roda ./bin/darwin-arm64/ongrid-edge no seu Mac, vai ver seu laptop aparecer na página Edges da UI do manager, vai poder conversar com o agent e fazer ele rodar ls, ps, df, mas a página Logs, os painéis de host da página Monitor, e a página Traces vão ficar todas vazias para esse edge.
Rodando o agent num Mac
# 1. cross-compile (ou só `go build`, já que você já está em darwin)
make build-edge-darwin-arm64
# 2. aponte para seu 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. rode em foreground
./bin/darwin-arm64/ongrid-edgeO agent loga em stderr. Não há /var/log/ongrid-edge/ porque nada o cria; se você quer um logfile, redirecione: ./ongrid-edge 2>&1 | tee ~/ongrid-edge.log.
launchd? Ainda não
Um plist launchd te daria start-on-login mais auto-restart. Não distribuímos um porque:
- Os quatro plugins não rodam no macOS de qualquer jeito, então um agent supervisionado lá te dá um subconjunto de features que é difícil de raciocinar.
- Hosts macOS em produção são extremamente raros. Preferimos não comprometer-se a uma plataforma meio-suportada.
Se você quer um para seu próprio desenvolvimento, aqui está um exemplo mínimo. Salve 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>Então launchctl load ~/Library/LaunchAgents/io.ongrid.edge.plist.
Codesigning / Gatekeeper
O agent não é codesigned. A primeira vez que você rodar, o macOS vai recusar com "cannot be opened because the developer cannot be verified". Ou:
xattr -d com.apple.quarantine ./ongrid-edgepara remover a flag de quarentena, ou- Right-click → Open no Finder uma vez, então ele lembra sua escolha.
Buildar do source (go build ./cmd/ongrid-edge) no seu próprio Mac evita a flag de quarentena inteiramente.
Você deve usar macOS em produção?
Não. Use uma caixa Linux. O agent roda perfeitamente numa VM Linux de $5/mês; rodar num Mac mini funciona para um homelab mas você perde os quatro plugins que entregam 80% do valor que o Ongrid entrega (host metrics, logs, traces).
O caminho dev-only existe para que possamos fazer dogfood do agent durante desenvolvimento. Não é um alvo de deployment.