From 076e9be9e56a60e3b4d234446b89fa1e04c8d487 Mon Sep 17 00:00:00 2001 From: Jakub Buzuk <61548378+Baz00k@users.noreply.github.com> Date: Wed, 18 Feb 2026 15:05:47 +0100 Subject: [PATCH] fix(service): use explicit --config-dir args in OpenRC script Switch OpenRC service generation from env exports (ZEROCLAW_CONFIG_DIR/WORKSPACE) to explicit command_args with --config-dir flag. Fixes startup crash with 'Permission denied (os error 13)' under OpenRC init system. --- src/service/mod.rs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/service/mod.rs b/src/service/mod.rs index 9651d7330..005bc62bf 100644 --- a/src/service/mod.rs +++ b/src/service/mod.rs @@ -738,15 +738,13 @@ name="zeroclaw" description="ZeroClaw daemon" command="{}" -command_args="daemon" +command_args="--config-dir {} daemon" command_background="yes" command_user="zeroclaw:zeroclaw" pidfile="/run/${{RC_SVCNAME}}.pid" umask 027 output_log="/var/log/zeroclaw/access.log" error_log="/var/log/zeroclaw/error.log" -env ZEROCLAW_CONFIG_DIR="{}" -env ZEROCLAW_WORKSPACE="{}" depend() {{ need net @@ -754,8 +752,7 @@ depend() {{ }} "#, exe_path.display(), - config_dir.display(), - config_dir.join("workspace").display() + config_dir.display() ) } @@ -1093,9 +1090,9 @@ mod tests { assert!(script.contains("name=\"zeroclaw\"")); assert!(script.contains("description=\"ZeroClaw daemon\"")); assert!(script.contains("command=\"/usr/local/bin/zeroclaw\"")); - assert!(script.contains("command_args=\"daemon\"")); - assert!(script.contains("env ZEROCLAW_CONFIG_DIR=\"/etc/zeroclaw\"")); - assert!(script.contains("env ZEROCLAW_WORKSPACE=\"/etc/zeroclaw/workspace\"")); + assert!(script.contains("command_args=\"--config-dir /etc/zeroclaw daemon\"")); + assert!(!script.contains("env ZEROCLAW_CONFIG_DIR")); + assert!(!script.contains("env ZEROCLAW_WORKSPACE")); assert!(script.contains("command_background=\"yes\"")); assert!(script.contains("command_user=\"zeroclaw:zeroclaw\"")); assert!(script.contains("pidfile=\"/run/${RC_SVCNAME}.pid\""));