OpenClaw · Skill
Toolguard Daemon Control
Manage any executable as a persistent macOS launchd user agent.
Install
Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.
Primary command
clawhub install johnnylambada/toolguard-daemon-controlClawHub installer
npx clawhub@latest install johnnylambada/toolguard-daemon-controlOpenClaw CLI
openclaw skills install johnnylambada/toolguard-daemon-controlDirect OpenClaw install
openclaw install johnnylambada/toolguard-daemon-controlWhat this skill does
Manage any executable as a persistent macOS launchd user agent.
Why it matters
Using launchd instead of background shell processes means services survive session ends and restart automatically on failure without any manual intervention.
Typical use cases
- Keep a local proxy server running after terminal closes
- Auto-restart a development backend that crashes intermittently
- Run a scheduled background worker as a persistent user service
- Check which background services are currently active on macOS
- Tail logs from a long-running daemon without manual log hunting
Source instructions
toolguard-daemon-control
Manage any executable as a persistent macOS launchd user agent.
Overview
Services are installed as ~/Library/LaunchAgents/ai.toolguard.<name>.plist and run as user-level launch agents. They auto-restart on failure and log to ~/Library/Logs/toolguard/.
Scripts
All scripts are in scripts/ relative to this skill's directory. Run them with bash.
install.sh — Create and start a service
bash scripts/install.sh <service-name> <command> [args...] [--workdir <dir>] [--env KEY=VALUE ...]
service-name: Short identifier (e.g.,toolguard-proxy). Used in plist filename and log paths.command: Absolute path to the executable.args: Arguments passed to the command.--workdir <dir>: Working directory for the process (default:$HOME).--env KEY=VALUE: Environment variables (repeatable).
Example:
bash scripts/install.sh toolguard-proxy /usr/local/go/bin/go run ./cmd/server --config toolguard.dev.yaml --workdir ~/Documents/toolguard
uninstall.sh — Stop and remove a service
bash scripts/uninstall.sh <service-name>
Unloads the service and removes the plist file. Logs are preserved.
status.sh — Check service status
bash scripts/status.sh [service-name]
Without arguments, lists all ai.toolguard.* services. With a name, shows detailed status for that service.
logs.sh — View service logs
bash scripts/logs.sh <service-name> [--follow] [--lines <n>]
Shows stdout and stderr logs. Default: last 50 lines.
list.sh — List all managed services
bash scripts/list.sh
Lists all installed ai.toolguard.* services with their running state.
Notes
- Services run as the current user (no sudo required).
- Services auto-restart on crash (
KeepAlive = true). - To run a Go project, use the compiled binary path or wrap in a shell script — launchd does not support
go rundirectly. Usego buildfirst, then point to the binary. - Log directory:
~/Library/Logs/toolguard/<service-name>/ - Plist location:
~/Library/LaunchAgents/ai.toolguard.<service-name>.plist