Skills launchagent-manager
List, classify, prune LaunchAgents; analyze openclaw.json so the proper gateway LaunchAgent remains connected and tokens match. Keeps only OpenClaw-related agents; can unload/delete others.
install
source · Clone the upstream repo
git clone https://github.com/openclaw/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/austindixson/launchagent-manager" ~/.claude/skills/clawdbot-skills-launchagent-manager && rm -rf "$T"
manifest:
skills/austindixson/launchagent-manager/SKILL.mdsource content
Launchagent Manager
Description
List, classify, prune LaunchAgents; analyze openclaw.json so the proper gateway LaunchAgent remains connected and tokens match. Keeps only OpenClaw-related agents; can unload/delete others.
LaunchAgent Manager
Manages LaunchAgents in
~/Library/LaunchAgents and analyzes openclaw.json so the gateway LaunchAgent stays correct: loaded when it should be, and tokens matching config vs running gateway.
- List/prune: Classify agents as OpenClaw (keep) or other (prune). OpenClaw = Label or path contains "openclaw".
- Config check: Read
→ gateway port, auth mode, token set; find the gateway plist (e.g. ai.openclaw.gateway); report loaded? running? tokens match? (Uses gateway-guard status when available.) Recommends loading the plist or running gateway-guard ensure --apply if needed.openclaw.json - --fix: With --config, can load the gateway plist if not loaded and run gateway-guard ensure --apply if tokens mismatch.
Usage
- Ensure gateway stays connected: Run
to verify the gateway LaunchAgent is loaded and tokens match; use--config
to load plist and sync auth.--config --fix - List what's running: see OpenClaw vs other agents.
- Remove non-OpenClaw LaunchAgents: prune so only OpenClaw daemons remain.
python3 <skill-dir>/scripts/launchagent_manager.py [--list] [--json] python3 <skill-dir>/scripts/launchagent_manager.py --config [--fix] [--json] python3 <skill-dir>/scripts/launchagent_manager.py --prune [--dry-run] python3 <skill-dir>/scripts/launchagent_manager.py --prune --apply [--delete-plists]
- --list (default) — List all LaunchAgents; show OpenClaw (kept) vs others (prune targets). Shows loaded/unloaded.
- --config — Analyze openclaw.json and gateway LaunchAgent: config path, gateway port, auth, token set; gateway plist label and loaded?; gateway process running?; tokens match (config vs running)? Recommendations if plist not loaded or tokens mismatch. Exit 0 if all ok, 1 if action needed.
- --config --fix — If gateway plist not loaded: run
. If tokens don't match: run gateway-guardlaunchctl load <plist>
. Requires gateway-guard skill.ensure --apply --json - --config --json — Machine-readable report: config_path, gateway, gateway_launchagent, gateway_loaded, tokens_match, gateway_running, recommendations.
- --json — For --list:
.{ "openclaw": [...], "others": [...] } - --prune — Operate on non-OpenClaw agents. Without --apply this is a dry-run (show what would be unloaded).
- --prune --dry-run — Only show what would be unloaded.
- --prune --apply — Unload each non-OpenClaw LaunchAgent. Plist files kept unless --delete-plists.
- --prune --apply --delete-plists — Unload and delete plist files (backed up to OPENCLAW_HOME/backups/launchagents).
Safety
- Only user domain is touched:
. System domain is not modified.~/Library/LaunchAgents/ - OpenClaw detection is conservative: Label
or any ProgramArgument containing "openclaw" → kept.com.openclaw.* - With --delete-plists, backups are written to
before deletion.OPENCLAW_HOME/backups/launchagents/
Requirements
- macOS (launchctl, plist in user LaunchAgents).
- Python 3 with plistlib (standard library).