Script Executor

The script executor runs pre-uploaded scripts from the managed scripts directory.

Configuration

[hooks.executor]
type = "script"
path = "deploy.sh"

The path is relative to the scripts directory (default data/scripts).

Managing scripts

Scripts are managed through the web UI at /scripts:

  • Upload: Create new scripts with the web editor
  • Edit: Modify existing scripts in the browser
  • Delete: Remove scripts you no longer need

Filename rules

  • Alphanumeric characters, hyphens, underscores, and dots only
  • No path traversal (.. is rejected)
  • No leading dots (hidden files)
  • Maximum file size: 1 MB

Payload access

Scripts receive the payload as a JSON file at data/logs/{execution_id}/payload.json. Read it in your script:

#!/bin/bash
PAYLOAD=$(cat "$SENDWORD_PAYLOAD_PATH")
REPO=$(echo "$PAYLOAD" | jq -r '.repo')
echo "Deploying $REPO"