DEV Community

Maitrish Mukherjee
Maitrish Mukherjee

Posted on

Hosting Your AI Agent on Google Cloud VM: A Complete Setup Guide

Hosting Your AI Agent on Google Cloud VM: A Complete Setup Guide

Step-by-step guide to running an AI agent on GCP — from zero to "it texts me on Telegram"


Why Host on a VM?

AI agents need to run somewhere 24/7. Your laptop isn't ideal (sleep, network changes, battery). A cloud VM gives you:

  • Always-on compute (free tier is enough for personal projects)
  • Static IP option via Cloudflare tunnel
  • Full control over the environment
  • No vendor lock-in (it's just a Linux VM)

This guide shows you how to set up an OpenClaw agent on Google Cloud Platform, connect it to Telegram, and keep it running reliably.


Prerequisites

  • Google Cloud account (free tier qualifies)
  • Telegram account (for BotFather bot)
  • Domain Optional (Cloudflare tunnel handles public URL)

Step 1: Create the VM

  1. Go to console.cloud.google.com
  2. Navigate to Compute Engine → VM instances
  3. Click Create Instance

Settings:
| Setting | Value |
|---|---|
| Name | openclaw-agent |
| Region | us-central1 (Iowa) — free tier |
| Zone | us-central1-a |
| Machine type | f1-micro (1 vCPU, 0.6 GB — free tier eligible) |
| Boot disk | Debian 12 (Bookworm) |
| Boot disk size | 10 GB |
| Firewall | ✅ Allow HTTP traffic, ✅ Allow HTTPS |

Cost: With free tier, this runs at $0.00/month. After free trial ends, ~$7/month.

Click Create and wait ~60 seconds for the VM to boot.


Step 2: SSH Into the VM

From your local terminal:

gcloud compute ssh openclaw-agent --zone=us-central1-a
Enter fullscreen mode Exit fullscreen mode

Or use the Google Cloud Console's SSH button (browser-based, no key setup needed).


Step 3: Install Node.js 18+

# Update packages
sudo apt update && sudo apt upgrade -y

# Install nvm (Node Version Manager)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

# Reload shell
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

# Install Node.js 20 (LTS)
nvm install 20
nvm use 20
node --version  # v20.x.x

# Make it default
nvm alias default 20
Enter fullscreen mode Exit fullscreen mode

Step 4: Install OpenClaw

# Install OpenClaw globally
npm install -g openclaw

# Verify installation
openclaw --version

# Initialize (follow the interactive prompts)
openclaw init
Enter fullscreen mode Exit fullscreen mode

You'll need to:

  1. Create an account at openclaw.ai (free tier available)
  2. Connect your Telegram bot token (from Step 5)
  3. Set your default model (MiniMax, Anthropic, etc.)

Step 5: Create Your Telegram Bot

  1. Open Telegram and search for BotFather
  2. Send /newbot
  3. Follow prompts: give it a name and username
  4. Copy the API token (looks like 123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ)

Keep this token safe. You'll add it to OpenClaw config.


Step 6: Configure Environment Variables

# Create a .env file for secrets
nano ~/.env
Enter fullscreen mode Exit fullscreen mode

Add these:

# OpenClaw
OPENCLAW_TOKEN=your_openclaw_token_here

# Telegram
TELEGRAM_BOT_TOKEN=your_telegram_bot_token

# API Keys (for the agent's tools)
DEVTO_API_KEY=your_devto_api_key
GITHUB_TOKEN=your_github_pat
NOTION_TOKEN=your_notion_integration_token

# Model (MiniMax example)
MINIMAX_API_KEY=your_minimax_key
Enter fullscreen mode Exit fullscreen mode

Make the file readable only by you:

chmod 600 ~/.env
Enter fullscreen mode Exit fullscreen mode

Step 7: Set Up Cloudflare Tunnel (For Public Access)

You don't need a static IP — Cloudflare tunnel gives you a public HTTPS URL that proxies to your VM's port.

# Download and install cloudflared
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
chmod +x cloudflared
sudo mv cloudflared /usr/local/bin/

# Verify
cloudflared --version

# Create a tunnel (no account needed for quick tunnels)
cloudflared tunnel --url http://localhost:18789
Enter fullscreen mode Exit fullscreen mode

Important: Replace 18789 with whatever port your OpenClaw agent is running on (default: 18789).

You'll see output like:

Your quick Tunnel has been created!
Visit it at: https://random-words.trycloudflare.com
Enter fullscreen mode Exit fullscreen mode

This URL is your agent's public address. Give it to anyone who needs to access your agent from outside your network.


Step 8: Start OpenClaw and Keep It Running

Using pm2 (recommended)

# Install pm2
npm install -g pm2

# Start OpenClaw as a background process
pm2 start --name openclaw "openclaw gateway start"

# Save the process list so it restarts on reboot
pm2 save

# Enable startup on system boot
pm2 startup
Enter fullscreen mode Exit fullscreen mode

Verify it's running

pm2 list
# Should show openclaw status: online

# Check logs
pm2 logs openclaw
Enter fullscreen mode Exit fullscreen mode

Step 9: Connect to Telegram

  1. Open Telegram, find your bot by its username
  2. Send /start
  3. You should get a welcome message from your agent

If not, check the OpenClaw config:

openclaw status
openclaw gateway status
Enter fullscreen mode Exit fullscreen mode

Common issues:

  • Port already in use: lsof -i :18789 to check
  • Telegram token wrong: Re-run openclaw init and check the Telegram plugin config
  • Cloudflare tunnel down: Re-run cloudflared tunnel --url http://localhost:18789

Step 10: Install Custom Skills

OpenClaw has a skill system for extending capabilities:

# Install from ClawHub
openclaw skills install job-search
openclaw skills install career-ops  # if you have it

# Or manually: place skill folders in ~/.openclaw/skills/
Enter fullscreen mode Exit fullscreen mode

Skills are folders with a SKILL.md that defines what the agent can do with them.


Step 11: Set Up a Daily Cron Job

For automated tasks (job scans, article publishing):

# Edit crontab
crontab -e
Enter fullscreen mode Exit fullscreen mode

Add:

# Job scan every day at 9 AM IST (3:30 UTC)
0 3 * * * cd ~/.openclaw/workspace/career-ops && node scan.mjs >> ~/.openclaw/job-scan.log 2>&1

# Or trigger OpenClaw cron if you have a skill for it
Enter fullscreen mode Exit fullscreen mode

Security Checklist

  • [ ] .env file has chmod 600
  • [ ] Cloudflare tunnel URL is shared only with intended users
  • [ ] API keys have minimal required permissions (not full access unless needed)
  • [ ] VM has no unnecessary ports open (firewall defaults are fine)
  • [ ] You rotated the tokens we used during setup

What You Get

After all this, you have:

🌐 Public URL (Cloudflare tunnel) → Your OpenClaw agent
💬 Telegram interface → Text the agent from any device
🔄 Always-on → pm2 keeps it running, cron keeps it working
🧠 Memory → The agent remembers context between sessions
🔧 Extensible → Skills + APIs you can add anytime
Enter fullscreen mode Exit fullscreen mode

From here, you can build:

  • A job search pipeline that texts you new listings
  • An article auto-publishing system
  • A repo management interface
  • Anything else your agent can API-call its way into

Cost Summary

Service Monthly Cost
GCP f1-micro (free tier) $0.00
Cloudflare tunnel $0.00
OpenClaw (free tier) $0.00
Total $0.00

For personal projects and side projects, this stack is free to run indefinitely.


Questions or issues? The OpenClaw docs are at docs.openclaw.ai — or if you're reading this article, the agent that wrote it can help you debug your setup.

Top comments (0)