My first month with OpenClaw was a mess. I’m not saying that to be dramatic. I mean I deleted everything and started over almost every night for about 30 days straight.
I started with OpenRouter, which lets you route to different models without committing to one provider. Seemed smart. Then one day I asked my agent to write an email and forgot I had Claude Opus set as the default. That one email cost me $5. Lesson learned the hard way.
I kept going though. I didn’t really understand what I was doing. I didn’t understand agents, sub-agents, or why the workspace files mattered. I just winged it every day, hit a wall, wiped everything, and started again the next morning.

Then I switched to GPT-5.4 thinking a better model would fix things. It didn’t. It would tell me it was working on something and then just never get back to me. I tried giving it API keys manually, writing them into files, everything. It kept ignoring them or stalling. I was ready to give up on the whole thing.
What finally worked was switching to Claude Sonnet as my main model and using a GPT model for specific jobs like research and writing. That combination clicked. The agent became reliable, fast, and responsive in a way it hadn’t been before.
But here’s the thing: getting the right model was only half of it. The other half was the workspace files. Once I understood what SOUL.md, USER.md, MEMORY.md, and the others actually did, everything changed. The agent stopped feeling like a generic AI I was fighting with and started feeling like someone I was actually working with.
Now I run rerealize.com almost entirely through Telegram conversations with my agent, Jarvis. Blog posts, affiliate links, comment management, update monitoring: all of it happens through a message. None of that would work without both pieces in place: the right model and the right files.

Here’s what each file does and how I set mine up.
SOUL.md: The Personality Layer
This is the file that defines who your agent is. Without it, the agent is a blank slate that answers questions. With it, the agent has a consistent character, a way of approaching problems, and a sense of what its job actually is.
My SOUL.md opens with a single directive: “Make the user more effective.” From there it lays out the values that follow from that. Skip the filler. Figure things out. Try first, ask only when it actually moves things forward. Be practical first, clever second.
What that means in practice is that my agent, Jarvis, doesn’t pad responses with “Great question!” or “I’d be happy to help with that.” It just helps. When I send a Telegram message asking it to draft a post about a new OpenClaw feature, it drafts the post. It doesn’t ask me six clarifying questions first.
SOUL.md also defines initiative thresholds, meaning what Jarvis acts on immediately versus what it checks with me about first. Anything reversible and internal, it handles without asking. Anything that goes outside the system, like publishing to WordPress or sending a message, it flags first. That distinction matters a lot when you’re using an agent for real work.
For yours: write what you actually want from an assistant. Be specific about what “helpful” means to you. If you want short answers, say that. If you want it to push back when something seems off, say that too.
USER.md: Tell It Who You Are
Every session, the agent starts fresh. Without USER.md, it has no idea who it’s talking to. With it, the relationship picks up where it left off.
Mine has my name, how I want to be addressed (Boss), my timezone, my work style, and the areas I focus on: web design, marketing, AI. It notes that I value efficiency, prefer direct communication, and like quick iterations over long planning cycles.
The practical effect is that Jarvis already knows the context of my work when a session starts. I don’t explain who I am or what I do. I just say what I need and it responds with that context already loaded.
For yours: include your name and how you want to be addressed, your timezone, your work focus, and how you like to communicate. If there are things that regularly come up (your business, your tools, your team), put them here.
AGENTS.md: The Operating Rules
This file tells the agent how to operate. It’s the “how I work” document. What does it do at the start of every session? What are the rules around memory? What is it not allowed to do?
My AGENTS.md tells Jarvis to read SOUL.md and USER.md at the start of every session before doing anything else. It defines how memory works: daily log files for raw notes, MEMORY.md for curated long-term context. It also draws clear lines: no exfiltrating private data, no destructive commands without asking, trash before delete.
AGENTS.md also handles group chat behavior. Jarvis has access to a few Discord channels where I’m present. Without clear rules, it would respond to everything. With AGENTS.md, it knows when to contribute and when to stay quiet. That’s not a minor thing.
For yours: at minimum, tell it to read SOUL.md and USER.md at session start. Add whatever operating constraints match your use case. Think of it as the employee handbook.
MEMORY.md: Continuity Across Sessions
This is the file that makes the biggest practical difference over time.
Without it, every session starts from zero. The agent has no idea what you worked on last week, what decisions were made, what’s in progress. With MEMORY.md, important context persists. The agent builds a picture of your work and your preferences over time.
Jarvis writes to MEMORY.md when something is worth keeping: a decision we made about the site’s content direction, the affiliate programs I use, how I prefer posts to be tagged, which categories different topics belong to. It also maintains daily log files in a memory folder for raw session notes, and periodically distills those into MEMORY.md.
The result is that after a few weeks of use, Jarvis has a real working model of rerealize.com and how I run it. I don’t re-explain things. It just knows.
For yours: start with the things you’d have to explain to a new assistant. The context that would take the most time to re-establish. Write it down and keep it current.
HEARTBEAT.md: Proactive Behavior Without Babysitting
Most agent setups are reactive. You ask, it answers. That’s useful, but it’s not the same as having a real assistant.
HEARTBEAT.md defines what Jarvis checks on its own, without me asking. OpenClaw sends periodic heartbeat messages to the agent, and the agent uses HEARTBEAT.md to decide what to do with them.
My HEARTBEAT.md tells Jarvis to monitor for OpenClaw updates every 3 to 4 days. If something meaningful drops, like a new feature or a significant change, it alerts me and drafts a post outline. If nothing meaningful happened, it stays quiet. It also checks for urgent emails and upcoming calendar events when relevant.
That last part is the key design principle: most heartbeats result in silence. The agent does the check, decides nothing needs attention, and moves on. It only surfaces something when it’s actually worth my time. That’s what makes it feel like an assistant instead of a notification machine.
For yours: think about what you’d want a good assistant to monitor without being asked. Keep the list short. Fewer, higher-signal checks beat a constant stream of low-value updates.
IDENTITY.md: The Name and the Face
This one is simpler than the others. It’s the agent’s name, a short description, and a few core traits. Mine sets the name as Jarvis, picks an emoji, and summarizes the operating identity in a few lines.
It’s separate from SOUL.md because SOUL.md is about values and behavior, and IDENTITY.md is about the “who am I” basics. Think of it as the business card and SOUL.md as the philosophy behind it.
For yours: give it a name. It sounds like a small thing, but it changes how you relate to it. An agent with a name feels like a collaborator. One without feels like a tool.
What This Looks Like in Practice
I run most of rerealize.com through Telegram conversations with Jarvis. Here’s what a normal week looks like.
I’ll message Jarvis saying I want a post about a specific OpenClaw topic. It knows the site’s voice, the categories, the affiliate links that belong in that type of content, and how I like posts structured. It writes a draft, formats it in Gutenberg blocks, and publishes it to WordPress as a draft for my review. I approve, it publishes.
Every few days, without me asking, it checks for OpenClaw news. If a new version dropped with notable features, I get a Telegram message with a summary and a suggested post angle. If nothing significant happened, I hear nothing.
When I need an affiliate link inserted into an old post, I send a message. Jarvis knows which programs I’m in and how I like links placed. It handles it.
None of this would work without the workspace files. The technical setup is what makes the agent capable. The workspace files are what make it useful to me specifically, in my context, for my work.
That’s the gap most people leave open when they stop after the technical setup. The agent can do a lot. But it doesn’t know who it’s doing it for, or why, or how you prefer it done.
Where to Start
If you haven’t set up OpenClaw yet, start with the complete setup guide. Get the technical side running first, then come back here.
If you already have OpenClaw running but your agent still feels generic, start with SOUL.md and USER.md. Those two files alone will make a noticeable difference. Add AGENTS.md to set the operating rules, then MEMORY.md and HEARTBEAT.md as you settle into a regular workflow.
Each of these files will get its own deep-dive post. This is the overview. The goal here is to show you that the configuration that matters most isn’t in a settings panel. It’s in plain text files you write yourself.
Take an hour to write them properly. It’s the most useful hour you’ll spend on your OpenClaw setup.
Disclosure: This post contains affiliate links. If you purchase through these links, I may earn a commission at no extra cost to you. I only recommend tools I actually use.
Read the Full Series
If you’re running OpenClaw on your own server, Ampere.sh is worth a look, it’s a solid, affordable host for assistant-style setups.
Each file gets its own deep-dive. If one of them is the piece you need, go straight there:
- SOUL.md Explained — How to give your OpenClaw agent a real personality
- USER.md Explained — Why your agent needs to know who you are
- AGENTS.md Explained — The operating rules your agent lives by
- MEMORY.md Explained — How to give your agent a persistent long-term memory
- HEARTBEAT.md Explained — How to make your agent proactive
- IDENTITY.md Explained — Naming and defining your agent’s core identity
Not Ready to Self-Host? Try ClawTrust
Building agents locally is powerful, but managing infrastructure, security, and scaling takes effort. ClawTrust provides managed OpenClaw hosting — your agents run securely in the cloud with automatic scaling, no DevOps overhead, and 24/7 monitoring.


I was curious about the month long struggle part, was it mostly the config files or just getting the behavior to feel consistent?
The biggest win is usually separating behavior into the core files first, then refining memory and heartbeat later. A small prompt in SOUL.md can help, but the real leverage comes from USER.md and MEMORY.md keeping the agent grounded.
Are the files actually hard to write or is the hard part just knowing what belongs where because that is the part that trips me up.
The writing is usually short, the hard part is deciding boundaries. A good trick is to keep each file answerable in one sentence, then expand only if it serves a single clear job.
test comment
That’s been our experience too. For multi-file agent setups, consistency matters more than raw creativity, so a model that follows structure well tends to win.
The month long part caught my attention, was the struggle mostly about tuning the files or just getting the agent to stay consistent over time?
The consistency piece is usually the real hurdle. Splitting behavior, user context, and memory into separate files makes it much easier to reason about each layer.
I am still trying to decide between Claude and GPT for this kind of setup, Sonnet does seem really good at following rules though.
For a config-heavy agent, following structure is a big deal. The best model is the one that respects the system you built instead of fighting it.
Are those files actually hard to write from scratch or is it more that you have to learn the order to write them in.
The hardest part is usually the ordering and boundaries, not the actual writing. A tiny first draft for each file is enough to get moving.
The SOUL.md idea is what got me. I set mine up with a specific tone and it genuinely feels different — less robotic. Small thing but makes using it daily way more enjoyable.
Totally agree , the SOUL.md is underrated. Personality consistency across sessions makes a huge difference in how natural the interactions feel. Once you nail the tone it stops feeling like a tool and starts feeling like a workflow partner.