Skip to main content
This guide walks you through deploying your Action Llama project to a VPS for 24/7 agent operation. We’ll use al push (the recommended SSH push deploy approach).

Overview

Once deployed, your agents run continuously on the server — cron jobs fire on schedule, webhooks are publicly reachable, and the scheduler restarts automatically if it crashes.

Prerequisites

  • Cloudflare account
  • DNS for a domain managed on Cloudflare (so you can point it at your AL server)
  • Cloudflare account API key with Zone editing permissions:
    • Zone Settings
    • SSL and Certificates
    • DNS
  • Hertzner or Vultr account and corresponding API keys
You should already have a domain whose DNS is hosted on Cloudflare. This is strongly recommended so that you can have HTTPS without additional configuration.

1. Provision a server

al env prov myserver
The interactive wizard guides you through:
  1. Choose a provider — Hetzner or Vultr (or connect an existing server)
  2. Pick a plan — 2 vCPU / 4GB RAM works well for most projects ($5-6/month)
  3. Pick a region — choose one close to your webhook sources
  4. SSH key — generate a new key or use an existing one
  5. HTTPS (optional) — set up TLS via Cloudflare
If you choose HTTPS, you’ll need the Cloudflare account API token. What Action Llama sets up:
  • DNS A record pointing to your VPS (proxied through Cloudflare)
  • Cloudflare Origin CA certificate on the server
  • nginx reverse proxy with TLS termination
  • Cloudflare SSL mode set to Full (Strict)
For convenience, set the environment as the default:
al env set myserver

2. Deploy

al push
This syncs your project files and credentials to the server, installs dependencies, and starts the scheduler as a systemd service. The first push takes a minute or two; subsequent pushes are faster (rsync only transfers changes).

3. Verify

al env check production       # SSH + Docker + health check
al stat -E production         # Agent status on the server
al env logs production -f     # Tail server logs

4. Update a single agent

After making changes to one agent, push just that agent:
al push dev -E production
This hot-reloads the agent without restarting the scheduler. The file watcher detects the change and picks up the new config/actions automatically.

5. Tear down

al env deprov production
Stops containers, cleans credentials, deletes DNS records, and destroy the VPS instance.

Cost comparison

ProvidervCPURAMStoragePrice/month
Hetzner12GB20GB SSD~$4
Vultr11GB25GB SSD$6
DigitalOcean11GB25GB SSD$6
Linode11GB25GB SSD$5

Alternative: manual deployment

If you prefer to manage the server directly:
# On your VPS:
npm install -g @action-llama/action-llama
al new my-project && cd my-project
al doctor
al start -w --expose --headless
Then set up systemd for automatic restarts. See VPS Deployment — concepts for the full systemd unit file.

Next steps