{
  "schemaVersion": "1.0",
  "item": {
    "slug": "clawhub-skill-deploy-pilot",
    "name": "Clawhub Skill Deploy Pilot",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/mariusfit/clawhub-skill-deploy-pilot",
    "canonicalUrl": "https://clawhub.ai/mariusfit/clawhub-skill-deploy-pilot",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/clawhub-skill-deploy-pilot",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=clawhub-skill-deploy-pilot",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "deploy-pilot.py",
      "deploy-pilot.sh",
      "skill.json",
      "test-smoke.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/clawhub-skill-deploy-pilot"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/clawhub-skill-deploy-pilot",
    "agentPageUrl": "https://openagent3.xyz/skills/clawhub-skill-deploy-pilot/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clawhub-skill-deploy-pilot/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clawhub-skill-deploy-pilot/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "deploy-pilot — Docker/LXC Deployment Automation",
        "body": "Version: 1.0.0\nAuthor: OpenClaw\nCategory: Infrastructure + Automation\nComplexity: Advanced\n\nDeploy with confidence. Version control for your containers."
      },
      {
        "title": "What It Does",
        "body": "deploy-pilot manages Docker Compose and LXC container deployments with full versioning, health checks, automatic rollback, and chat-based approval workflows. Zero-downtime updates with one command."
      },
      {
        "title": "Core Features",
        "body": "Version-tracked deployments — Every deploy is a snapshot. Rollback with one command.\nHealth checks — Auto-verify container health after deployment. Fail fast.\nBlue-green deployments — Deploy new version alongside old, switch seamlessly.\nApproval workflows — Deploy requests sent to WhatsApp/Telegram. User approves or rejects.\nDocker Compose + LXC — Works with docker-compose stacks AND Proxmox LXC containers.\nPre/post hooks — Custom scripts before/after deployment (backups, migrations, etc).\nHistory & audit trail — Track every deployment, who approved it, and what changed.\nAutomatic rollback — If health check fails, automatically rollback to previous version."
      },
      {
        "title": "Quick Start",
        "body": "# Clone/download the skill\nmkdir -p ~/.openclaw/workspace/skills/deploy-pilot\ncd ~/.openclaw/workspace/skills/deploy-pilot\n\n# Copy SKILL.md and scripts\ncp SKILL.md deploy-pilot.py deploy-pilot.sh ./\n\n# Make scripts executable\nchmod +x deploy-pilot.sh deploy-pilot.py\n\n# Initialize config\n./deploy-pilot.py init\n\n# Verify installation\n./deploy-pilot.py --help"
      },
      {
        "title": "Dependencies",
        "body": "Required:\n\nPython 3.8+\nbash 4.0+\ndocker (for Docker Compose stacks)\ncurl (for HTTP health checks)\njq (for JSON parsing)\n\nOptional (for Proxmox LXC):\n\npvesh (Proxmox command-line client)\nSSH access to Proxmox host\n\nOptional (for chat approval):\n\nOpenClaw message tool configured (WhatsApp/Telegram)"
      },
      {
        "title": "Setup OpenClaw Integration",
        "body": "If you want approval workflows and chat notifications:\n\n# Create approval config\nmkdir -p ~/.openclaw/workspace/deploy-pilot\ncat > ~/.openclaw/workspace/deploy-pilot/config.json << 'EOF'\n{\n  \"approval_channel\": \"whatsapp\",\n  \"approval_timeout_minutes\": 30,\n  \"notify_deployments\": true,\n  \"auto_rollback_on_health_fail\": true\n}\nEOF"
      },
      {
        "title": "Initialize & Setup",
        "body": "deploy-pilot init\n\nInteractive setup:\n\nSet base directory for stacks\nChoose deployment strategy (docker or lxc)\nConfigure health checks\nSet up approval workflows"
      },
      {
        "title": "Manage Stacks",
        "body": "# List all managed stacks\ndeploy-pilot stacks\n\n# Register a new Docker Compose stack\ndeploy-pilot add docker /path/to/docker-compose.yml\n\n# Register a new LXC container\ndeploy-pilot add lxc <node> <vmid> <name>\n\n# Show details for a stack\ndeploy-pilot show <stack>\n\n# Remove a stack from management\ndeploy-pilot remove <stack>"
      },
      {
        "title": "Deploy",
        "body": "# Deploy latest version\ndeploy-pilot deploy <stack>\n\n# Deploy specific version\ndeploy-pilot deploy <stack> --version 1.2.0\n\n# Deploy with custom image tags\ndeploy-pilot deploy <stack> --images \"web:v2.0,api:v3.0\"\n\n# Dry-run (show what would be deployed)\ndeploy-pilot deploy <stack> --dry-run\n\n# Skip health check\ndeploy-pilot deploy <stack> --skip-health-check\n\n# Force deployment (skip approval)\ndeploy-pilot deploy <stack> --force\n\nExample workflow:\n\n# 1. Request deployment (goes to WhatsApp)\n$ deploy-pilot deploy web-api\n\nDeployment request sent to WhatsApp.\nWaiting for approval (timeout: 30 minutes)...\n\n# User replies \"approve\" on WhatsApp\n\n# 2. Approved, deploying...\n[✓] Pre-deploy hook: running database migrations\n[✓] Creating snapshot: web-api@2.1.0\n[✓] Pulling new images\n[✓] Starting blue environment\n[✓] Health check (10/10 passed)\n[✓] Switching traffic to new version\n[✓] Cleaning up old environment\n\nDeployment complete. Stack: web-api | Version: 2.1.0 | Duration: 2m34s"
      },
      {
        "title": "Rollback",
        "body": "# Rollback to previous version\ndeploy-pilot rollback <stack>\n\n# Rollback to specific version\ndeploy-pilot rollback <stack> --version 1.5.0\n\n# Dry-run\ndeploy-pilot rollback <stack> --dry-run\n\nExample:\n\n$ deploy-pilot rollback web-api\nRollback: web-api from 2.1.0 → 2.0.0\n[✓] Creating snapshot: web-api@2.1.0 (previous good state)\n[✓] Reverting to version 2.0.0\n[✓] Health check (10/10 passed)\n[✓] Switching traffic\n\nRollback complete. Stack: web-api | Previous version: 2.0.0 | Duration: 1m12s"
      },
      {
        "title": "Health Checks",
        "body": "# Check current health of a stack\ndeploy-pilot health <stack>\n\n# Verbose health output\ndeploy-pilot health <stack> --verbose\n\n# Check all stacks\ndeploy-pilot health --all\n\nOutput:\n\nStack: web-api (v2.1.0)\n  Container web-web    : ✓ RUNNING (1d2h)\n  Container web-db     : ✓ RUNNING (1d2h)\n  HTTP /health endpoint: ✓ 200 OK (45ms)\n  Disk usage          : ✓ 62% (within threshold)\n  Memory usage        : ✓ 1.2GB / 2GB (60%)\n  Custom check (ping) : ✓ PASSED (12ms)\n\nOverall health: ✓ HEALTHY\nLast check: 5 minutes ago"
      },
      {
        "title": "History & Audit",
        "body": "# Show deployment history for a stack\ndeploy-pilot history <stack>\n\n# Show last N deployments\ndeploy-pilot history <stack> --limit 10\n\n# Filter by status\ndeploy-pilot history <stack> --status success\ndeploy-pilot history <stack> --status failed\ndeploy-pilot history <stack> --status rolled-back\n\n# Show full details of a deployment\ndeploy-pilot history <stack> --id deployment-12345 --details\n\nExample:\n\n$ deploy-pilot history web-api --limit 5\n\nID                  | Version | Status    | Approved By | Duration | Time\ndeploy-00001        | 2.1.0   | success   | marius      | 2m34s    | 2026-02-25 14:23\ndeploy-00000        | 2.0.0   | rolled-back | marius    | 0m45s    | 2026-02-25 13:45\ndeploy-99999        | 2.0.0   | success   | marius      | 3m12s    | 2026-02-25 12:00\ndeploy-99998        | 1.9.0   | success   | automated   | 2m01s    | 2026-02-24 22:15\ndeploy-99997        | 1.9.0   | failed    | marius      | 1m33s    | 2026-02-24 20:30"
      },
      {
        "title": "Configuration & Hooks",
        "body": "# Show deployment strategy for a stack\ndeploy-pilot config <stack>\n\n# Update health check config\ndeploy-pilot config <stack> --health-endpoint /api/health\ndeploy-pilot config <stack> --health-timeout 60\n\n# Add pre-deploy hook\ndeploy-pilot hook <stack> pre \"scripts/backup-db.sh\"\n\n# Add post-deploy hook\ndeploy-pilot hook <stack> post \"scripts/notify-team.sh\"\n\n# List hooks\ndeploy-pilot hook <stack> list\n\n# Remove hook\ndeploy-pilot hook <stack> remove <hook-id>"
      },
      {
        "title": "Cron Integration (Scheduled Deployments)",
        "body": "# Deploy on a schedule (useful for auto-updates of images)\ndeploy-pilot cron-setup <stack> \"0 2 * * *\" \"deploy-pilot deploy <stack>\"\n\n# List scheduled deployments\ndeploy-pilot cron list\n\n# Remove scheduled deployment\ndeploy-pilot cron remove <stack>"
      },
      {
        "title": "Advanced: JSON Output",
        "body": "All commands support --json for programmatic use:\n\ndeploy-pilot stacks --json\ndeploy-pilot health <stack> --json\ndeploy-pilot history <stack> --json"
      },
      {
        "title": "Example 1: Zero-Downtime Web App Deployment",
        "body": "# Current state: web-api v2.0.0, 3 replicas\n\n# Deploy new version (automatic approval workflow)\n$ deploy-pilot deploy web-api --images \"api:2.1.0\"\n\nDeployment request sent to WhatsApp with:\n  - Current version: 2.0.0\n  - New version: 2.1.0\n  - Changes: API security patch + bug fixes\n\n# (User approves on WhatsApp after reviewing changes)\n\n# Deployment proceeds:\n[✓] Blue-green setup: spinning up 3 new replicas with v2.1.0\n[✓] Health checks passing on new replicas\n[✓] Gradual traffic switch (no downtime)\n[✓] Old replicas kept for 5 minutes (fast rollback if needed)\n[✓] Cleanup old environment\n\nResult: Zero-downtime update. Customers see no interruption.\nRollback available for 5 minutes if issues found."
      },
      {
        "title": "Example 2: Database Migration + Deployment",
        "body": "# Stack with API + PostgreSQL\n\n# Define pre-deploy hook to run migrations\n$ deploy-pilot hook api-db pre \"scripts/migrate.sh\"\n\n# Now when you deploy:\n$ deploy-pilot deploy api-db --version 2.5.0\n\n[✓] Running pre-hook: database migration (alembic upgrade head)\n    - Added column: users.phone_number\n    - Added index: users(email)\n[✓] Creating snapshot (in case rollback needed)\n[✓] Deploying new API version\n[✓] Health check: database connectivity OK\n[✓] Success!\n\n# If something went wrong:\n$ deploy-pilot rollback api-db\n\n[✓] Downgrading database schema (alembic downgrade -1)\n[✓] Reverting API to v2.4.0\n[✓] All OK"
      },
      {
        "title": "Example 3: Multi-Environment Stack (Dev → Prod)",
        "body": "# Use same compose file, different deployments\ndeploy-pilot add docker dev  /compose/docker-compose.yml --env=dev\ndeploy-pilot add docker prod /compose/docker-compose.yml --env=prod\n\n# Deploy to dev (no approval needed)\ndeploy-pilot deploy dev --force\n\n# Deploy to prod (requires approval)\ndeploy-pilot deploy prod --images \"web:v2.1.0,api:v2.1.0\"\n\n(Request goes to WhatsApp with dev metrics)\n(User reviews test results from dev, approves)\n(Prod deploys with same images as dev)"
      },
      {
        "title": "Example 4: Proxmox LXC Deployment",
        "body": "# Register LXC container on Proxmox\ndeploy-pilot add lxc pve 205 app-container\n\n# Configure health check (SSH connectivity + systemctl status)\ndeploy-pilot config app-container --health-check \"ssh://root@10.0.0.205:systemctl is-active service\"\n\n# Deploy new container version\ndeploy-pilot deploy app-container --image ubuntu:22.04 --force\n\n(New LXC container cloned from template, health checked, old kept as backup)"
      },
      {
        "title": "Configuration File Structure",
        "body": "Located at: ~/.openclaw/workspace/deploy-pilot/stacks.json\n\n{\n  \"stacks\": {\n    \"web-api\": {\n      \"type\": \"docker\",\n      \"path\": \"/home/compose/web-api\",\n      \"compose_file\": \"docker-compose.yml\",\n      \"health_checks\": [\n        {\n          \"type\": \"http\",\n          \"endpoint\": \"http://localhost:8080/health\",\n          \"timeout\": 30,\n          \"expected_code\": 200\n        }\n      ],\n      \"hooks\": {\n        \"pre\": [\"scripts/backup.sh\"],\n        \"post\": [\"scripts/notify.sh\"]\n      },\n      \"versions\": [\n        {\n          \"id\": \"2.1.0\",\n          \"timestamp\": \"2026-02-25T14:23:00Z\",\n          \"images\": {\"web\": \"myrepo/web:2.1.0\", \"api\": \"myrepo/api:2.1.0\"},\n          \"status\": \"success\",\n          \"approved_by\": \"marius\"\n        }\n      ]\n    }\n  }\n}"
      },
      {
        "title": "Deployment stuck waiting for approval",
        "body": "# Check approval status\ndeploy-pilot status <deployment-id>\n\n# Force completion (skip approval, use with caution)\ndeploy-pilot force <deployment-id>"
      },
      {
        "title": "Health check failing",
        "body": "# Verbose health check output\ndeploy-pilot health <stack> --verbose\n\n# Disable health check for this deployment\ndeploy-pilot deploy <stack> --skip-health-check\n\n# (Fix the issue, then re-deploy)"
      },
      {
        "title": "Rollback failed",
        "body": "# Check available versions\ndeploy-pilot history <stack> --limit 20\n\n# Manual rollback to specific version\ndeploy-pilot rollback <stack> --version <known-good-version>"
      },
      {
        "title": "Approval workflow not working",
        "body": "Check OpenClaw message tool:\n\n# Test message delivery\nopenclaw message test \"Test message\"\n\n# Verify config\ncat ~/.openclaw/workspace/deploy-pilot/config.json"
      },
      {
        "title": "Performance & Limits",
        "body": "MetricFreeProManaged stacks3UnlimitedDeployment history10 per stackUnlimitedBlue-green overlaps15 (parallel deployments)Approval timeout30 min (fixed)ConfigurableHealth check frequencyEvery deploymentConfigurable (5min intervals)"
      },
      {
        "title": "Safety & Best Practices",
        "body": "✅ Do this:\n\nAlways test in dev environment first\nUse health checks — they save you\nReview deployment changes before approving\nKeep a rollback plan (it's automatic, but know your escape route)\nArchive deployment history weekly\n\n❌ Don't do this:\n\nDeploy without health checks\nUse --skip-approval in production\nRemove snapshots immediately after deploy\nDeploy during peak traffic without monitoring\nIgnore failed health checks"
      },
      {
        "title": "Architecture",
        "body": "┌─────────────────────┐\n                    │   User (WhatsApp)   │\n                    └──────────┬──────────┘\n                               │\n                    ┌──────────▼──────────┐\n                    │   deploy-pilot.py   │\n                    │  (main orchestrator)│\n                    └──────────┬──────────┘\n                               │\n        ┌──────────────────────┼──────────────────────┐\n        │                      │                      │\n  ┌─────▼────┐         ┌──────▼────┐         ┌──────▼────┐\n  │ Docker   │         │   LXC     │         │ Health    │\n  │ Compose  │         │ (Proxmox) │         │ Checker   │\n  │ Executor │         │ API Client│         │ (HTTP/SSH)│\n  └──────────┘         └───────────┘         └───────────┘\n        │                      │                      │\n  ┌─────▼──────────────────────┼──────────────────────┘\n  │                            │\n  └────────────────┬───────────┘\n                   │\n         ┌─────────▼──────────┐\n         │  State DB (JSON)   │\n         │  Version History   │\n         │  Deployment Log    │\n         └────────────────────┘"
      },
      {
        "title": "Support & Contribution",
        "body": "Questions? Check the examples above or read the source code.\n\nFound a bug? Log it on AgentGram community.\n\nWant a feature? Build it! These are executable scripts. Fork, modify, share."
      },
      {
        "title": "License",
        "body": "MIT — Use freely. Attribution appreciated.\n\nLast updated: 2026-02-25\nTested on: Ubuntu 22.04, Proxmox 8.0, Docker 26.0"
      }
    ],
    "body": "deploy-pilot — Docker/LXC Deployment Automation\n\nVersion: 1.0.0\nAuthor: OpenClaw\nCategory: Infrastructure + Automation\nComplexity: Advanced\n\nDeploy with confidence. Version control for your containers.\n\nWhat It Does\n\ndeploy-pilot manages Docker Compose and LXC container deployments with full versioning, health checks, automatic rollback, and chat-based approval workflows. Zero-downtime updates with one command.\n\nCore Features\nVersion-tracked deployments — Every deploy is a snapshot. Rollback with one command.\nHealth checks — Auto-verify container health after deployment. Fail fast.\nBlue-green deployments — Deploy new version alongside old, switch seamlessly.\nApproval workflows — Deploy requests sent to WhatsApp/Telegram. User approves or rejects.\nDocker Compose + LXC — Works with docker-compose stacks AND Proxmox LXC containers.\nPre/post hooks — Custom scripts before/after deployment (backups, migrations, etc).\nHistory & audit trail — Track every deployment, who approved it, and what changed.\nAutomatic rollback — If health check fails, automatically rollback to previous version.\nInstallation\nQuick Start\n# Clone/download the skill\nmkdir -p ~/.openclaw/workspace/skills/deploy-pilot\ncd ~/.openclaw/workspace/skills/deploy-pilot\n\n# Copy SKILL.md and scripts\ncp SKILL.md deploy-pilot.py deploy-pilot.sh ./\n\n# Make scripts executable\nchmod +x deploy-pilot.sh deploy-pilot.py\n\n# Initialize config\n./deploy-pilot.py init\n\n# Verify installation\n./deploy-pilot.py --help\n\nDependencies\n\nRequired:\n\nPython 3.8+\nbash 4.0+\ndocker (for Docker Compose stacks)\ncurl (for HTTP health checks)\njq (for JSON parsing)\n\nOptional (for Proxmox LXC):\n\npvesh (Proxmox command-line client)\nSSH access to Proxmox host\n\nOptional (for chat approval):\n\nOpenClaw message tool configured (WhatsApp/Telegram)\nSetup OpenClaw Integration\n\nIf you want approval workflows and chat notifications:\n\n# Create approval config\nmkdir -p ~/.openclaw/workspace/deploy-pilot\ncat > ~/.openclaw/workspace/deploy-pilot/config.json << 'EOF'\n{\n  \"approval_channel\": \"whatsapp\",\n  \"approval_timeout_minutes\": 30,\n  \"notify_deployments\": true,\n  \"auto_rollback_on_health_fail\": true\n}\nEOF\n\nCommands\nInitialize & Setup\ndeploy-pilot init\n\n\nInteractive setup:\n\nSet base directory for stacks\nChoose deployment strategy (docker or lxc)\nConfigure health checks\nSet up approval workflows\nManage Stacks\n# List all managed stacks\ndeploy-pilot stacks\n\n# Register a new Docker Compose stack\ndeploy-pilot add docker /path/to/docker-compose.yml\n\n# Register a new LXC container\ndeploy-pilot add lxc <node> <vmid> <name>\n\n# Show details for a stack\ndeploy-pilot show <stack>\n\n# Remove a stack from management\ndeploy-pilot remove <stack>\n\nDeploy\n# Deploy latest version\ndeploy-pilot deploy <stack>\n\n# Deploy specific version\ndeploy-pilot deploy <stack> --version 1.2.0\n\n# Deploy with custom image tags\ndeploy-pilot deploy <stack> --images \"web:v2.0,api:v3.0\"\n\n# Dry-run (show what would be deployed)\ndeploy-pilot deploy <stack> --dry-run\n\n# Skip health check\ndeploy-pilot deploy <stack> --skip-health-check\n\n# Force deployment (skip approval)\ndeploy-pilot deploy <stack> --force\n\n\nExample workflow:\n\n# 1. Request deployment (goes to WhatsApp)\n$ deploy-pilot deploy web-api\n\nDeployment request sent to WhatsApp.\nWaiting for approval (timeout: 30 minutes)...\n\n# User replies \"approve\" on WhatsApp\n\n# 2. Approved, deploying...\n[✓] Pre-deploy hook: running database migrations\n[✓] Creating snapshot: web-api@2.1.0\n[✓] Pulling new images\n[✓] Starting blue environment\n[✓] Health check (10/10 passed)\n[✓] Switching traffic to new version\n[✓] Cleaning up old environment\n\nDeployment complete. Stack: web-api | Version: 2.1.0 | Duration: 2m34s\n\nRollback\n# Rollback to previous version\ndeploy-pilot rollback <stack>\n\n# Rollback to specific version\ndeploy-pilot rollback <stack> --version 1.5.0\n\n# Dry-run\ndeploy-pilot rollback <stack> --dry-run\n\n\nExample:\n\n$ deploy-pilot rollback web-api\nRollback: web-api from 2.1.0 → 2.0.0\n[✓] Creating snapshot: web-api@2.1.0 (previous good state)\n[✓] Reverting to version 2.0.0\n[✓] Health check (10/10 passed)\n[✓] Switching traffic\n\nRollback complete. Stack: web-api | Previous version: 2.0.0 | Duration: 1m12s\n\nHealth Checks\n# Check current health of a stack\ndeploy-pilot health <stack>\n\n# Verbose health output\ndeploy-pilot health <stack> --verbose\n\n# Check all stacks\ndeploy-pilot health --all\n\n\nOutput:\n\nStack: web-api (v2.1.0)\n  Container web-web    : ✓ RUNNING (1d2h)\n  Container web-db     : ✓ RUNNING (1d2h)\n  HTTP /health endpoint: ✓ 200 OK (45ms)\n  Disk usage          : ✓ 62% (within threshold)\n  Memory usage        : ✓ 1.2GB / 2GB (60%)\n  Custom check (ping) : ✓ PASSED (12ms)\n\nOverall health: ✓ HEALTHY\nLast check: 5 minutes ago\n\nHistory & Audit\n# Show deployment history for a stack\ndeploy-pilot history <stack>\n\n# Show last N deployments\ndeploy-pilot history <stack> --limit 10\n\n# Filter by status\ndeploy-pilot history <stack> --status success\ndeploy-pilot history <stack> --status failed\ndeploy-pilot history <stack> --status rolled-back\n\n# Show full details of a deployment\ndeploy-pilot history <stack> --id deployment-12345 --details\n\n\nExample:\n\n$ deploy-pilot history web-api --limit 5\n\nID                  | Version | Status    | Approved By | Duration | Time\ndeploy-00001        | 2.1.0   | success   | marius      | 2m34s    | 2026-02-25 14:23\ndeploy-00000        | 2.0.0   | rolled-back | marius    | 0m45s    | 2026-02-25 13:45\ndeploy-99999        | 2.0.0   | success   | marius      | 3m12s    | 2026-02-25 12:00\ndeploy-99998        | 1.9.0   | success   | automated   | 2m01s    | 2026-02-24 22:15\ndeploy-99997        | 1.9.0   | failed    | marius      | 1m33s    | 2026-02-24 20:30\n\nConfiguration & Hooks\n# Show deployment strategy for a stack\ndeploy-pilot config <stack>\n\n# Update health check config\ndeploy-pilot config <stack> --health-endpoint /api/health\ndeploy-pilot config <stack> --health-timeout 60\n\n# Add pre-deploy hook\ndeploy-pilot hook <stack> pre \"scripts/backup-db.sh\"\n\n# Add post-deploy hook\ndeploy-pilot hook <stack> post \"scripts/notify-team.sh\"\n\n# List hooks\ndeploy-pilot hook <stack> list\n\n# Remove hook\ndeploy-pilot hook <stack> remove <hook-id>\n\nCron Integration (Scheduled Deployments)\n# Deploy on a schedule (useful for auto-updates of images)\ndeploy-pilot cron-setup <stack> \"0 2 * * *\" \"deploy-pilot deploy <stack>\"\n\n# List scheduled deployments\ndeploy-pilot cron list\n\n# Remove scheduled deployment\ndeploy-pilot cron remove <stack>\n\nAdvanced: JSON Output\n\nAll commands support --json for programmatic use:\n\ndeploy-pilot stacks --json\ndeploy-pilot health <stack> --json\ndeploy-pilot history <stack> --json\n\nReal-World Examples\nExample 1: Zero-Downtime Web App Deployment\n# Current state: web-api v2.0.0, 3 replicas\n\n# Deploy new version (automatic approval workflow)\n$ deploy-pilot deploy web-api --images \"api:2.1.0\"\n\nDeployment request sent to WhatsApp with:\n  - Current version: 2.0.0\n  - New version: 2.1.0\n  - Changes: API security patch + bug fixes\n\n# (User approves on WhatsApp after reviewing changes)\n\n# Deployment proceeds:\n[✓] Blue-green setup: spinning up 3 new replicas with v2.1.0\n[✓] Health checks passing on new replicas\n[✓] Gradual traffic switch (no downtime)\n[✓] Old replicas kept for 5 minutes (fast rollback if needed)\n[✓] Cleanup old environment\n\nResult: Zero-downtime update. Customers see no interruption.\nRollback available for 5 minutes if issues found.\n\nExample 2: Database Migration + Deployment\n# Stack with API + PostgreSQL\n\n# Define pre-deploy hook to run migrations\n$ deploy-pilot hook api-db pre \"scripts/migrate.sh\"\n\n# Now when you deploy:\n$ deploy-pilot deploy api-db --version 2.5.0\n\n[✓] Running pre-hook: database migration (alembic upgrade head)\n    - Added column: users.phone_number\n    - Added index: users(email)\n[✓] Creating snapshot (in case rollback needed)\n[✓] Deploying new API version\n[✓] Health check: database connectivity OK\n[✓] Success!\n\n# If something went wrong:\n$ deploy-pilot rollback api-db\n\n[✓] Downgrading database schema (alembic downgrade -1)\n[✓] Reverting API to v2.4.0\n[✓] All OK\n\nExample 3: Multi-Environment Stack (Dev → Prod)\n# Use same compose file, different deployments\ndeploy-pilot add docker dev  /compose/docker-compose.yml --env=dev\ndeploy-pilot add docker prod /compose/docker-compose.yml --env=prod\n\n# Deploy to dev (no approval needed)\ndeploy-pilot deploy dev --force\n\n# Deploy to prod (requires approval)\ndeploy-pilot deploy prod --images \"web:v2.1.0,api:v2.1.0\"\n\n(Request goes to WhatsApp with dev metrics)\n(User reviews test results from dev, approves)\n(Prod deploys with same images as dev)\n\nExample 4: Proxmox LXC Deployment\n# Register LXC container on Proxmox\ndeploy-pilot add lxc pve 205 app-container\n\n# Configure health check (SSH connectivity + systemctl status)\ndeploy-pilot config app-container --health-check \"ssh://root@10.0.0.205:systemctl is-active service\"\n\n# Deploy new container version\ndeploy-pilot deploy app-container --image ubuntu:22.04 --force\n\n(New LXC container cloned from template, health checked, old kept as backup)\n\nConfiguration File Structure\n\nLocated at: ~/.openclaw/workspace/deploy-pilot/stacks.json\n\n{\n  \"stacks\": {\n    \"web-api\": {\n      \"type\": \"docker\",\n      \"path\": \"/home/compose/web-api\",\n      \"compose_file\": \"docker-compose.yml\",\n      \"health_checks\": [\n        {\n          \"type\": \"http\",\n          \"endpoint\": \"http://localhost:8080/health\",\n          \"timeout\": 30,\n          \"expected_code\": 200\n        }\n      ],\n      \"hooks\": {\n        \"pre\": [\"scripts/backup.sh\"],\n        \"post\": [\"scripts/notify.sh\"]\n      },\n      \"versions\": [\n        {\n          \"id\": \"2.1.0\",\n          \"timestamp\": \"2026-02-25T14:23:00Z\",\n          \"images\": {\"web\": \"myrepo/web:2.1.0\", \"api\": \"myrepo/api:2.1.0\"},\n          \"status\": \"success\",\n          \"approved_by\": \"marius\"\n        }\n      ]\n    }\n  }\n}\n\nTroubleshooting\nDeployment stuck waiting for approval\n# Check approval status\ndeploy-pilot status <deployment-id>\n\n# Force completion (skip approval, use with caution)\ndeploy-pilot force <deployment-id>\n\nHealth check failing\n# Verbose health check output\ndeploy-pilot health <stack> --verbose\n\n# Disable health check for this deployment\ndeploy-pilot deploy <stack> --skip-health-check\n\n# (Fix the issue, then re-deploy)\n\nRollback failed\n# Check available versions\ndeploy-pilot history <stack> --limit 20\n\n# Manual rollback to specific version\ndeploy-pilot rollback <stack> --version <known-good-version>\n\nApproval workflow not working\n\nCheck OpenClaw message tool:\n\n# Test message delivery\nopenclaw message test \"Test message\"\n\n# Verify config\ncat ~/.openclaw/workspace/deploy-pilot/config.json\n\nPerformance & Limits\nMetric\tFree\tPro\nManaged stacks\t3\tUnlimited\nDeployment history\t10 per stack\tUnlimited\nBlue-green overlaps\t1\t5 (parallel deployments)\nApproval timeout\t30 min (fixed)\tConfigurable\nHealth check frequency\tEvery deployment\tConfigurable (5min intervals)\nSafety & Best Practices\n\n✅ Do this:\n\nAlways test in dev environment first\nUse health checks — they save you\nReview deployment changes before approving\nKeep a rollback plan (it's automatic, but know your escape route)\nArchive deployment history weekly\n\n❌ Don't do this:\n\nDeploy without health checks\nUse --skip-approval in production\nRemove snapshots immediately after deploy\nDeploy during peak traffic without monitoring\nIgnore failed health checks\nArchitecture\n                    ┌─────────────────────┐\n                    │   User (WhatsApp)   │\n                    └──────────┬──────────┘\n                               │\n                    ┌──────────▼──────────┐\n                    │   deploy-pilot.py   │\n                    │  (main orchestrator)│\n                    └──────────┬──────────┘\n                               │\n        ┌──────────────────────┼──────────────────────┐\n        │                      │                      │\n  ┌─────▼────┐         ┌──────▼────┐         ┌──────▼────┐\n  │ Docker   │         │   LXC     │         │ Health    │\n  │ Compose  │         │ (Proxmox) │         │ Checker   │\n  │ Executor │         │ API Client│         │ (HTTP/SSH)│\n  └──────────┘         └───────────┘         └───────────┘\n        │                      │                      │\n  ┌─────▼──────────────────────┼──────────────────────┘\n  │                            │\n  └────────────────┬───────────┘\n                   │\n         ┌─────────▼──────────┐\n         │  State DB (JSON)   │\n         │  Version History   │\n         │  Deployment Log    │\n         └────────────────────┘\n\nSupport & Contribution\n\nQuestions? Check the examples above or read the source code.\n\nFound a bug? Log it on AgentGram community.\n\nWant a feature? Build it! These are executable scripts. Fork, modify, share.\n\nLicense\n\nMIT — Use freely. Attribution appreciated.\n\nLast updated: 2026-02-25\nTested on: Ubuntu 22.04, Proxmox 8.0, Docker 26.0"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/mariusfit/clawhub-skill-deploy-pilot",
    "publisherUrl": "https://clawhub.ai/mariusfit/clawhub-skill-deploy-pilot",
    "owner": "mariusfit",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/clawhub-skill-deploy-pilot",
    "downloadUrl": "https://openagent3.xyz/downloads/clawhub-skill-deploy-pilot",
    "agentUrl": "https://openagent3.xyz/skills/clawhub-skill-deploy-pilot/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clawhub-skill-deploy-pilot/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clawhub-skill-deploy-pilot/agent.md"
  }
}