OpenCode と GitOps で構築する Homelab AI 開発プラットフォーム

Homelab 管理向けの AI 主導型開発プラットフォームは、コンテナの更新やインフラ変更を自動化しつつ、GitOps ワークフローによる人間の監視を維持します。AI エージェントを専用 VM に隔離し、プルリクエスト (PR) の承認を必須とすることで、AI が直接本番サービスにアクセスすることなく、複数デバイスにまたがる複雑な構成タスクを活用できます。

アーキテクチャ: OpenCode と安全なサンドボックス化

プラットフォームの核となるのは OpenCode です。ベンダーに依存しないコーディング環境で、組み込みの Web サーバーと Web UI を備えており、デバイス間で同期される永続的なコーディングセッションを実現します。

AI が生成する変更の "ブラスト半径" を抑え、セキュリティを保つためにシステムは以下のように構成されています:

  • 専用 VM: OpenCode は Truenas ホスト上のシンプルな VM 内で systemd ユニットとして実行されます。この VM には開発に必要なツールが入っていますが、管理対象の実際のサービスとはネットワーク的に隔離されています。
  • 制限された Git アクセス: AI エージェントには Git サーバー上で専用ユーザーが割り当てられ、専用 SSH 鍵が付与されます。プロジェクトのクローンやフィーチャーブランチへのプッシュは可能ですが、デプロイブランチへ直接プッシュすることは厳格に禁止されています。
  • 特権アクセス: VM が本番サービスから隔離されているため、AI には VM 内での root 権限が付与され、ビルドツールやテスト依存関係のインストールが可能です。ホストシステムへのリスクはありません。

インフラ管理のための GitOps ワークフロー

このプラットフォームは、リリースノートの確認や Docker Compose スタックの更新といった手動インフラ保守を AI 補助パイプラインに置き換えます。安定性を確保するため、ワークフローは厳格なシーケンスに従います:

  1. 計画: ユーザーは OpenCode で機能や改善点を定義し、仕様と実装計画を作成します。
  2. 反復: ユーザーと AI が計画を繰り返し検討し、可能な限り変更を検証します。
  3. ブランチ作成: OpenCode が最終的な変更をフィーチャーブランチへプッシュします。
  4. レビュー: ユーザーがフィーチャーブランチ用の PR を作成し、レビューします。
  5. デプロイ: PR がマージされると、GitOps ツールがデプロイを実行します。ここには Docker サービス変更のための Arcane、Home Assistant 設定用の GitOps プラグイン、ブログ更新のための Cloudflare Pages ワーカーが含まれます。

このアプローチにより、例えば全コンテナのネットワーク設定を更新するような大規模変更も、複数の Compose ファイルを手作業で編集する代わりに、モバイルデバイスで PR を確認するだけで実行できます。

技術的制限と課題

プラットフォームは更新作業を効率化しますが、CI フィードバックループ に関して大きなボトルネックがあります。GitHub などの環境では、エージェントが Action ログを読み取ってテスト失敗やリンタエラーを診断できます。しかし、この構成で使用している Forgejo では、公開 API がジョブログを提供しないため、AI が自律的にデプロイ失敗を診断・修正することが困難です。

コミュニティの見解と代替実装

開発者間の議論から、Homelab や開発環境に AI を統合するためのいくつかの代替パターンが浮かび上がっています:

  • アクションベースのエージェント: 一部のユーザーは Forgejo のアクションランナー内で OpenCode を実行し、イシュー内の /oc コマンドでエージェントを呼び出して自動的に PR を生成します。
  • 強化されたサンドボックス化: 高度な実装では gVisor や Kubernetes エージェントサンドボックス、あるいは systemd が強制するプライベート localhost とプロキシを利用し、エージェントが直接認証情報にアクセスできないようにします。
  • 統合レイヤー: Kimaki などのツールを使って Discord 連携を追加し、音声やチャットメッセージでコードベースと対話できるようにします。
  • 代替ツールチェーン: 他のユーザーは n8nArgok3s を用いた類似ワークフローを実装し、Qwen や Gemma4 といったモデルで自動化を行っています。

"私のワークフローは AI を PR レビューの背後に置きます。OpenCode が変更を書き、私は PR で自分でマージします。可愛らしいと思いますが、何より未レビューのコードがデプロイされるのを防げます。"

"コンピュータで変更を開始し、スマホで PR をレビューし、GitOps にデプロイを任せることができます。"

Sources