OpenClaw Hands-on Practice

This chapter ties everything together with one complete example: from install to a self-running Telegram personal assistant.


Goal

Build an OpenClaw assistant that:

  1. Chats and runs tasks normally in the Dashboard
  2. Connects to Telegram for remote control
  3. Uses Heartbeat to proactively push to-dos and an email summary at 8 AM daily
  4. Has tool-policy approval enabled and stays securely updated

Step 1: Install (Node 22+)

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

Confirm Node is 22+. After installing, do a security update check to ensure the version is ≥ 2026.1.29 (see Security).


Step 2: Initialize & Dashboard

openclaw onboard --install-daemon   # onboard + install daemon
openclaw gateway status             # confirm the gateway runs
openclaw dashboard                  # open the console

Open http://127.0.0.1:18789/ in the browser and try:

Hi, tell me which tools you can use right now.

Step 3: Configure the Model

Set the provider and model during onboarding or in openclaw.json, and configure a fallback chain:

{
  "model": {
    "primary": "anthropic:claude-...",
    "fallback": ["openai:gpt-..."]
  }
}

Put keys in environment variables:

ANTHROPIC_API_KEY=sk-ant-...

Step 4: Tighten Tool Policies (Security First)

In openclaw.json, set tool policies as tight as possible:

  • Reads pass automatically
  • Sends / deletes / writes / shell writes all require approval

Verify the policy on a low-risk task in the Dashboard first:

Create notes/README.md in the workspace with a one-line description.

Observe whether it requests approval before writing the file.


Step 5: Connect Telegram

Create a bot via @BotFather to get a token, connect the Telegram channel in onboarding/Dashboard, and put the token in an environment variable:

TELEGRAM_BOT_TOKEN=123456:ABC-...

Set a user allowlist so only your account can command it.

Message the bot on Telegram to confirm connectivity:

Hi, confirm you can receive my messages?

Step 6: A Daily Brief via Heartbeat

Create/edit HEARTBEAT.md in the workspace:

# Check on each heartbeat
- Is it 8:00 AM now?
  Yes → summarize today's calendar + important unread email (≤5 items), send to my Telegram
- Any new email marked urgent? If so, remind me immediately
# If nothing needs action, respond HEARTBEAT_OK

Confirm Heartbeat is enabled (wakes roughly every 30 minutes by default). Now the assistant reports on time without you asking.


Step 7: Distill into a Skill

Solidify the multi-step flow into a reusable SKILL.md:

---
name: daily-brief
description: Summarize calendar and unread email, push to Telegram
---
1. Read today's calendar
2. Summarize important unread email (≤5)
3. Generate bullets and send to Telegram

Then let the heartbeat or you invoke it manually.


Step 8: Back Up Memory with Git

cd ~/.openclaw
git init && git add . && git commit -m "snapshot"   # exclude secrets

Verification Checklist

[ ] Dashboard chat works, tools available
[ ] Version ≥ 2026.1.29, port bound to 127.0.0.1 only
[ ] Model configured with a fallback chain
[ ] Tool policies tightened: writes trigger approval
[ ] Telegram connected, user allowlist set
[ ] HEARTBEAT.md live, pushes daily at 8 AM
[ ] Flow distilled into the daily-brief skill
[ ] ~/.openclaw backed up with Git (no secrets)

Going Further

  • Add a Webhook: real-time alerts on CI failure
  • Add a browser skill: auto-scrape and organize material
  • Create a second workspace dedicated to DevOps, with its own HEARTBEAT.md
  • Need stronger vector memory / self-improvement? Migrate to the sibling Hermes Agent

Next Steps