macOS(edge、開発限定)
ongrid-edge バイナリは darwin/amd64 と darwin/arm64 にクロスコンパイルされます。Makefile は make build-edge-all の一環で両方をビルドします:
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 ゲート付き)がホストに対して動く:ls、ps、df、unameとキュレートされた読み取り専用セットが宣伝通りに動く。- 埋め込み gopsutil コレクターが
host_info、get_host_load、get_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 ページに自分のラップトップが現れて、エージェントとチャットして ls、ps、df を走らせられますが、その edge については Logs ページ、Monitor ページのホストパネル、Traces ページすべてが空のままになります。
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-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 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 するために存在します。デプロイメントターゲットではありません。