๐ Complete CLI Commands Reference¶
Overview¶
Sloth Runner offers a complete and powerful command-line interface (CLI) for managing workflows, agents, modules, hooks, events, and much more. This documentation covers all available commands with practical examples.
๐ฏ Main Commands¶
run - Execute Workflows¶
Executes a Sloth workflow from a file.
# Basic syntax
sloth-runner run <workflow-name> --file <file.sloth> [options]
# Examples
sloth-runner run deploy --file deploy.sloth
sloth-runner run deploy --file deploy.sloth --yes # Non-interactive mode
sloth-runner run deploy --file deploy.sloth --group production # Execute specific group
sloth-runner run deploy --file deploy.sloth --delegate-to agent1 # Delegate to agent
sloth-runner run deploy --file deploy.sloth --delegate-to agent1 --delegate-to agent2 # Multiple agents
sloth-runner run deploy --file deploy.sloth --values vars.yaml # Pass variables
sloth-runner run deploy --file deploy.sloth --var "env=production" # Inline variable
Options: - --file, -f - Path to Sloth file - --yes, -y - Non-interactive mode (no confirmation) - --group, -g - Execute only a specific group - --delegate-to - Delegate execution to remote agent(s) - --values - YAML file with variables - --var - Define inline variable (can use multiple times) - --verbose, -v - Verbose mode
๐ค Agent Management¶
agent list - List Agents¶
Lists all agents registered with the master server.
# Syntax
sloth-runner agent list [options]
# Examples
sloth-runner agent list # List all agents
sloth-runner agent list --format json # JSON output
sloth-runner agent list --format yaml # YAML output
sloth-runner agent list --status active # Only active agents
Options: - --format - Output format: table (default), json, yaml - --status - Filter by status: active, inactive, all
agent get - Agent Details¶
Gets detailed information about a specific agent.
# Syntax
sloth-runner agent get <agent-name> [options]
# Examples
sloth-runner agent get web-server-01
sloth-runner agent get web-server-01 --format json
sloth-runner agent get web-server-01 --show-metrics # Include metrics
Options: - --format - Output format: table, json, yaml - --show-metrics - Show agent metrics
agent install - Install Remote Agent¶
Installs the Sloth Runner agent on a remote server via SSH.
# Syntax
sloth-runner agent install <agent-name> --ssh-host <host> --ssh-user <user> [options]
# Examples
sloth-runner agent install web-01 --ssh-host 192.168.1.100 --ssh-user root
sloth-runner agent install web-01 --ssh-host 192.168.1.100 --ssh-user root --ssh-port 2222
sloth-runner agent install web-01 \
--ssh-host 192.168.1.100 \
--ssh-user root \
--master 192.168.1.1:50053 \
--bind-address 0.0.0.0 \
--port 50060 \
--report-address 192.168.1.100:50060
Options: - --ssh-host - SSH host of remote server (required) - --ssh-user - SSH user (required) - --ssh-port - SSH port (default: 22) - --ssh-key - Path to SSH private key - --master - Master server address (default: localhost:50053) - --bind-address - Agent bind address (default: 0.0.0.0) - --port - Agent port (default: 50060) - --report-address - Address the agent reports to master
agent update - Update Agent¶
Updates the agent binary to the latest version.
# Syntax
sloth-runner agent update <agent-name> [options]
# Examples
sloth-runner agent update web-01
sloth-runner agent update web-01 --version v1.2.3
sloth-runner agent update web-01 --restart # Restart after update
Options: - --version - Specific version (default: latest) - --restart - Restart agent after update - --force - Force update even if version is the same
agent modules - Agent Modules¶
Lists or checks available modules on an agent.
# Syntax
sloth-runner agent modules <agent-name> [options]
# Examples
sloth-runner agent modules web-01 # List all modules
sloth-runner agent modules web-01 --check pkg # Check if 'pkg' module is available
sloth-runner agent modules web-01 --check docker # Check if Docker is installed
sloth-runner agent modules web-01 --format json # JSON output
Options: - --check - Check specific module - --format - Output format: table, json, yaml
agent start - Start Agent¶
Starts the agent service locally.
# Syntax
sloth-runner agent start [options]
# Examples
sloth-runner agent start # Start with default settings
sloth-runner agent start --master 192.168.1.1:50053 # Connect to specific master
sloth-runner agent start --port 50060 # Use specific port
sloth-runner agent start --name my-agent # Set agent name
sloth-runner agent start --bind 0.0.0.0 # Bind to all interfaces
sloth-runner agent start --foreground # Run in foreground
Options: - --master - Master server address (default: localhost:50053) - --port - Agent port (default: 50060) - --name - Agent name (default: hostname) - --bind - Bind address (default: 0.0.0.0) - --report-address - Address the agent reports - --foreground - Run in foreground (not daemon)
agent stop - Stop Agent¶
Stops the agent service.
# Syntax
sloth-runner agent stop [options]
# Examples
sloth-runner agent stop # Stop local agent
sloth-runner agent stop --name web-01 # Stop specific agent
agent restart - Restart Agent¶
Restarts the agent service.
# Syntax
sloth-runner agent restart [agent-name]
# Examples
sloth-runner agent restart # Restart local agent
sloth-runner agent restart web-01 # Restart remote agent
agent metrics - Agent Metrics¶
View agent performance and resource metrics.
# Syntax
sloth-runner agent metrics <agent-name> [options]
# Examples
sloth-runner agent metrics web-01
sloth-runner agent metrics web-01 --format json
sloth-runner agent metrics web-01 --watch # Continuous updates
sloth-runner agent metrics web-01 --interval 5 # 5 second interval
Options: - --format - Format: table, json, yaml, prometheus - --watch - Continuous updates - --interval - Update interval in seconds (default: 2)
agent metrics grafana - Grafana Dashboard¶
Generates and displays Grafana dashboard for an agent.
# Syntax
sloth-runner agent metrics grafana <agent-name> [options]
# Examples
sloth-runner agent metrics grafana web-01
sloth-runner agent metrics grafana web-01 --export dashboard.json
Options: - --export - Export dashboard to JSON file
๐ฆ Sloth Management (Saved Workflows)¶
sloth list - List Sloths¶
Lists all workflows saved in the local repository.
# Syntax
sloth-runner sloth list [options]
# Examples
sloth-runner sloth list # List all
sloth-runner sloth list --active # Only active sloths
sloth-runner sloth list --inactive # Only inactive sloths
sloth-runner sloth list --format json # JSON output
Options: - --active - Only active sloths - --inactive - Only inactive sloths - --format - Format: table, json, yaml
sloth add - Add Sloth¶
Adds a new workflow to the repository.
# Syntax
sloth-runner sloth add <name> --file <path> [options]
# Examples
sloth-runner sloth add deploy --file deploy.sloth
sloth-runner sloth add deploy --file deploy.sloth --description "Production deploy"
sloth-runner sloth add deploy --file deploy.sloth --tags "prod,deploy"
Options: - --file - Path to Sloth file (required) - --description - Sloth description - --tags - Comma-separated tags
sloth get - Get Sloth¶
Displays details of a specific sloth.
# Syntax
sloth-runner sloth get <name> [options]
# Examples
sloth-runner sloth get deploy
sloth-runner sloth get deploy --format json
sloth-runner sloth get deploy --show-content # Show workflow content
Options: - --format - Format: table, json, yaml - --show-content - Show complete workflow content
sloth update - Update Sloth¶
Updates an existing sloth.
# Syntax
sloth-runner sloth update <name> [options]
# Examples
sloth-runner sloth update deploy --file deploy-v2.sloth
sloth-runner sloth update deploy --description "New description"
sloth-runner sloth update deploy --tags "prod,deploy,updated"
Options: - --file - New Sloth file - --description - New description - --tags - New tags
sloth remove - Remove Sloth¶
Removes a sloth from the repository.
# Syntax
sloth-runner sloth remove <name>
# Examples
sloth-runner sloth remove deploy
sloth-runner sloth remove deploy --force # Remove without confirmation
Options: - --force - Remove without confirmation
sloth activate - Activate Sloth¶
Activates a deactivated sloth.
sloth deactivate - Deactivate Sloth¶
Deactivates a sloth (doesn't remove, just marks as inactive).
๐ฃ Hook Management¶
hook list - List Hooks¶
Lists all registered hooks.
# Syntax
sloth-runner hook list [options]
# Examples
sloth-runner hook list
sloth-runner hook list --format json
sloth-runner hook list --event workflow.started # Filter by event
Options: - --format - Format: table, json, yaml - --event - Filter by event type
hook add - Add Hook¶
Adds a new hook.
# Syntax
sloth-runner hook add <name> --event <event> --script <path> [options]
# Examples
sloth-runner hook add notify-slack --event workflow.completed --script notify.sh
sloth-runner hook add backup --event task.completed --script backup.lua
sloth-runner hook add validate --event workflow.started --script validate.lua --priority 10
Options: - --event - Event type (required) - --script - Script path (required) - --priority - Execution priority (default: 0) - --enabled - Hook enabled (default: true)
Available events: - workflow.started - workflow.completed - workflow.failed - task.started - task.completed - task.failed - agent.connected - agent.disconnected
hook remove - Remove Hook¶
Removes a hook.
# Syntax
sloth-runner hook remove <name>
# Examples
sloth-runner hook remove notify-slack
sloth-runner hook remove notify-slack --force
hook enable - Enable Hook¶
Enables a disabled hook.
hook disable - Disable Hook¶
Disables a hook.
hook test - Test Hook¶
Tests hook execution.
# Syntax
sloth-runner hook test <name> [options]
# Examples
sloth-runner hook test notify-slack
sloth-runner hook test notify-slack --payload '{"message": "test"}'
Options: - --payload - JSON with test data
๐ก Event Management¶
events list - List Events¶
Lists recent system events.
# Syntax
sloth-runner events list [options]
# Examples
sloth-runner events list
sloth-runner events list --limit 50 # Last 50 events
sloth-runner events list --type workflow.started # Filter by type
sloth-runner events list --since 1h # Events from last hour
sloth-runner events list --format json
Options: - --limit - Maximum number of events (default: 100) - --type - Filter by event type - --since - Filter by time (e.g., 1h, 30m, 24h) - --format - Format: table, json, yaml
events watch - Monitor Events¶
Monitors events in real-time.
# Syntax
sloth-runner events watch [options]
# Examples
sloth-runner events watch
sloth-runner events watch --type workflow.completed # Only completed workflow events
sloth-runner events watch --filter "status=success" # With filter
Options: - --type - Filter by event type - --filter - Filter expression
๐๏ธ Database Management¶
db backup - Database Backup¶
Creates SQLite database backup.
# Syntax
sloth-runner db backup [options]
# Examples
sloth-runner db backup
sloth-runner db backup --output /backup/sloth-backup.db
sloth-runner db backup --compress # Compress with gzip
Options: - --output - Backup file path - --compress - Compress backup
db restore - Restore Database¶
Restores database from backup.
# Syntax
sloth-runner db restore <backup-file> [options]
# Examples
sloth-runner db restore /backup/sloth-backup.db
sloth-runner db restore /backup/sloth-backup.db.gz --decompress
Options: - --decompress - Decompress gzip backup
db vacuum - Optimize Database¶
Optimizes and compacts the SQLite database.
db stats - Database Statistics¶
Shows database statistics.
# Syntax
sloth-runner db stats [options]
# Examples
sloth-runner db stats
sloth-runner db stats --format json
Options: - --format - Format: table, json, yaml
๐ SSH Management¶
ssh list - List SSH Connections¶
Lists saved SSH connections.
# Syntax
sloth-runner ssh list [options]
# Examples
sloth-runner ssh list
sloth-runner ssh list --format json
Options: - --format - Format: table, json, yaml
ssh add - Add SSH Connection¶
Adds a new SSH connection.
# Syntax
sloth-runner ssh add <name> --host <host> --user <user> [options]
# Examples
sloth-runner ssh add web-server --host 192.168.1.100 --user ubuntu
sloth-runner ssh add web-server --host 192.168.1.100 --user ubuntu --port 2222
sloth-runner ssh add web-server --host 192.168.1.100 --user ubuntu --key ~/.ssh/id_rsa
Options: - --host - SSH host (required) - --user - SSH user (required) - --port - SSH port (default: 22) - --key - SSH private key path
ssh remove - Remove SSH Connection¶
Removes a saved SSH connection.
ssh test - Test SSH Connection¶
Tests an SSH connection.
๐ Modules¶
modules list - List Modules¶
Lists all available modules.
# Syntax
sloth-runner modules list [options]
# Examples
sloth-runner modules list
sloth-runner modules list --format json
sloth-runner modules list --category cloud # Filter by category
Options: - --format - Format: table, json, yaml - --category - Filter by category
modules info - Module Information¶
Shows detailed information about a module.
# Syntax
sloth-runner modules info <module-name>
# Examples
sloth-runner modules info pkg
sloth-runner modules info docker
sloth-runner modules info terraform
๐ฅ๏ธ Server and UI¶
server - Start Master Server¶
Starts the master server (gRPC).
# Syntax
sloth-runner server [options]
# Examples
sloth-runner server # Start on default port (50053)
sloth-runner server --port 50053 # Specify port
sloth-runner server --bind 0.0.0.0 # Bind to all interfaces
sloth-runner server --tls-cert cert.pem --tls-key key.pem # With TLS
Options: - --port - Server port (default: 50053) - --bind - Bind address (default: 0.0.0.0) - --tls-cert - TLS certificate - --tls-key - TLS private key
ui - Start Web UI¶
Starts the web interface.
# Syntax
sloth-runner ui [options]
# Examples
sloth-runner ui # Start on default port (8080)
sloth-runner ui --port 8080 # Specify port
sloth-runner ui --bind 0.0.0.0 # Bind to all interfaces
Options: - --port - Web UI port (default: 8080) - --bind - Bind address (default: 0.0.0.0)
terminal - Interactive Terminal¶
Opens interactive terminal to a remote agent.
๐ง Utilities¶
version - Version¶
Shows the Sloth Runner version.
completion - Auto-completion¶
Generates auto-completion scripts for the shell.
# Syntax
sloth-runner completion <shell>
# Examples
sloth-runner completion bash > /etc/bash_completion.d/sloth-runner
sloth-runner completion zsh > ~/.zsh/completion/_sloth-runner
sloth-runner completion fish > ~/.config/fish/completions/sloth-runner.fish
Supported shells: bash, zsh, fish, powershell
doctor - Diagnostics¶
Runs system and configuration diagnostics.
# Syntax
sloth-runner doctor [options]
# Examples
sloth-runner doctor
sloth-runner doctor --format json
sloth-runner doctor --verbose # Detailed output
Options: - --format - Format: text, json - --verbose - Detailed output
๐ Environment Variables¶
Sloth Runner uses the following environment variables:
# Master server address
export SLOTH_RUNNER_MASTER_ADDR="192.168.1.1:50053"
# Agent port
export SLOTH_RUNNER_AGENT_PORT="50060"
# Web UI port
export SLOTH_RUNNER_UI_PORT="8080"
# Database path
export SLOTH_RUNNER_DB_PATH="~/.sloth-runner/sloth.db"
# Log level
export SLOTH_RUNNER_LOG_LEVEL="info" # debug, info, warn, error
# Enable debug mode
export SLOTH_RUNNER_DEBUG="true"
๐ Common Usage Examples¶
1. Production Deploy with Delegation¶
sloth-runner run production-deploy \
--file deployments/prod.sloth \
--delegate-to web-01 \
--delegate-to web-02 \
--values prod-vars.yaml \
--yes
2. Monitor Metrics of All Agents¶
# In one terminal
sloth-runner agent metrics web-01 --watch
# In another terminal
sloth-runner agent metrics web-02 --watch
3. Automated Backup¶
# Create compressed backup with timestamp
sloth-runner db backup \
--output /backup/sloth-$(date +%Y%m%d-%H%M%S).db \
--compress
4. Workflow with Notification Hook¶
# Add notification hook
sloth-runner hook add slack-notify \
--event workflow.completed \
--script /scripts/notify-slack.lua
# Run workflow (hook will be triggered automatically)
sloth-runner run deploy --file deploy.sloth --yes
5. Agent Installation on Multiple Servers¶
# Loop to install on multiple hosts
for host in 192.168.1.{10..20}; do
sloth-runner agent install "agent-$host" \
--ssh-host "$host" \
--ssh-user ubuntu \
--master 192.168.1.1:50053
done
๐ Next Steps¶
- ๐ Modules Guide - Complete documentation of all modules
- ๐จ Web UI - Complete web interface guide
- ๐ฏ Advanced Examples - Practical workflow examples
- ๐๏ธ Architecture - System architecture
๐ก Tips and Tricks¶
Useful Aliases¶
Add to your .bashrc or .zshrc:
alias sr='sloth-runner'
alias sra='sloth-runner agent'
alias srr='sloth-runner run'
alias srl='sloth-runner sloth list'
alias srui='sloth-runner ui --port 8080'
Auto-completion¶
# Bash
sloth-runner completion bash > /etc/bash_completion.d/sloth-runner
source /etc/bash_completion.d/sloth-runner
# Zsh
sloth-runner completion zsh > ~/.zsh/completion/_sloth-runner
Debug Mode¶
export SLOTH_RUNNER_DEBUG=true
export SLOTH_RUNNER_LOG_LEVEL=debug
sloth-runner run deploy --file deploy.sloth --verbose
Last updated: 2025-10-07