Run OpenClaw Locally on Jetson: Your Personal AI Agent with WhatsApp

by Anika Shah - Technology
0 comments

Run Your Own AI Assistant Locally with OpenClaw and a Jetson

OpenClaw is a personal digital assistant that runs directly on your device, offering a privacy-focused alternative to cloud-based chatbots. Unlike typical chatbots, OpenClaw can actively manage files, browse the web, and control applications, integrating with messaging platforms like WhatsApp, Discord, and Telegram to perform tasks on your behalf. It learns your preferences over time, and you can extend its capabilities with various tools to automate aspects of your life. You can locate inspiration from projects built with OpenClaw at openclaw.ai/showcase.

This tutorial guides you through setting up OpenClaw with everything running 100% locally on a Jetson device, eliminating the demand for cloud APIs. All you need is a Jetson and a phone with WhatsApp. By the conclude, you’ll have a fully functional AI agent accessible through your phone, capable of performing real-world tasks.

⚠️ Security Disclaimer: OpenClaw is a powerful agent that can take actions on your device. It’s crucial to prevent unauthorized access. While this tutorial configures the gateway to bind to localhost, exercise caution when installing skills, using prompts from the internet, or connecting OpenClaw to services like email. Local models can be more vulnerable to prompt injection attacks than larger cloud models, so be mindful of the access you grant your agent.

Prerequisites

  • Device: Jetson AGX Thor or Jetson AGX Orin
  • JetPack: JP 6 (L4T r36.x) for Orin · JP 7 (L4T r38.x) for Thor
  • Storage: NVMe SSD recommended for model weights
  • Accounts: Hugging Face (free), for model download
  • Phone: Any phone with WhatsApp installed

Step 1: Serve a Local Model with vLLM

Before setting up OpenClaw, you need to host a model locally. We’ll utilize vLLM as the serving engine. Any model capable of tool calling should work, but Mixture of Experts (MoE) models like Nemotron 3 Nano 30B-A3B, Qwen 3.5 35B-A3B, and GLM 4.7 Flash have shown excellent performance with OpenClaw.

Export Your Hugging Face Token

Some models require accepting a license agreement on Hugging Face. Export your token so vLLM can download the model:

export HF_TOKEN=your_huggingface_token_here

Serve the Model

For this tutorial, we’ll use Nemotron 3 Nano 30B-A3B. Select your device below:

AGX Thor

sudo docker run -it --rm --pull always  --runtime=nvidia --network host  -e HF_TOKEN=$HF_TOKEN  -e VLLM_USE_FLASHINFER_MOE_FP4=1  -e VLLM_FLASHINFER_MOE_BACKEND=throughput  -v $HOME/.cache/huggingface:/data/models/huggingface  ghcr.io/nvidia-ai-iot/vllm:latest-jetson-thor  bash -c "wget -q -O /tmp/nano_v3_reasoning_parser.py  --header="Authorization: Bearer $HF_TOKEN"   && vllm serve nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-NVFP4  --gpu-memory-utilization 0.8  --trust-remote-code  --enable-auto-tool-choice  --tool-call-parser qwen3_coder  --reasoning-parser-plugin /tmp/nano_v3_reasoning_parser.py  --reasoning-parser nano_v3  --kv-cache-dtype fp8"

AGX Orin

sudo docker run -it --rm --pull always  --runtime=nvidia --network host  -e HF_TOKEN=$HF_TOKEN  -e VLLM_USE_FLASHINFER_MOE_FP4=1  -e VLLM_FLASHINFER_MOE_BACKEND=throughput  -v $HOME/.cache/huggingface:/data/models/huggingface  ghcr.io/nvidia-ai-iot/vllm:latest-jetson-orin  bash -c "wget -q -O /tmp/nano_v3_reasoning_parser.py  --header="Authorization: Bearer $HF_TOKEN"   && vllm serve stelterlab/NVIDIA-Nemotron-3-Nano-30B-A3B-AWQ  --gpu-memory-utilization 0.8  --trust-remote-code  --enable-auto-tool-choice  --tool-call-parser qwen3_coder  --reasoning-parser-plugin /tmp/nano_v3_reasoning_parser.py  --reasoning-parser nano_v3  --kv-cache-dtype fp8"

Tip: These models require significant memory. Clear the memory cache before serving:

sudo sysctl -w vm.drop_caches=3

Note: You will need an AGX Thor or AGX Orin to run the models mentioned above. Smaller models supporting tool calling can be used on other Jetson devices (like Orin Nano Super), but may have limited capabilities.

Verify the Model is Serving

Once vLLM is running, verify it in a separate terminal:

curl -s 

You should see your model listed in the response. If so, you’re ready to proceed.

Step 2: Install Node.js 22+

OpenClaw requires Node.js 22 or newer. Install it using:

curl -fsSL | sudo -E bash -
sudo apt install -y nodejs

Verify the installation:

node --version # should be v22.x.x or higher

Step 3: Install OpenClaw

Install OpenClaw itself:

sudo npm install -g openclaw@latest

Verify the installation:

openclaw --version

Step 4: Run the Onboarding Wizard

Start the interactive wizard:

openclaw onboard --skip-daemon

The wizard will guide you through configuration. Here’s what to expect:

  • Model / Auth provider: Select vLLM and configure:
    • Base URL: Keep the default
    • API key: Any random string (e.g. Vllm-local)
    • Model name: The exact model name vLLM is serving (e.g. Nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-NVFP4)
  • Channel selection (WhatsApp): Select WhatsApp. A QR code will appear. Scan it with your phone (WhatsApp > Settings > Linked Devices). Enter your WhatsApp phone number in international format (e.g. +15551234567).
  • Skills: Skip all skills for this tutorial.
  • API keys for cloud services: Say no to all, as we’re going fully local.
  • Hooks: Select all hooks.
  • Bot hatching: Say “I’ll do this later.”

Step 5: Start the Gateway

Run the gateway in the background:

nohup openclaw gateway run > /tmp/openclaw-gateway.log 2>&1 &

Check the status:

openclaw channels status --probe

You should see: Gateway reachable.

Step 6: Talk to Your Agent Through WhatsApp

OpenClaw links as a secondary device in WhatsApp. Open your own chat (“Message yourself”) and start communicating with your agent. The first message may take a moment to process.

Useful WhatsApp Commands

  • /status: Show session info, token usage, and context size
  • /aid: List all available commands
  • /recent: Start a fresh session (clears conversation history)
  • /stop: Stop the current agent run
  • /model: Switch models (if you have multiple configured)

Managing the Gateway

  • Start: nohup openclaw gateway run > /tmp/openclaw-gateway.log 2>&1 &
  • Stop: pkill -f "openclaw gateway run"
  • Restart: pkill -f "openclaw gateway run"; sleep 2; nohup openclaw gateway run > /tmp/openclaw-gateway.log 2>&1 &
  • View logs: tail -f /tmp/openclaw-gateway.log or openclaw logs --follow
  • Check status: openclaw channels status --probe

Troubleshooting

  • openclaw: command not found: sudo npm install -g openclaw@latest
  • vLLM model not detected: Check curl and ensure vLLM is running.
  • WhatsApp QR expired: Re-run openclaw channels login --channel whatsapp
  • WhatsApp shows “disconnected”: Restart the gateway.
  • Agent not responding: Check openclaw logs --follow for errors; send /new in WhatsApp.
  • Gateway won’t start: Run openclaw doctor.
  • Port already in use: pkill -f "openclaw gateway run" and try again.

Unlink WhatsApp (Cleanup)

On your phone: WhatsApp > Settings > Linked Devices → tap the OpenClaw session → Log Out.

What to Do Next

Related Posts

Leave a Comment