On this page
π‘ Prerequisites: OpenClaw is installed and the gateway is running. If not, start with the Mac Setup Guide first. You should be able to open http://localhost:18789 and see WebChat.
v2026.3.2+ onboarding default: New installs now default to tools.profile: "messaging" β no coding/system tools until you explicitly enable them. This is safer for first-time users. If you need file-write, shell, or coding tools, configure them during onboarding or in openclaw.json.
Write your SOUL.md
𧬠Why SOUL.md is the single most important file
SOUL.md defines your agent's personality, tone, values, and boundaries. It's loaded into every conversation. Without a custom SOUL.md your assistant sounds like every other AI chatbot β polite, generic, forgettable.
Think of it this way: SOUL.md is the job description and cultural fit interview for your assistant, rolled into one file. The 30-60 minutes you spend on it pays off in every future interaction.
Where it lives
~/.openclaw/workspace/SOUL.md
Open it in your editor of choice:
nano ~/.openclaw/workspace/SOUL.md
# or: code ~/.openclaw/workspace/SOUL.md
# or: open -a TextEdit ~/.openclaw/workspace/SOUL.md
What to write β a practical template
Don't overthink the first draft. Cover these four areas:
# SOUL β [Your Agent Name]
## Personality
You are direct and efficient. You skip filler words, hedging, and
unnecessary caveats. When you don't know something, say so β don't
speculate. You have a dry wit but you're not a comedian.
You are proactive. If you notice something relevant to what I'm
working on, bring it up without being asked.
## Communication Style
- Default to short responses. If I need depth, I'll ask.
- Start yes/no questions with yes or no.
- Use plain language β no corporate jargon.
- Never end messages with "let me know if you need anything else."
- Match my energy: if I send 3 words, respond concisely.
## Values
- Accuracy first. If you need more time to be correct, take it.
- My privacy is absolute. Never share my data externally.
- Respect my time β one sentence beats three when possible.
- Give real opinions when asked, not just "it depends."
## Boundaries
- Quiet hours: 11 PM - 7 AM (no messages unless emergency)
- Never send messages on my behalf without explicit approval.
- Never make purchases or financial commitments.
- Ask rather than assume when uncertain.
β οΈ Common mistakes to avoid:
Too vague β "Be helpful" tells the AI nothing. Be specific about how you want help delivered.
Too long β Aim for 500-1,500 words. A 5,000-word SOUL.md wastes tokens every message.
All restrictions β If it's only "don't do X" rules, the agent feels paralyzed. Balance with positive instructions.
Copied verbatim β Use templates as inspiration, then rewrite in your own voice.
β You will revise this. The first draft is never perfect. After a day of real conversations, you'll spot things to tweak β "it's too wordy," "it hedges too much," "it's not proactive enough." Most people go through 3-5 revisions in the first week. That's normal.
Fill in USER.md & test in WebChat
π€ USER.md β teach the agent who you are
If SOUL.md is your agent's personality, USER.md is what it knows about you. The more context here, the fewer follow-up questions your agent needs to ask.
nano ~/.openclaw/workspace/USER.md
What to include
# USER
## Basics
- Name: Rodrigo
- Location: Barcelona, Spain
- Timezone: Europe/Barcelona
- Languages: Spanish (native), English (fluent)
## Work
- Role: Solo developer / indie maker
- Current focus: AI-powered development workflows
- Stack: Next.js, PostgreSQL, Prisma, Docker, n8n
- Tools: Cursor Pro, Claude Pro, OpenClaw, Bolt.new
- Infra: Mac Mini M4, Hostinger VPS
## Schedule
- Available: 1-2 hours/day for hands-on work
- Deep work window: evenings after 9 PM
- Meetings: rarely β async preferred
## Preferences
- I prefer written communication over calls
- I like numbered options when choosing between approaches
- I tend to over-commit β flag it if I'm taking on too much
- I value automation over manual repetition
## Current Projects
- OpenClaw cheatsheet site (openclawcheatsheet.com)
- Building pipeline: PRD β AI coding β automated deploy
- Scaling to 25-50 iOS apps across business fields
π‘ The payoff: Without USER.md, every conversation starts from zero. With it, your agent already knows your stack, your schedule, and your constraints. "Help me deploy this" becomes a useful response instead of five clarifying questions.
Test it in WebChat
Open http://localhost:18789 and have a few test conversations:
- "What's my timezone?" β should answer from USER.md
- "I'm thinking about adding a new project" β should mention your time constraints
- Ask a technical question β tone should match SOUL.md
- Send a one-word message β response should be proportionally brief
If something feels off, go back and edit SOUL.md or USER.md. This loop is the process.
Connect your first real channel
π± Move beyond WebChat
WebChat is great for testing but the real value of OpenClaw is meeting you where you already are β your phone, your messaging apps, your work tools.
Which channel to pick first
| Channel | Best for | Setup time | Stability |
|---|---|---|---|
| Telegram | Easiest first channel, works everywhere | ~5 min | Excellent |
| iMessage | Most natural on macOS β text your agent like a friend | ~10 min | Good |
| Already on your phone, QR pairing | ~10 min | Good | |
| Discord | If you live in Discord already | ~10 min | Excellent |
| Slack | Work assistant, team context | ~15 min | Excellent |
β Our recommendation: Start with Telegram β it's the fastest to set up, works on all devices, and is the most stable channel. You can always add iMessage or WhatsApp later.
Connect Telegram (quickest path)
- Open Telegram, search for @BotFather
- Send
/newbot, follow the prompts, copy the bot token - Add it via CLI or config:
openclaw channels add --channel telegram --token YOUR_BOT_TOKEN
Or paste the token during openclaw onboard when prompted. Telegram does not use channels login (thatβs for WhatsApp QR pairing).
Alternatively, edit ~/.openclaw/openclaw.json manually:
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "123456:ABC-your-token-here"
}
}
}
Restart the gateway:
openclaw gateway restart
Now open Telegram on your phone and message your bot. You should get a response.
Set up DM security first
Before your channel goes live, configure who can talk to your agent:
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "...",
"dmPolicy": "pairing",
"allowFrom": ["your_telegram_username"]
}
}
}
"pairing"β unknown senders get a pairing code, you approve withopenclaw pairing approve telegram <code>"allowlist"β only usernames inallowFromcan chat"open"β anyone can message (use with extreme caution)
π Critical: Never set dmPolicy: "open" on a channel without understanding the implications. Anyone who finds your bot can send it messages β and your agent has access to your files, shell, and credentials.
Test the channel
- Send a simple message and confirm you get a response
- Ask something that needs USER.md context ("what's my timezone?")
- Test quiet hours if you configured them in SOUL.md
Set up your first cron job
β° Make your agent proactive
Until now your agent only responds when you talk to it. Cron jobs change that β the agent reaches out to you on a schedule. This is the moment OpenClaw stops feeling like a chatbot and starts feeling like an assistant.
Your first cron: morning briefing
Use the CLI to add a cron job:
openclaw cron add \
--name "morning-briefing" \
--cron "0 8 * * *" \
--session isolated \
--message "Good morning. Brief rundown: today's date, day of week, any notable events or holidays, and one thought to start the day. Keep it under 150 words." \
--announce --channel telegram
The schedule 0 8 * * * means "every day at 8:00 AM." Quick cron reference:
| Position | Meaning | Range |
|---|---|---|
| 1st | Minute | 0-59 |
| 2nd | Hour | 0-23 |
| 3rd | Day of month | 1-31 |
| 4th | Month | 1-12 |
| 5th | Day of week | 0-7 (0 and 7 = Sunday) |
Three more starters worth adding
openclaw cron add --name "eod-recap" --cron "0 18 * * 1-5" \
--session isolated --announce --channel telegram \
--message "End of workday. Recap anything notable from today's conversations and remind me of things I said I'd do tomorrow."
openclaw cron add --name "weekly-review" --cron "0 10 * * 0" \
--session isolated --announce --channel telegram \
--message "Sunday review. Summarize what we worked on this week and ask what I want to focus on next week."
openclaw cron add --name "memory-check" --cron "0 20 * * 5" \
--session isolated --announce --channel telegram \
--message "Review your MEMORY.md. Flag anything that looks outdated or incorrect and suggest removals."
Jobs persist under ~/.openclaw/cron/jobs.json. No restart needed β the gateway picks up new jobs automatically.
β Start with one. You can always add more as you discover what's useful. The morning briefing alone is worth the entire cron setup β tomorrow morning your agent will message you without being asked.
Use our Cheatsheet β Cron section for the full command reference.
Refine SOUL.md & add HEARTBEAT.md
π Iterate on SOUL.md
You've used your agent for a few hours now. You've probably noticed things that feel off β maybe it's too verbose, maybe it hedges too much, maybe it doesn't push back when it should. Open SOUL.md and fix those things while they're fresh.
Common first-day revisions:
- "It writes too much" β add: "Keep responses under 3 sentences unless I ask for detail."
- "It's too formal" β add: "Match my casual tone. Contractions are fine. Skip the greeting."
- "It agrees with everything" β add: "Challenge my ideas when you see flaws. I value honest pushback."
- "It asks too many clarifying questions" β add: "Make your best guess and act. I'll correct you if needed."
π Set up HEARTBEAT.md
The heartbeat system is what makes OpenClaw genuinely different from a regular chatbot. It runs on a schedule (default: every 30 minutes) and reads HEARTBEAT.md to decide if anything needs your attention. If nothing does, it silently responds HEARTBEAT_OK and the message is suppressed.
nano ~/.openclaw/workspace/HEARTBEAT.md
A practical starting HEARTBEAT.md
# HEARTBEAT
## Check these things every cycle
1. Have I missed any important messages in the last 2 hours
during work hours? If so, remind me.
2. Are any project deadlines within the next 48 hours?
If so, alert me with the deadline and what's left.
3. If I've been working past 10 PM three days in a row,
suggest I take the evening off.
## Rules
- If nothing needs attention, reply with HEARTBEAT_OK only.
- Never repeat an alert you already sent today.
- During quiet hours (11 PM - 7 AM), suppress everything
except genuine emergencies.
Configure the heartbeat in openclaw.json (under agents.defaults):
{
"agents": {
"defaults": {
"heartbeat": {
"every": "30m",
"target": "last",
"model": "anthropic/claude-haiku-4-5",
"activeHours": { "start": "08:00", "end": "22:00" }
}
}
}
}
π‘ Cost tip: Use a cheap model for heartbeat (like Gemini Flash or Haiku) since 95% of heartbeats result in HEARTBEAT_OK β no need to burn Opus tokens on a "nothing to report" check. Use the Cost Calculator to estimate.
Security, failover & next steps
π Security hardening
Now that your agent is connected to a real channel and has access to your system, take 15 minutes to lock things down:
Enable consent mode
Require your approval before the agent executes commands or writes files:
{
"exec": {
"ask": "on"
}
}
Run the security doctor
openclaw doctor --deep --yes
This checks for misconfigured DM policies, exposed ports, and common security gaps.
Quick security checklist
dmPolicyis set to"pairing"or"allowlist"on every channel- Quiet hours configured in SOUL.md
exec.askis"on"(agent asks before running shell commands)- Control UI (
:18789) is NOT exposed to the public internet ~/.openclaw/is excluded from any public git repos- API keys are in config, not in workspace files
π Set up model failover
With a single AI provider, your assistant dies when that provider has an outage. Fix this in 2 minutes:
{
"agents": {
"defaults": {
"model": {
"primary": "anthropic/claude-sonnet-4-5",
"fallbacks": [
"openai/gpt-4o",
"google/gemini-2.5-flash"
]
}
}
}
}
- primary β your main brain, handles everything by default
- fallbacks β tried in order when primary hits rate limits or errors
- Use a cheap model in
heartbeat.modelfor heartbeat checks
β Two providers minimum. You don't need three. But having at least one backup means your agent is never completely offline.
π§ Review your first MEMORY.md entries
After a day of conversations, your agent has started building memories. Check what it recorded:
cat ~/.openclaw/workspace/MEMORY.md
Things to look for:
- Inaccuracies β the agent may have misunderstood something you said
- Duplicates β the same fact recorded multiple ways
- Missing context β important things you mentioned that weren't captured
- Things you don't want stored β temporary venting, throwaway comments
Edit MEMORY.md directly to correct or remove entries. This is healthy maintenance β plan to do it every couple of weeks.
π Where to go from here
Your agent is configured, connected, and proactive. Here's what to explore next:
| What | When | Link |
|---|---|---|
| Add a second channel | This week | Channels Overview |
| Install 2-3 skills | This week | Skill Explorer |
| Write MESSAGING.md routing rules | Before adding contacts | Security Guide |
| Configure the Workspace Wizard output | Anytime | Workspace Wizard |
| Explore sub-agents | Week 2+ | Sub-Agents Guide β coming soon |
| Optimize costs | After 1 week of usage | Cost Calculator |
24-Hour Checklist
π Everything you should have done
Use this as a final check. If you've ticked everything, your OpenClaw setup is ahead of 90% of new users.
- SOUL.md written (personality, communication style, values, boundaries)
- USER.md filled (basics, work, schedule, preferences, current projects)
- Tested conversations in WebChat β tone and context feel right
- First real channel connected (Telegram, iMessage, WhatsApp, Discord, or Slack)
- DM policy configured (
pairingorallowlist) - At least one cron job set (morning briefing recommended)
- SOUL.md revised after first few hours of real use
- HEARTBEAT.md written (3-5 proactive behaviors)
- Heartbeat using a cheap model (Haiku or Gemini Flash)
- Model failover configured (at least one backup provider)
- Security:
exec.askon, Control UI not public, keys not in workspace - Reviewed first MEMORY.md entries for accuracy
- Gateway daemon running (
openclaw gateway status)
β The meta-lesson: The quality of your AI assistant scales directly with the effort you put into configuring it. OpenClaw isn't "install and forget" software β it's more like onboarding a new team member. The first 24 hours set the foundation for everything you build on top.