| host | SSH server hostname or IP address | yes | — |
| port | SSH port | no | 22 |
| username | SSH username | yes | — |
| private-key | SSH private key (full content, not path). Use GitHub Secrets! | yes | — |
| passphrase | Passphrase for the SSH private key (if encrypted) | no | "" |
| local-dir | Local folder to deploy. Must end with trailing slash. | no | ./ |
| server-dir | Remote folder to deploy to. Must end with trailing slash. | no | ./ |
| state-name | Name of the sync state file stored on the server to track deployments. | no | .ssh-deploy-sync-state.json |
| dry-run | Preview changes without actually deploying (true/false) | no | false |
| dangerous-clean-slate | Delete ALL existing files on the server before deploying (true/false) | no | false |
| exclude | Glob patterns to exclude from deployment (one per line, or comma-separated). .git and node_modules are always excluded. | no | **/.git*
**/.git*/**
**/node_modules/**
|
| log-level | Logging verbosity: minimal, standard, or verbose | no | standard |
| timeout | Connection/operation timeout in milliseconds | no | 30000 |
| compression | Enable SSH compression (useful for slower networks) | no | false |
| upload-concurrency | Number of concurrent file uploads (higher = faster but more resource usage) | no | 5 |
| pre-commands | Commands to run on server BEFORE file sync (one per line). Use for maintenance mode, backups, etc. | no | "" |
| commands | Commands to run on the server AFTER file sync (one per line). Lines starting with # are ignored. | no | "" |
| commands-working-dir | Working directory for remote commands. Defaults to server-dir. | no | "" |
| rollback-on-failure | Rollback deployment if health check fails (true/false). Requires health-check-url and health-check-fail-deploy. | no | false |
| rollback-limit | Maximum rollback states to keep on server | no | 3 |
| health-check-url | URL to check after deployment (e.g., https://example.com/health). Leave empty to skip. | no | "" |
| health-check-status | Expected HTTP status code for health check | no | 200 |
| health-check-retries | Number of health check retry attempts | no | 3 |
| health-check-retry-delay | Delay between health check retries in milliseconds | no | 5000 |
| health-check-fail-deploy | Fail the entire deployment if health check fails (true/false) | no | false |
| webhook-url | Webhook URL for deployment notifications (Slack, Discord, or custom). Leave empty to skip. | no | "" |
| webhook-type | Webhook provider: slack, discord, or custom | no | slack |
| environment | Environment name (e.g., production, staging, development). Used in notifications and state tracking. | no | production |