サービス管理
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 daemonRestart=always(RestartSec=3付き)Environment=HOME=%hとPassEnvironment=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.log と daemon.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)を使ってバイナリを自分でラップしてください。
設定ファイルパスの解決
サービスは、インストール時に解決されたディレクトリから設定を読み込みます。優先順位(最初に一致したものが優先されます):
$ZEROCLAW_CONFIG_DIR(設定は$ZEROCLAW_CONFIG_DIRの直下に配置されます)$ZEROCLAW_DATA_DIR$ZEROCLAW_WORKSPACE(非推奨。ZEROCLAW_DATA_DIRの使用を推奨します。$ZEROCLAW_WORKSPACEまたはレガシーの同階層.zeroclaw/のいずれかを解決します)- macOS のみ、Homebrew 経由でインストールした場合の Homebrew 設定ディレクトリ (
$HOMEBREW_PREFIX/var/zeroclaw/) - デフォルトは
~/.zeroclaw/(Linux/macOS)または%USERPROFILE%\.zeroclaw\(Windows)
ZEROCLAW_CONFIG_DIR はすべてに優先されます。ZEROCLAW_DATA_DIR や ZEROCLAW_WORKSPACE と併せて設定すると、警告がログに記録され、他の設定は無視されます。
サービスが構成変更を無視しているように見える場合は、デーモンがどのパスを解決したかを確認してください。zeroclaw status はアクティブな構成ファイルを報告し、ランタイムは起動時に解決元の行をログに記録します:
sh
zeroclaw status
解決に使用した設定ファイルのパスが出力に含まれます。
自動更新
このサービスは自動更新を行いません。これは意図的なもので、新しいコードを取り込むタイミングを自分で選べます。GitHubのリリースフィードまたはDiscordの#releasesチャンネルを購読してください(コントリビュート → コミュニケーションを参照)。