OpenClaw (Clawdbot) Setup Guide: Your 24/7 AI Assistant on VPS or Mac Mini

Complete guide to setting up OpenClaw (formerly Moltbot/Clawdbot) on Hetzner VPS or Mac Mini. Covers installation, Telegram integration, LLM providers, skills, memory, and configuration.

OpenClaw (Clawdbot) Setup Guide: Your 24/7 AI Assistant on VPS or Mac Mini

I’ve been running OpenClaw on a Hetzner VPS for over a week now. It’s hooked up to Slack and I’ve been using GLM 4.7 with the coding plan. Recently switched to Gemini CLI with Gemini 3 Flash instead. Figured I’d share what I learned getting it set up and actually useful.

Name Evolution: From Clawdbot to Moltbot to OpenClaw

Yeah, this thing has had a bit of an identity crisis. Started as Clawdbot, became Moltbot after some trademark pressure, and now it’s settled on OpenClaw. Install URL moved to openclaw.ai and all the commands are openclaw now. I might mention the old names here and there for context, but everything current points to OpenClaw.

OpenClaw is an open-source AI assistant that lives on a server 24/7 and chats with you through Telegram, WhatsApp, Slack, or Discord. Unlike ChatGPT or Claude where you go to their site, this comes to you. It remembers stuff across conversations and can ping you when something needs attention.

What This Guide Covers

  • Mac Mini vs VPS hosting — which makes sense for you
  • Step-by-step installation on Hetzner or any Linux VPS
  • Telegram, WhatsApp, Slack, and Discord integration
  • LLM provider options (Anthropic, OpenAI, Gemini, local models)
  • Memory system and how to make things stick
  • Skills and config files for customization
  • Commands you’ll actually use

If you’re new to AI coding tools, our AI Programming Beginners Guide covers the basics. For running local models, see how to set up Ollama with Docker. If you want something lighter, our nanobot setup guide covers a 3,700-line alternative that installs with pip.

What OpenClaw Actually Does

Most AI tools wait for you to ask something. OpenClaw actually does stuff — clears your inbox, schedules meetings, researches companies, follows up on tasks, runs automations on your server.

The architecture looks like this:

You (Telegram/WhatsApp/Slack)

OpenClaw Gateway (running on VPS)

LLM Provider (Anthropic, OpenAI, Gemini, etc.)

Tools and Skills (file access, web search, calendar, etc.)

The Gateway just runs in the background on your server. Messages come in from your messaging app, get routed to whatever AI model you picked, and the model can actually run commands on your server — move files, run scripts, browse the web.

Everything stays on your machine except the actual AI calls. Your data isn’t living on some company server somewhere.

Mac Mini vs VPS: Which One to Choose

Kind of a funny situation — the OpenClaw community caused a minor run on Mac Mini M4s. People were buying them just to run this thing. Here’s how to decide which route makes sense for you.

Mac Mini M4 Advantages

FeatureMac MiniVPS
iMessage supportYesNo
Native macOS appsYesNo
Local model inferenceExcellent (M4 chip)Limited
Power consumption~10W idleN/A (hosted)
Upfront cost$599-1299$0
Monthly cost~$3 electricity$5-50
Physical access requiredYesNo

If you want iMessage, Mac Mini is your only choice. The M4 chip also handles local models well if you’re trying to avoid API bills. But you need solid home internet and power — no outages.

VPS Advantages

For most people, a VPS is the better call:

  • No hardware to maintain or keep running
  • Redundant power and network
  • Can access from anywhere without port forwarding
  • Easier to set up and migrate
  • Lower entry cost — $5.49/month at Hetzner gets you started

I’m using a Hetzner CX33 (4 vCPU, 8GB RAM) for €5.49/month. It handles OpenClaw comfortably with plenty of headroom for other services.

Get Started with Hetzner

Get €20 credit when you sign up through our referral link. That covers nearly 4 months of running OpenClaw.

When to Choose Mac Mini

  • You need iMessage as your primary channel
  • You want to run local models (Llama, Mistral) to avoid API costs
  • You prefer hardware you physically control
  • You already have a Mac Mini sitting around

When to Choose VPS

  • Telegram, WhatsApp, Slack, or Discord are your primary channels
  • You don’t want to deal with home networking
  • You need 24/7 uptime without worrying about power outages
  • You’re okay paying for API calls

Installation on Hetzner VPS

Takes about 20 minutes start to finish. I’m using Hetzner, but these steps work on pretty much any Ubuntu VPS.

Create the Server

  1. Go to Hetzner Cloud Console
  2. Create a new project named openclaw
  3. Click Create Server
  4. Select:
    • Location: Germany (cheapest) or your nearest region
    • Image: Ubuntu 24.04
    • Type: CX33 (4 vCPU, 8GB RAM) — €5.49/mo
    • IPv4: Keep enabled
  5. Add your SSH key (generate one with ssh-keygen -t ed25519 if you don’t have one)
  6. Name it openclaw and create

Wait 30 seconds for the server to boot, then grab the IP address.

Install OpenClaw

SSH into your server:

ssh root@YOUR_SERVER_IP

Update the system and install Node.js 22:

apt update && apt upgrade -y
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt install -y nodejs

Install OpenClaw and run the onboarding wizard:

curl -fsSL https://openclaw.ai/install.sh | bash

The wizard walks you through everything:

  • Local vs Remote gateway selection
  • Model authentication (API keys or OAuth)
  • Channel setup (Telegram, WhatsApp, etc.)
  • Background service installation

LLM Provider Options

OpenClaw works with several AI providers. Here’s the breakdown:

Anthropic (Claude)

This is what I’d recommend for most people. Two ways to connect:

API Key (recommended):

  1. Go to console.anthropic.com
  2. Create an API key (starts with sk-ant-)
  3. Paste it when the wizard asks

Claude Code OAuth (uses your subscription): If you have Claude Pro/Max, you can use your subscription instead of paying for API credits:

claude setup-token

This generates a token you paste into the wizard. Works with Claude Code CLI.

OpenAI

For GPT-5 and Codex models:

  1. Go to platform.openai.com
  2. Create an API key
  3. Enter it during onboarding

If you have a ChatGPT Plus or Codex subscription, you can use OAuth similar to Claude Code.

Google Gemini

I’ve been using Gemini 3 Flash recently. It’s fast and cheap:

openclaw configure --section models

For Gemini CLI OAuth setup, the wizard will prompt you to authenticate through Google.

Local Models (Ollama)

If you want to avoid API costs entirely, OpenClaw works with Ollama. Install Ollama on your server:

curl -fsSL https://ollama.ai/install.sh | sh
ollama pull llama3.2

Then configure OpenClaw to use local models in your config.

Cost Comparison

ProviderModelTypical Monthly Cost
AnthropicClaude Sonnet 4.5$15-50
AnthropicClaude Opus 4.5$50-150
OpenAIGPT-5$20-70
GoogleGemini 3 Flash$10-30
LocalLlama 3.2 (Ollama)$0 (compute only)

Costs bounce around a lot depending on how much you use it. Keep an eye on your first month’s bill. For cheaper alternatives like MiniMax M2.5 and GLM-5, see our nanobot setup guide which covers providers that cost a fraction of Anthropic and OpenAI.

If you want to use your existing Claude or ChatGPT subscription with other tools, check out VibeProxy for routing subscription access.

Channel Setup

Telegram (Easiest)

  1. Open Telegram and search for @BotFather
  2. Send /newbot
  3. Choose a name and username for your bot
  4. Copy the bot token BotFather gives you
  5. Search for @userinfobot and send any message to get your user ID
  6. Paste both into the OpenClaw wizard

The user ID goes in allowFrom to restrict who can talk to your bot. Without this, anyone who finds your bot can chat with it.

WhatsApp

WhatsApp uses QR login:

openclaw channels login

Scan the QR code from WhatsApp > Settings > Linked Devices. Your personal WhatsApp number becomes the bot’s number — messages you send to yourself go to OpenClaw.

Slack

For teams:

  1. Create a Slack app at api.slack.com/apps
  2. Add Bot Token Scopes: chat:write, app_mentions:read, im:history, im:read, im:write
  3. Install to your workspace
  4. Copy the Bot User OAuth Token
  5. Paste into OpenClaw config

I run OpenClaw in a dedicated Slack channel. Mention @openclaw to interact.

Discord

  1. Create a Discord application at discord.com/developers
  2. Create a bot user and copy the token
  3. Invite the bot to your server with appropriate permissions
  4. Add the token to OpenClaw config

Memory System

OpenClaw remembers stuff from previous chats. The memory setup has a few parts:

How Memory Works

  • Short-term: Current conversation context
  • Long-term: Facts about you stored in ~/.openclaw/workspace/MEMORY.md and ~/.openclaw/workspace/USER.md
  • Semantic search: Finds relevant past conversations (requires OpenAI API for embeddings)

Making Things Stick

If OpenClaw keeps forgetting something, just tell it straight up:

“Remember: I prefer meeting invites on Google Calendar, not Outlook.”

It stores this in your memory files. You can also edit them directly:

nano ~/.openclaw/workspace/USER.md

Add your preferences, work context, project details — anything you want it to always know.

Memory and Config Files

Workspace files live in ~/.openclaw/workspace/. For the full list of configuration options, see the AGENTS.default reference.

FilePurpose
~/.openclaw/workspace/USER.mdYour personal info and preferences
~/.openclaw/workspace/SOUL.mdBot personality and behavior rules
~/.openclaw/workspace/MEMORY.mdLong-term memories it accumulates
~/.openclaw/workspace/AGENTS.mdAgent configuration for specialized tasks

Config Files

The main config lives at ~/.openclaw/config.json (note: this is directly in ~/.openclaw/, not in the workspace subfolder). Key sections:

Model Configuration

{
  "agents": {
    "defaults": {
      "model": {
        "primary": "anthropic/claude-sonnet-4-5",
        "fallback": ["google/gemini-3-flash"]
      }
    }
  }
}

Channel Settings

{
  "channels": {
    "telegram": {
      "enabled": true,
      "token": "YOUR_BOT_TOKEN",
      "allowFrom": ["YOUR_USER_ID"]
    }
  }
}

Editing Config

Use the built-in configure command:

openclaw configure --section channels
openclaw configure --section models

Or edit directly and restart:

nano ~/.openclaw/config.json
openclaw gateway restart

For MCP (Model Context Protocol) integration, see our MCP Introduction for Beginners.

Skills

Skills are basically reusable workflows OpenClaw can execute. They add capabilities beyond just chatting.

Built-in Skills

Some capabilities work immediately:

  • File management (organize folders, find files)
  • Web search (requires Brave API key)
  • Calendar and email (with proper authentication)
  • Running scripts and commands

Adding Skills

Browse community skills at the OpenClaw registry. Install with:

openclaw skill install skill-name

Creating Custom Skills

Skills are defined in ~/.openclaw/workspace/skills/. A skill is basically a prompt template with parameters:

# Research Skill

Research {topic} and provide:
- 3 key findings
- Relevant sources
- Next steps

You can also ask OpenClaw to create skills for you:

“Create a skill that checks my GitHub repos for new issues every morning.”

Custom Skill Folders

Load skills from a custom location:

{
  "skills": {
    "paths": ["~/.openclaw/workspace/skills", "~/my-custom-skills"]
  }
}

Coding Tool Skills (Claude Code, Codex, Gemini CLI)

One of OpenClaw’s most powerful skills lets it control AI coding tools directly. If you have Claude Code, OpenAI Codex CLI, or Gemini CLI installed on your server, OpenClaw can orchestrate them to build entire applications.

This means you can message OpenClaw from your phone:

“Use Claude Code to create a FastAPI app with user authentication and deploy it to my server.”

And OpenClaw will:

  1. Launch Claude Code (or Codex/Gemini CLI)
  2. Pass your requirements as prompts
  3. Monitor the coding session
  4. Report back when it’s done or if it hits issues

Setting it up:

Make sure your coding tool CLI is installed and authenticated on the server:

# For Claude Code
claude --version
claude login

# For Gemini CLI
gemini --version

# For OpenAI Codex
codex --version

Then tell OpenClaw what’s available:

“I have Claude Code installed. When I ask you to build something, use it to write the code.”

OpenClaw stores this in memory and uses the appropriate tool when you request coding tasks. This effectively turns your $20/month Claude subscription into an on-demand development team you can command from Telegram.

For more on these coding tools, see our AI coding tools comparison.

Scheduled Jobs and Reminders

OpenClaw can run cron jobs for scheduled stuff. This is where it stops being just a chatbot and starts actually automating things.

Setting Up Reminders

Simple reminders work out of the box:

“Remind me to check server logs every Monday at 9am.”

“In 3 hours, remind me to review the pull request.”

“Every Friday at 5pm, send me a summary of what I accomplished this week.”

OpenClaw stores these and proactively messages you at the scheduled time.

Cron-style Scheduling

For more complex schedules, OpenClaw supports cron expressions:

“Run a disk space check every day at midnight.”

“Every 6 hours, check if my website is responding and alert me if it’s down.”

Behind the scenes, OpenClaw uses the server’s cron system. You can view scheduled jobs:

openclaw cron list

Proactive Notifications

Unlike ChatGPT or Claude web, OpenClaw messages you first. Set up monitoring:

“Monitor my server’s CPU usage. If it goes above 80% for more than 5 minutes, message me.”

“Watch my inbox for emails from [client]. When one arrives, summarize it and send to me immediately.”

This “heartbeat” functionality runs periodic checks and surfaces relevant updates without you asking.

Example: Daily Standup Assistant

Here’s a practical automation I use:

“Every weekday at 8:30am:

  1. Check my calendar for today’s meetings
  2. Scan my email for urgent items
  3. Look at my GitHub notifications
  4. Send me a single message summarizing all of this”

One message in Telegram and I know exactly what needs attention before I open my laptop.

Enhancing OpenClaw with Agno and Python Scripts

This is where it gets fun. Agno is a Python framework for building AI agents. Pair it with uv for fast package management and you can build scripts that OpenClaw runs for you.

Why Agno + OpenClaw?

OpenClaw handles the messaging side. Agno handles the complex AI work — multi-agent setups, RAG pipelines, tool use. The flow goes:

  • You message OpenClaw on Telegram
  • OpenClaw runs your Agno script
  • Agno does the actual work — research, analysis, whatever
  • Results come back through OpenClaw

Setting Up the Environment

Install uv on your server (it’s much faster than pip):

curl -LsSf https://astral.sh/uv/install.sh | sh

Create a scripts directory for OpenClaw:

mkdir -p ~/openclaw-scripts
cd ~/openclaw-scripts
uv init
uv add agno openai duckduckgo-search

Example: Research Agent Script

Create a research agent that OpenClaw can invoke:

#!/usr/bin/env python3
# ~/openclaw-scripts/research_agent.py
# /// script
# requires-python = ">=3.11"
# dependencies = ["agno", "openai", "duckduckgo-search"]
# ///

import sys
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools

def research(topic: str) -> str:
    agent = Agent(
        model=OpenAIChat(id="gpt-4o"),
        tools=[DuckDuckGoTools()],
        instructions=[
            "You are a research assistant.",
            "Search the web for current information.",
            "Provide concise, factual summaries.",
        ],
        markdown=True,
    )
    
    response = agent.run(f"Research this topic and provide key findings: {topic}")
    return response.content

if __name__ == "__main__":
    topic = " ".join(sys.argv[1:]) if len(sys.argv) > 1 else "AI agents"
    print(research(topic))

Make it executable:

chmod +x ~/openclaw-scripts/research_agent.py

Connecting Scripts to OpenClaw

Tell OpenClaw about your scripts:

“I have a Python script at ~/openclaw-scripts/research_agent.py that does web research. When I ask you to research something complex, run it with uv like this: uv run ~/openclaw-scripts/research_agent.py [topic]

Now you can message:

“Research the latest developments in autonomous AI agents”

OpenClaw runs your Agno script, which spawns its own AI agent to do web searches, and returns the results.

Example: Multi-Agent Team

For complex tasks, create an Agno squad:

#!/usr/bin/env python3
# ~/openclaw-scripts/content_team.py
# /// script
# requires-python = ">=3.11"
# dependencies = ["agno", "openai", "duckduckgo-search"]
# ///

import sys
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.duckduckgo import DuckDuckGoTools

def create_content(topic: str) -> str:
    researcher = Agent(
        name="Researcher",
        model=OpenAIChat(id="gpt-4o"),
        tools=[DuckDuckGoTools()],
        instructions=["Research topics thoroughly", "Find current data and trends"],
    )
    
    writer = Agent(
        name="Writer", 
        model=OpenAIChat(id="gpt-4o"),
        instructions=["Write clear, engaging content", "Use the research provided"],
    )
    
    # Researcher gathers info
    research = researcher.run(f"Research: {topic}")
    
    # Writer creates content based on research
    article = writer.run(
        f"Write a blog post about {topic} using this research:\n\n{research.content}"
    )
    
    return article.content

if __name__ == "__main__":
    topic = " ".join(sys.argv[1:]) if len(sys.argv) > 1 else "AI trends"
    print(create_content(topic))

Message OpenClaw:

“Run the content team script for ‘best practices for Docker security’”

For more Agno examples, check out our Agno multi-agent guide and Agno with MCP tools.

Practical Script Ideas

Scripts you might build:

  • Market research bot: Agno agent that searches news, analyzes sentiment, summarizes findings
  • Code reviewer: Script that reads a GitHub PR and provides feedback
  • Meeting prep: Agent that researches attendees before a call
  • Competitor monitor: Daily check of competitor websites and social media
  • Content repurposer: Turn a blog post into social media threads

The pattern is always:

  1. Write an Agno script for the complex task
  2. Store it in your scripts directory
  3. Tell OpenClaw how to run it
  4. Trigger it via message or schedule

Commands Reference

Gateway Management

CommandDescription
openclaw statusCheck if everything is running
openclaw gateway startStart the gateway in foreground
openclaw gateway restartRestart the background service
openclaw gateway stopStop the service
openclaw logs --followView live logs
openclaw healthRun health checks

Chat Commands

Send these in your messaging app:

CommandDescription
/newStart a fresh conversation
/modelSwitch AI models
/compactCompress long conversations
/statusBot status info
/verbose onShow detailed responses
/verbose offHide internal messages
stop or abortCancel a running task

Configuration

CommandDescription
openclaw configureInteractive config editor
openclaw onboardRe-run setup wizard
openclaw resetReset to defaults
openclaw doctorDiagnose common issues

Practical Uses

Stuff that actually works:

Morning Briefings

“Every weekday at 7am, check my calendar and email, then send me a summary of what needs attention today.”

Research Tasks

“Research the top 5 competitors to [company]. Give me a one-page summary with strengths and weaknesses.”

File Management

“Organize my Downloads folder. Put PDFs in Documents/PDFs, images in Pictures, and delete anything older than 30 days.”

Code Assistance

“Review the latest commit in my repo and flag any security concerns.”

Reminders and Follow-ups

“Remind me to follow up with [person] about [topic] in 3 days.”

What Requires More Setup

These work but need custom skills or integrations:

  • Full email management with auto-responses
  • Trading alerts and market monitoring
  • Multi-platform social media posting
  • CRM integration

See our best AI coding tools article for tools that handle specific developer workflows.

Troubleshooting

Bot Not Responding

openclaw status --all
openclaw logs --follow

Usually one of these:

  • Gateway crashed or isn’t running
  • API key expired or got rotated
  • Channel token is wrong or expired

Pairing Code Required

Default security requires approving new senders:

openclaw pairing list telegram
openclaw pairing approve telegram <code>

Context Too Large

Long conversations hit token limits:

/compact

Or start fresh:

/new

SSH Connection Issues

If SSH asks for a password when you have a key:

ssh -i ~/.ssh/id_ed25519 root@YOUR_SERVER_IP

Need to Redo Setup

openclaw reset
openclaw onboard --install-daemon

Security Considerations

OpenClaw has access to your server. Some things to think about:

  • Use allowFrom to restrict who can message your bot
  • Create a separate email/GitHub for the bot if it needs account access
  • Review the sandbox settings if running on a machine with sensitive data
  • Keep API keys out of memory files and conversations
  • Monitor API usage — runaway tasks can burn through credits

The default pairing mode means unknown senders get a code instead of bot access. Don’t disable this unless you understand the implications.

What’s Next

Once you have OpenClaw running:

  1. Customize personality: Edit ~/.openclaw/workspace/SOUL.md to change how it communicates
  2. Add your context: Fill in ~/.openclaw/workspace/USER.md with your work and preferences
  3. Check all config options: See the AGENTS.default reference for the full list of settings
  4. Install useful skills: Browse the OpenClaw skill registry
  5. Add web search: Get a Brave API key for web browsing capability
  6. Connect more tools: GitHub, Google Drive, calendar integrations

The official docs have detailed setup guides for specific integrations.

Frequently Asked Questions

Do I need technical skills to set up OpenClaw?

Basic command line comfort helps. If you can SSH into a server and copy-paste commands, you can set it up. The wizard handles most complexity.

How much does it cost to run?

VPS: ~$5.50/month at Hetzner. API costs: $15-100/month depending on usage and model choice. Total: $20-110/month for most users.

Can multiple people use one OpenClaw?

Yes. Add multiple user IDs to allowFrom. Each person gets their own conversation context. For teams, Slack or Discord work better than individual Telegram bots.

Does it work on Windows?

Use WSL2 (Windows Subsystem for Linux). Native Windows support is untested and has compatibility issues.

Can I run it on a Raspberry Pi?

Yes, but it’s borderline. Pi 4/5 with 4GB+ RAM works. Expect slower performance and occasional memory issues with larger conversations.

What’s the difference between stable and beta?

Stable gets tested features. Beta gets new stuff first but may have bugs. For production use, stick with stable. To try new features: openclaw update --beta

OpenClaw isn’t magic. It’s a tool for running AI assistants that fit into how you already work. Setup is a bit of work, no doubt. But having an assistant that’s actually available 24/7 and does stuff — not just chats about doing stuff — has been worth the hassle for me.

Before exposing your instance to the internet or installing skills from ClawHub, read the OpenClaw security guide covering CVE-2026-25253 and the 40+ vulnerability fixes shipped in recent releases.

If you want to explore what else is out there, check out our OpenClaw alternatives roundup covering NanoClaw, nanobot, memU, and bitdoze-bot. For a detailed walkthrough of nanobot with MiniMax M2.5 and GLM-5, see our nanobot setup guide. If you’d rather run models locally instead of paying for APIs, see our OpenClaw with Ollama guide for hardware recommendations and configuration. Once OpenClaw is running, you might also want a proper UI for it — our best OpenClaw dashboards guide covers nine community-built options from full multi-agent orchestration to lightweight terminal monitors.