Skip to content

macOS(edge、開発限定)

ongrid-edge バイナリは darwin/amd64darwin/arm64 にクロスコンパイルされます。Makefile は make build-edge-all の一環で両方をビルドします:

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

これらのバイナリは、エージェントを開発するエンジニアが Linux VM を立ち上げずに Mac 上で反復作業できるように存在します。サポートされる本番ターゲット ではありません

macOS で動くもの

  • エージェントプロセスが起動し、シェルから ONGRID_EDGE_* env vars を読み、manager への geminio トンネルを開く。
  • ライフサイクル RPC が動く:エージェントが登録、ハートビート送信、manager 起源のツール呼び出し受け入れ。
  • bash スキル(cmdpolicy ゲート付き)がホストに対して動く:lspsdfuname とキュレートされた読み取り専用セットが宣伝通りに動く。
  • 埋め込み gopsutil コレクターが host_infoget_host_loadget_host_processes をバックアップ。実数を返す。
  • 127.0.0.1:22 への WebSSH が動く(システム設定でリモートログインを有効にしていれば)。

macOS で動かないもの

機能なぜ
promtail logs プラグインGrafana はリリースタールボールに darwin promtail バイナリを公開していない。make fetch-promtail ステップは Linux のみ fetch する。
node_exporter host-metrics プラグイン同じ上流のギャップ —— node_exporter は Linux のみのリリースを出荷する。
process-exporter proc-metrics プラグイン同じ上流のギャップ。
otelcol-contrib traces プラグインLinux のみバンドル —— リリースタールボールを制御するため。
curl-pipe インストーラdeploy/install/edge/install.sh は明示的に only linux is supported by this installer; got: darwin でエラーする。
systemd 風監督macOS は launchd を使う。リリースに launchd plist は出荷されない。
journald ログソースmacOS は unified log(os_log)を使う。promtail にバイナリがあっても logs プラグインは別の reader が必要。
ADR-024 ステージドバンドルアップグレードフックフックは ExecStartPre= に配線された Linux シェルスクリプト。相当パスなし。

実際にこれが意味すること:make build-edge-darwin-arm64 して ./bin/darwin-arm64/ongrid-edge を Mac で走らせると、manager UI の Edges ページに自分のラップトップが現れて、エージェントとチャットして lspsdf を走らせられますが、その edge については Logs ページ、Monitor ページのホストパネル、Traces ページすべてが空のままになります。

Mac でエージェントを走らせる

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

エージェントは stderr にログ出力します。何も作らないので /var/log/ongrid-edge/ はありません。ログファイルが欲しければリダイレクト:./ongrid-edge 2>&1 | tee ~/ongrid-edge.log

launchd?まだない

launchd plist があればログイン時起動 + 自動再起動が得られます。出荷していない理由:

  • 4 つのプラグインはどのみち macOS で動かないので、そこで監督されたエージェントは推論しにくい機能のサブセットになる。
  • 本番の macOS ホストは極めて稀。半分サポートのプラットフォームにコミットしないほうが良い。

自分の開発用に欲しければ、最小の例です。~/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>

そして launchctl load ~/Library/LaunchAgents/io.ongrid.edge.plist

Codesigning / Gatekeeper

エージェントは コード署名されていません。初回実行時に macOS は「開発元が確認できないため開けません」と拒否します。どちらかを:

  • xattr -d com.apple.quarantine ./ongrid-edge で quarantine フラグを削除、または
  • Finder で右クリック → Open を一度、その後は選択を記憶します。

自分の Mac でソースからビルド(go build ./cmd/ongrid-edge)すれば quarantine フラグを完全に回避できます。

本番で macOS を使うべき?

いいえ。Linux ボックスを使ってください。エージェントは月 5 ドルの Linux VM で完璧に動きます。Mac mini で走らせるのはホームラボなら動きますが、Ongrid が提供する価値の 80% を提供する 4 つのプラグイン(ホストメトリクス、ログ、トレース)を失います。

開発限定パスは開発中にエージェントを dogfood するために存在します。デプロイメントターゲットではありません。