What are Checkpoints?
A checkpoint represents a completed step in the deployment process. Each time ClawControl successfully completes a deployment step, it saves a checkpoint to the deployment’s state. Fromsrc/types/index.ts:67-71:
Checkpoint Stages
Every deployment progresses through these checkpoints in order. Fromsrc/services/deployment.ts:26-43:
Detailed Checkpoint Descriptions
server_created - VPS Server Provisioned
server_created - VPS Server Provisioned
- Generates SSH key pair (if not exists)
- Uploads public key to cloud provider
- Creates VPS server with specified configuration
- Waits for server to reach “running” state
- Records server ID and public IP in state
src/services/deployment.ts:358-574ssh_key_uploaded - SSH Key Added
ssh_key_uploaded - SSH Key Added
- Verifies SSH key exists in provider account
- Validates key fingerprint matches local key
src/services/deployment.ts:576-583ssh_connected - SSH Connection Established
ssh_connected - SSH Connection Established
- Waits for SSH service to be available (up to 3 minutes)
- Tests SSH authentication with private key
- Establishes persistent connection for subsequent steps
src/services/deployment.ts:585-605swap_configured - Swap Memory Set Up
swap_configured - Swap Memory Set Up
- Creates swap file for systems with limited RAM
- Enables swap and configures swappiness
- Essential for running Chrome on small VPS instances
src/services/deployment.ts:629-632system_updated - System Packages Updated
system_updated - System Packages Updated
- Runs
apt updateto refresh package lists - Installs security updates and dependencies
- Ensures latest package versions
src/services/deployment.ts:634-637nvm_installed - Node Version Manager Installed
nvm_installed - Node Version Manager Installed
- Downloads and installs latest NVM
- Configures shell profile for NVM
- Enables easy Node.js version switching
src/services/deployment.ts:639-642node_installed - Node.js Installed
node_installed - Node.js Installed
- Installs latest LTS version via NVM
- Sets as default Node.js version
- Verifies installation
src/services/deployment.ts:644-647pnpm_installed - pnpm Package Manager Installed
pnpm_installed - pnpm Package Manager Installed
- Installs pnpm globally via npm
- Required for OpenClaw dependencies
- Faster and more efficient than npm
src/services/deployment.ts:649-652chrome_installed - Google Chrome Installed
chrome_installed - Google Chrome Installed
- Downloads and installs Chrome stable
- Installs required dependencies
- Necessary for OpenClaw’s browser automation
src/services/deployment.ts:654-657openclaw_installed - OpenClaw Package Installed
openclaw_installed - OpenClaw Package Installed
- Installs latest OpenClaw via npm
- Makes
openclawcommand globally available - Prepares for configuration
src/services/deployment.ts:659-662openclaw_configured - OpenClaw Configured
openclaw_configured - OpenClaw Configured
- Writes OpenClaw configuration file
- Sets up AI provider credentials
- Configures channel settings (Telegram, etc.)
- Generates gateway authentication token
src/services/deployment.ts:664-681tailscale_installed - Tailscale VPN Installed
tailscale_installed - Tailscale VPN Installed
- Downloads and installs Tailscale
- Skipped if
skipTailscale: truein config - Enables secure private network access
src/services/deployment.ts:683-692tailscale_authenticated - Tailscale Authenticated
tailscale_authenticated - Tailscale Authenticated
- Generates authentication URL
- Prompts user to authenticate in browser
- Waits for authentication to complete (5 minute timeout)
- Skipped if Tailscale installation was skipped
src/services/deployment.ts:694-726tailscale_configured - Tailscale Serve Configured
tailscale_configured - Tailscale Serve Configured
- Sets up Tailscale Serve to proxy gateway
- Records Tailscale IP address
- Enables secure remote dashboard access
- Skipped if Tailscale installation was skipped
src/services/deployment.ts:728-742daemon_started - OpenClaw Daemon Started
daemon_started - OpenClaw Daemon Started
- Installs systemd service unit
- Starts and enables OpenClaw daemon
- Optionally runs interactive
openclaw onboard - Verifies daemon is running
src/services/deployment.ts:744-793completed - Deployment Complete
completed - Deployment Complete
- All steps completed successfully
- OpenClaw is running and accessible
- Deployment status set to “deployed”
src/services/deployment.ts:350-353How Recovery Works
When a deployment fails or is interrupted, ClawControl can resume from the last successful checkpoint.Finding the Last Checkpoint
Fromsrc/services/deployment.ts:80-94:
Determining Next Step
Fromsrc/services/deployment.ts:99-112:
Automatic Retry Logic
Each checkpoint automatically retries up to 3 times on failure. Fromsrc/services/deployment.ts:236-291:
Checkpoint Storage
Checkpoints are stored in the deployment’sstate.json file:
~/.clawcontrol/deployments/<name>/state.json
Recovery Examples
Scenario 1: Network Interruption
clawcontrol deploy <name>:
- Skips: server_created, ssh_key_uploaded, ssh_connected
- Resumes from: swap_configured
- Continues with remaining steps
Scenario 2: Provider Rate Limit
retryCount: 2
Scenario 3: Manual Interruption
system_updated
Manual Checkpoint Management
You can inspect and manage checkpoints:View Current Checkpoints
Reset to Specific Checkpoint
Fromsrc/services/deployment.ts:161-179:
Progress Reporting
ClawControl reports progress during deployment:Best Practices
Don't Delete state.json
Let Retries Work
Check Logs on Failure
Keep Backups
Why Checkpoints Matter
Without checkpoints, every failure would require:- Deleting the half-configured server
- Creating a new server
- Starting installation from scratch
- Repeating all previous steps
- Resume from last successful step
- Only retry the failed operation
- Save time and reduce API calls
- Minimize costs from partially-deployed resources