Install
openclaw skills install triggercmdControl TRIGGERcmd computers remotely by listing and running commands via the TRIGGERcmd REST API.
openclaw skills install triggercmdUse this skill to inspect and run TRIGGERcmd commands on any computer that is registered with the account tied to the local API token.
The skill supports two authentication methods (checked in order):
Environment Variable (recommended): Set TRIGGERCMD_TOKEN to your personal API token
export TRIGGERCMD_TOKEN='your-token-here'TRIGGERCMD_TOKEN='your-token-here' <command>Token File: Store token at ~/.TRIGGERcmdData/token.tkn
chmod 600 ~/.TRIGGERcmdData/token.tknmkdir -p ~/.TRIGGERcmdData && read -s TOKEN && printf "%s" "$TOKEN" > ~/.TRIGGERcmdData/token.tkn && chmod 600 ~/.TRIGGERcmdData/token.tknObtaining your token:
Security Warning: Never print, log, or paste your token in shared terminals or outputs.
# Get token from environment variable or file (checks env var first)
if [ -n "$TRIGGERCMD_TOKEN" ]; then
TOKEN="$TRIGGERCMD_TOKEN"
elif [ -f ~/.TRIGGERcmdData/token.tkn ]; then
TOKEN=$(cat ~/.TRIGGERcmdData/token.tkn)
else
echo "Error: No token found. Set TRIGGERCMD_TOKEN env var or create ~/.TRIGGERcmdData/token.tkn" >&2
exit 1
fi
AUTH_HEADER=("-H" "Authorization: Bearer $TOKEN")
BASE_URL=https://www.triggercmd.com/api
Use the snippets above to avoid repeating the authentication logic in each command.
Lists every command in the account across all computers.
curl -sS "${BASE_URL}/command/list" "${AUTH_HEADER[@]}" | jq '.records[] | {computer: .computer.name, name, voice, allowParams, id, mcpToolDescription}'
Formatting tips:
jq -r '.records[] | "\(.computer.name): \(.name) (voice: \(.voice // "-"))"'.allowParams when suggesting follow-up commands so the user knows whether parameters are allowed..computer.name and present bullet points per computer.Run a specific command on a specific computer using the computer name and command name.
# Use jq to safely construct JSON payload and prevent injection
PAYLOAD=$(jq -n \
--arg computer "$COMPUTER" \
--arg command "$COMMAND" \
--arg params "$PARAMS" \
'{computer: $computer, command: $command, params: $params}')
curl -sS -X POST "${BASE_URL}/run/trigger" \
"${AUTH_HEADER[@]}" \
-H "Content-Type: application/json" \
-d "$PAYLOAD"
$COMPUTER should be the computer name (e.g., "MyLaptop")$COMMAND should be the command name (e.g., "calculator")--arg params "$PARAMS" and params: $params from the jq command when the command does not accept parameters.jq -n with --arg ensures all values are properly escaped and prevents JSON injection attacks.~/.TRIGGERcmdData/token.tkn and remind them to keep it private.allowParams: true when relevant.Verify authentication is configured:
[ -n "$TRIGGERCMD_TOKEN" ] || [ -f ~/.TRIGGERcmdData/token.tkn ] || echo "Error: No token configured"
Test API connectivity (using the helper variables above):
curl -sS "${BASE_URL}/command/list" "${AUTH_HEADER[@]}" | jq -r '.records[0].computer.name // "No commands found"'
Dry-run a command by listing IDs, then run with known-safe commands (e.g., toggling a harmless script) before invoking anything destructive.
~/.TRIGGERcmdData/token.tkn has permissions set to 600 (readable only by owner).TRIGGERCMD_TOKEN environment variable for temporary sessions or when you don't want to persist the token on disk.