Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

サービス管理

ZeroClaw は、systemd (Linux)、launchctl (macOS)、Task Scheduler (Windows) 向けのファーストクラスなサービス統合を標準搭載しています。これら 3 つはすべて、単一の CLI インターフェースで操作できます:

sh

zeroclaw service install     # サービスを登録する
zeroclaw service start       # 起動する
zeroclaw service stop        停止
zeroclaw service restart     # 停止 + 開始
zeroclaw service status      # 実行中 / 停止中、最後の終了コード
zeroclaw service uninstall   # 削除してください

プラットフォーム固有のバックエンドは crates/zeroclaw-runtime/src/service/ に実装されています。それらについて意識する必要はありませんが、何を生成するかを把握しておくとデバッグ時に役立ちます。

Linux: systemd

zeroclaw service install は、~/.config/systemd/user/zeroclaw.service にユーザースコープのユニットファイルを書き込みます。

単位:

  • Type=simple とエージェントプロセスがフォアグラウンドで実行される
  • ExecStart={cargo-bin}/zeroclaw daemon
  • Restart=alwaysRestartSec=3 付き)
  • Environment=HOME=%hPassEnvironment=DISPLAY XDG_RUNTIME_DIR を設定することで、ヘッドレスブラウザツールがプロファイル/キャッシュディレクトリを作成し、ユーザーセッションにアクセスできるようになります
  • WantedBy=default.target

手動制御 (systemd)

sh

systemctl --user start zeroclaw
systemctl --user stop zeroclaw
systemctl --user status zeroclaw
systemctl --user enable zeroclaw     # ログイン時に開始

ログ

sh

journalctl --user -u zeroclaw -f        # フォロー
journalctl --user -u zeroclaw --since 1時間前

環境変数のオーバーライド (systemd)

デーモンがインタラクティブシェルに存在しない環境変数を必要とする場合は、ユーザーサービスのオーバーライドを使用します:

sh

systemctl --user edit zeroclaw.service

例えば、credential_process を使用する Bedrock プロファイルでは、サービス環境に AWS_PROFILE が必要です:

[Service]
Environment=AWS_PROFILE=zeroclaw-bedrock

オーバーライドを保存したら、ユーザーサービスをリロードして再起動します:

sh

systemctl --user daemon-reload
systemctl --user restart zeroclaw
journalctl --user -u zeroclaw -f

生成されたユーザーサービスは HOME=%h を設定するため、サービスユーザーのホームディレクトリ配下のファイルを読み取るプロバイダーコードは ~/.aws/config などのパスを解決できます。オーバーライドで実行ファイルを参照する場合は絶対パスを使用してください。systemd サービスはインタラクティブシェルよりも小さい PATH で実行されることが多いためです。

ユーザーログイン前の起動

CLIは常にユーザースコープのユニット(systemctl --user)のみを書き込みます。これはデフォルトでログイン時に開始し、ログアウト時に停止します。アクティブなセッションのないヘッドレスマシンでZeroClawを実行し続けるには、サービスユーザーに対してlingeringを有効にしてください。

sh

sudo loginctl enable-linger $USER
systemctl --user enable --now zeroclaw

真にシステムスコープのユニット(root所有、/etc/systemd/system/、専用のサービスアカウント、またはSupplementaryGroupsによるハードウェアグループ)が必要な場合、CLIはそれを生成しません。scripts/zeroclaw.serviceにあるシステムレベルのテンプレートを適応させて、ご自身でインストールしてください。OpenRCホストでは、sudo zeroclaw service installが専用のzeroclawユーザーとシステムパスをプロビジョニングします(下記参照)。

Linux: OpenRC

/run/openrc が存在するときに自動的に検出されます(Alpine、一部のGentoo設定など)。

sh

zeroclaw service install   # /etc/init.d/zeroclaw に書き込み
rc-service zeroclaw start
rc-update add zeroclaw default    # ブート時に開始

OpenRC はデーモンの出力を /var/log/zeroclaw/access.log/var/log/zeroclaw/error.log に保持します。各ファイルには、8 MiB を上限として最近の出力が保持されます。アップグレード後はサービスを再インストールして再起動し、生成された init スクリプトで出力サイズが制限されたロガープロセスが使用されるようにしてください。

macOS: LaunchAgent

zeroclaw service install~/Library/LaunchAgents/com.zeroclaw.daemon.plist を書き出し、それをロードします。

sh

launchctl list | grep zeroclaw
launchctl unload ~/Library/LaunchAgents/com.zeroclaw.daemon.plist
launchctl load ~/Library/LaunchAgents/com.zeroclaw.daemon.plist

ログは <config-dir>/logs/daemon.stdout.logdaemon.stderr.log に出力されます(デフォルトのインストールでは ~/.zeroclaw/logs/)。Homebrew のインストールでは、代わりに $HOMEBREW_PREFIX/var/zeroclaw/logs/ に書き込まれます。各 launchd キャプチャファイルは、8 MiB の上限内で最近の出力を保持します。アップグレード後、生成された LaunchAgent が上限付きキャプチャを使用するよう、サービスを再インストールして再起動してください。

Homebrew管理

Homebrew経由でインストールした場合、brew services が推奨されるインターフェースです:

sh

brew services start zeroclaw
brew services restart zeroclaw
brew services info zeroclaw

zeroclaw service CLIコマンドとbrew servicesを混在させず、どちらか一方を選んでください。どちらも最終的にはplistを書き込むため、両方が存在するとlaunchctlが混乱します。

Windows: タスク スケジューラ

zeroclaw service install は、ZeroClaw Daemon という名前のユーザーごとのスケジュールタスクを作成します:

  • トリガー: ログオン時 (/SC ONLOGON)
  • 実行レベル: LIMITED (昇格せず、現在のユーザーとして実行)
  • 操作: インストールラッパー zeroclaw-daemon.cmd を実行し、zeroclaw daemon を起動します

タスク スケジューラ GUI (taskschd.msc) で、タスク スケジューラ ライブラリ → ZeroClaw Daemon の順に確認してください。

ログは <config-dir>\logs\daemon.stdout.log および daemon.stderr.log として出力されます(デフォルトのインストールでは %USERPROFILE%\.zeroclaw\logs\):

cmd

type %USERPROFILE%\.zeroclaw\logs\daemon.stdout.log

手動制御(タスクスケジューラ)

このタスクは zeroclaw service start|stop|status で操作します。これらは ZeroClaw Daemon タスクに対して schtasks /Run/End/Query をラップしたものです。直接管理することもできます。

cmd

schtasks /Run /TN "ZeroClaw Daemon"
schtasks /End /TN "ZeroClaw Daemon"
schtasks /Query /TN "ZeroClaw Daemon" /FO LIST

CLI はユーザーごとの ONLOGON タスクのみをインストールします。LocalSystem の Windows サービスは登録しません。本格的なシステムサービスにするには、サードパーティ製のスーパーバイザー(例: NSSM)を使ってバイナリを自分でラップしてください。

設定ファイルパスの解決

サービスは、インストール時に解決されたディレクトリから設定を読み込みます。優先順位(最初に一致したものが優先されます):

  1. $ZEROCLAW_CONFIG_DIR(設定は $ZEROCLAW_CONFIG_DIR の直下に配置されます)
  2. $ZEROCLAW_DATA_DIR
  3. $ZEROCLAW_WORKSPACE非推奨ZEROCLAW_DATA_DIR の使用を推奨します。$ZEROCLAW_WORKSPACE またはレガシーの同階層 .zeroclaw/ のいずれかを解決します)
  4. macOS のみ、Homebrew 経由でインストールした場合の Homebrew 設定ディレクトリ ($HOMEBREW_PREFIX/var/zeroclaw/)
  5. デフォルトは ~/.zeroclaw/(Linux/macOS)または %USERPROFILE%\.zeroclaw\(Windows)

ZEROCLAW_CONFIG_DIR はすべてに優先されます。ZEROCLAW_DATA_DIRZEROCLAW_WORKSPACE と併せて設定すると、警告がログに記録され、他の設定は無視されます。

サービスが構成変更を無視しているように見える場合は、デーモンがどのパスを解決したかを確認してください。zeroclaw status はアクティブな構成ファイルを報告し、ランタイムは起動時に解決元の行をログに記録します:

sh

zeroclaw status

解決に使用した設定ファイルのパスが出力に含まれます。

自動更新

このサービスは自動更新を行いません。これは意図的なもので、新しいコードを取り込むタイミングを自分で選べます。GitHubのリリースフィードまたはDiscordの#releasesチャンネルを購読してください(コントリビュート → コミュニケーションを参照)。

関連項目も参照してください