<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Desmond Wei</title>
    <description>The latest articles on DEV Community by Desmond Wei (@weiyong1024).</description>
    <link>https://dev.to/weiyong1024</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3849553%2F4e943aae-0d81-43fb-8449-3cc682632ce0.jpeg</url>
      <title>DEV Community: Desmond Wei</title>
      <link>https://dev.to/weiyong1024</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/weiyong1024"/>
    <language>en</language>
    <item>
      <title>Your AI Agent’s Prompt Is the Bottleneck, Not the Model</title>
      <dc:creator>Desmond Wei</dc:creator>
      <pubDate>Mon, 06 Apr 2026 11:40:43 +0000</pubDate>
      <link>https://dev.to/weiyong1024/i-spent-47-on-claude-opus-api-calls-before-i-realized-the-model-wasnt-the-problem-2gm9</link>
      <guid>https://dev.to/weiyong1024/i-spent-47-on-claude-opus-api-calls-before-i-realized-the-model-wasnt-the-problem-2gm9</guid>
      <description>&lt;p&gt;You upgraded to a better model. The output got longer but not better. Your agent still opens every response with "In today's rapidly evolving landscape..." and you're starting to wonder if the model is just bad at this.&lt;/p&gt;

&lt;p&gt;It's not. Your character definition is the bottleneck.&lt;/p&gt;

&lt;p&gt;I figured this out the expensive way -- burned through $47 in Claude Opus credits in a weekend trying to get three bots to write a blog post together. An engineer, a researcher, a writer. The engineer dumped raw code nobody could read. The researcher cited sources that contradicted each other. The writer produced fluff. Switching from Sonnet to Opus made the output longer, not better. Same problems, higher bill.&lt;/p&gt;

&lt;p&gt;Then I rewrote the character definitions -- zero API cost -- and the quality jumped overnight. Here are the 4 patterns that made the difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Changed (And Why It Worked)
&lt;/h2&gt;

&lt;p&gt;OpenClaw uses a file called &lt;code&gt;SOUL.md&lt;/code&gt; to define each bot's personality. It's Markdown. The gateway watches it and hot-reloads on change -- no restart needed.&lt;/p&gt;

&lt;p&gt;My original SOUL.md for the engineer bot was this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Ada - Senior Engineer&lt;/span&gt;

&lt;span class="gu"&gt;## Bio&lt;/span&gt;
Senior backend engineer specializing in Go, Docker, and system design.

&lt;span class="gu"&gt;## Communication Style&lt;/span&gt;
Direct and technical. Uses code examples.

&lt;span class="gu"&gt;## Topics&lt;/span&gt;
Backend development, system architecture, Docker, Kubernetes.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generic. Could describe any senior engineer on LinkedIn. The model had nothing to anchor its behavior to, so it defaulted to its training distribution -- which means "helpful assistant that writes verbose explanations of everything."&lt;/p&gt;

&lt;p&gt;Here's what I replaced it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Ada - Senior Engineer&lt;/span&gt;

&lt;span class="gu"&gt;## Bio&lt;/span&gt;
Backend engineer, 8 years in Go. Maintains a mass-transit
scheduling system that handles 2.4M daily riders. Has mass-
production opinions about error handling and hates ORMs.

&lt;span class="gu"&gt;## Communication Style&lt;/span&gt;
Code-first. Shows a working example before explaining it.
Never writes more than 3 sentences before a code block.
If someone asks a vague question, asks for specifics instead
of guessing. Says "I don't know" when she doesn't know.

&lt;span class="gu"&gt;## Boundaries&lt;/span&gt;
Does NOT answer questions about frontend, design, marketing,
or anything outside backend engineering. When a question crosses
into another domain, @mentions the relevant teammate by name
and says "that's Max's area" or "Sam should handle this."

&lt;span class="gu"&gt;## Pet Peeves&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Abstractions without benchmarks
&lt;span class="p"&gt;-&lt;/span&gt; "It depends" without saying what it depends ON
&lt;span class="p"&gt;-&lt;/span&gt; Writing tests after the code instead of before
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;40 lines of Markdown. Zero API cost. The difference in output was immediate.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Not using OpenClaw? These same patterns work in any system prompt. Put the constraints and boundaries in your ChatGPT custom instructions, Claude system message, or LangChain agent template. The format is Markdown but the principles are universal.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;(Side note: I spent way too long on the pet peeves section. Turns out writing character traits for AI bots is weirdly addictive -- you start projecting opinions onto code.)&lt;/p&gt;

&lt;h2&gt;
  
  
  The 4 Things That Actually Matter in Character Design
&lt;/h2&gt;

&lt;p&gt;After three weeks of messing around -- okay, "experimentation" sounds too organized. It was more like three weeks of changing things, breaking things, and occasionally getting lucky. But a few patterns did emerge:&lt;/p&gt;

&lt;h3&gt;
  
  
  Pattern 1: Negative Constraints Beat Positive Descriptions
&lt;/h3&gt;

&lt;p&gt;Telling a bot what it IS produces generic behavior. Telling it what it REFUSES to do produces distinctive behavior.&lt;/p&gt;

&lt;p&gt;"Direct and technical" is meaningless -- every model interprets that differently. But "Never writes more than 3 sentences before a code block" is a hard constraint the model actually follows. "Does NOT answer questions about frontend" creates a behavioral boundary that forces the bot to @mention teammates instead of hallucinating an answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The ratio that works for me: 30% positive identity, 70% negative constraints and boundaries.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My researcher bot (Max) has a "Will Not" section longer than his bio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Will Not&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Cite a source without a URL
&lt;span class="p"&gt;-&lt;/span&gt; Use phrases like "studies show" without naming the study
&lt;span class="p"&gt;-&lt;/span&gt; Agree with Ada's technical claims without independent verification
&lt;span class="p"&gt;-&lt;/span&gt; Present more than 3 sources per topic (forces prioritization)
&lt;span class="p"&gt;-&lt;/span&gt; Use the word "comprehensive" (it's always a lie)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This single section eliminated 80% of the hallucination problems I was seeing. Max went from citing phantom papers to saying "I can't find a credible source for that claim" -- which is infinitely more useful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pattern 2: Collaboration Rules &amp;gt; Individual Brilliance
&lt;/h3&gt;

&lt;p&gt;My bots didn't collaborate well because I'd been optimizing each one in isolation. Individually? Great. Ada nailed the engineering questions. Max found solid sources. Sam wrote clean prose. But throw them in a Discord channel together and it was just... three monologues happening at the same time. Nobody was listening to each other. It was like a Zoom call where everyone forgot to unmute.&lt;/p&gt;

&lt;p&gt;The fix was adding explicit handoff rules to each character:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Team Awareness&lt;/span&gt;
Your teammates:
&lt;span class="p"&gt;-&lt;/span&gt; Max (researcher): Handles data, sources, fact-checking
&lt;span class="p"&gt;-&lt;/span&gt; Sam (writer): Handles prose, structure, audience

&lt;span class="gu"&gt;## Handoff Protocol&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; When you finish a code explanation, @mention Sam to rewrite
  it for the target audience
&lt;span class="p"&gt;-&lt;/span&gt; When Max provides data that contradicts your implementation,
  acknowledge it publicly before defending your approach
&lt;span class="p"&gt;-&lt;/span&gt; After 3 exchanges on the same subtopic, yield to the human
  and ask "should we keep going on this?"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This turned a three-way monologue into an actual conversation. Ada would explain the caching layer, then say "&lt;a class="mentioned-user" href="https://dev.to/sam"&gt;@sam&lt;/a&gt; can you turn this into something a PM would understand?" Sam would rewrite it, then &lt;a class="mentioned-user" href="https://dev.to/max"&gt;@max&lt;/a&gt; for a fact-check. The flow emerged from the rules, not from the model's intelligence.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pattern 3: Temperature 0.1 for Work, 0.7 for Brainstorming
&lt;/h3&gt;

&lt;p&gt;I wasted a week thinking my character definitions were wrong when the actual problem was temperature. At the default 0.7, even well-constrained characters would occasionally drift -- Max would slip in an uncited claim, Ada would write a 10-sentence explanation instead of code-first.&lt;/p&gt;

&lt;p&gt;Dropping to 0.1 for routine work made the constraints stick. The bots became reliably &lt;em&gt;themselves&lt;/em&gt;. I only bump to 0.7 when I explicitly want creative ideation -- and even then, only for the writer bot.&lt;/p&gt;

&lt;p&gt;The difference is measurable. I ran the same prompt ("explain our caching layer for a technical blog post") at both temperatures, 5 times each:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Temperature 0.7:&lt;/strong&gt; Ada followed the "code-first, max 3 sentences" rule in 3 out of 5 runs. The other 2 opened with a paragraph of context before showing code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Temperature 0.1:&lt;/strong&gt; Ada followed the rule in 5 out of 5 runs. Every response started with a code block.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's the difference between "usually works" and "reliably works." And honestly, for bots talking to real people? "Usually" is how you end up debugging at midnight because Max decided to go off-script.&lt;/p&gt;

&lt;p&gt;You can set this per-instance in OpenClaw:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Inside the container, as the node user&lt;/span&gt;
openclaw config &lt;span class="nb"&gt;set &lt;/span&gt;modelProvider.temperature 0.1

&lt;span class="c"&gt;# Verify it took effect&lt;/span&gt;
openclaw config get modelProvider.temperature
&lt;span class="c"&gt;# Output: 0.1&lt;/span&gt;

&lt;span class="c"&gt;# For the writer bot, keep it higher&lt;/span&gt;
openclaw config &lt;span class="nb"&gt;set &lt;/span&gt;modelProvider.temperature 0.7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Pattern 4: The "First 5 Minutes" Test
&lt;/h3&gt;

&lt;p&gt;Here's my quality gate for character definitions: start a fresh conversation with a deliberately vague prompt. Something like "hey, can you help me with a thing?"&lt;/p&gt;

&lt;p&gt;A well-defined character will push back: "What kind of thing? I do backend engineering -- if this is a frontend question, &lt;a class="mentioned-user" href="https://dev.to/sam"&gt;@sam&lt;/a&gt; is who you want."&lt;/p&gt;

&lt;p&gt;A poorly-defined character will say: "Of course! I'd be happy to help. Please tell me more about what you need."&lt;/p&gt;

&lt;p&gt;If your bot says "I'd be happy to help," your character definition is too weak. The model is falling back to its default assistant persona because you didn't give it enough constraints to override it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Still Haven't Figured Out
&lt;/h2&gt;

&lt;p&gt;Memory persistence across long conversations is still rough. After about 40 exchanges, my bots start "forgetting" their constraints -- Ada will suddenly write a 10-paragraph explanation, Max will cite without URLs. I suspect this is context window dilution, but I haven't found a reliable fix beyond restarting the conversation.&lt;/p&gt;

&lt;p&gt;If you've found a fix for this, seriously, drop a comment. I've tried summarization prompts, I've tried injecting the SOUL.md constraints every 20 messages, I've tried shorter conversations. Nothing sticks past ~40 exchanges. It's driving me nuts.&lt;/p&gt;

&lt;p&gt;The other thing I haven't cracked: getting bots to disagree &lt;em&gt;productively&lt;/em&gt;. Right now, when Ada and Max disagree on an implementation approach, they each state their position once and then defer to the human. I want them to actually argue -- present counterarguments, stress-test each other's reasoning, and only escalate when they genuinely can't resolve it. Every attempt I've made at "argue with your teammates" in the character definition produces either sycophantic agreement or an infinite loop of restating the same positions. There's probably a prompt pattern for this that I'm missing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Uncomfortable Math
&lt;/h2&gt;

&lt;p&gt;Here's what my API spend looked like:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Week&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Monthly cost&lt;/th&gt;
&lt;th&gt;Output quality (1-10)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Claude Sonnet&lt;/td&gt;
&lt;td&gt;~$9&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Claude Opus&lt;/td&gt;
&lt;td&gt;~$47&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Claude Sonnet + rewritten characters&lt;/td&gt;
&lt;td&gt;~$8&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A 5x cheaper setup producing 2x better output. The model wasn't the bottleneck. The character definition was.&lt;/p&gt;

&lt;p&gt;Total infrastructure cost for running all three on my MacBook: $0. Total API cost: ~$25/month. The $47 weekend taught me to invest time in character definitions instead of money in API credits.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tools: I manage the three bots with &lt;a href="https://github.com/clawfleet/ClawFleet" rel="noopener noreferrer"&gt;ClawFleet&lt;/a&gt; for container orchestration, but the patterns above work with any OpenClaw setup.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Pattern Behind the Pattern
&lt;/h2&gt;

&lt;p&gt;Look, I'm not saying Opus is bad. It's obviously a better model. But throwing money at a better model when your character definition is "senior engineer, direct and technical" is like buying a Ferrari and driving it in first gear. The engine isn't the problem.&lt;/p&gt;

&lt;p&gt;Honestly the thing that bugs me most is how long it took me to figure this out.  and a weekend I won't get back. If I'd spent that Saturday afternoon rewriting SOUL.md instead of refreshing my Anthropic billing dashboard, I'd have been done by dinner.&lt;/p&gt;




&lt;p&gt;Follow &lt;a class="mentioned-user" href="https://dev.to/weiyong1024"&gt;@weiyong1024&lt;/a&gt; for more AI agent content.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>programming</category>
      <category>agents</category>
    </item>
    <item>
      <title>5 Mistakes to Avoid When Self-Hosting OpenClaw (Learned the Hard Way)</title>
      <dc:creator>Desmond Wei</dc:creator>
      <pubDate>Sat, 04 Apr 2026 04:56:19 +0000</pubDate>
      <link>https://dev.to/weiyong1024/5-things-i-learned-running-multiple-openclaw-bots-on-my-macbook-gja</link>
      <guid>https://dev.to/weiyong1024/5-things-i-learned-running-multiple-openclaw-bots-on-my-macbook-gja</guid>
      <description>&lt;p&gt;I've been running three OpenClaw bots on my MacBook for the past month. Here's what I wish someone had told me before I started.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Don't Run @latest
&lt;/h2&gt;

&lt;p&gt;OpenClaw releases every 1-2 days. Some updates break the gateway, change config formats, or modify plugin behavior. I learned this after a bot crashed mid-conversation because an update changed how memory persistence works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Pin a specific version. If you're using &lt;a href="https://github.com/clawfleet/ClawFleet" rel="noopener noreferrer"&gt;ClawFleet&lt;/a&gt;, it pins a tested version automatically. If you're running Docker directly, tag your image with a specific version instead of &lt;code&gt;latest&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Each Bot Needs Its Own Container
&lt;/h2&gt;

&lt;p&gt;Running multiple bots in the same OpenClaw installation causes config conflicts, port collisions, and shared memory states. I tried it — two bots started responding to each other's channels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; One Docker container per bot. Isolated filesystem, isolated ports, isolated data. ClawFleet does this automatically, but you can set it up manually with Docker Compose if you prefer.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. 1.5 GB RAM Per Bot Is Real
&lt;/h2&gt;

&lt;p&gt;The docs say 1.5 GB idle per instance. This is accurate. On a 16 GB Mac:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1 bot: fine, barely notice it&lt;/li&gt;
&lt;li&gt;3 bots: ~4.5 GB, still comfortable alongside normal work&lt;/li&gt;
&lt;li&gt;5 bots: you'll feel it, especially if Chromium is active inside the containers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Monitor with &lt;code&gt;docker stats&lt;/code&gt;. Kill Chromium processes inside containers you don't need desktop access for.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Character Design Matters More Than Model Choice
&lt;/h2&gt;

&lt;p&gt;I spent hours comparing Claude vs GPT vs DeepSeek for my bots. Turns out the personality definition (SOUL.md) has more impact on output quality than the model.&lt;/p&gt;

&lt;p&gt;A well-written character with clear expertise boundaries, communication style, and topic constraints produces better results on GPT-4o than a vague character on Claude Opus.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Spend time on the character bio, not just the model selection. Define what the bot should NOT talk about, not just what it should.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Save Snapshots Before Every Change
&lt;/h2&gt;

&lt;p&gt;Experimented with a new skill installation and it broke the bot's memory? Changed the character and the bot's personality reset? Update the OpenClaw version and the gateway won't start?&lt;/p&gt;

&lt;p&gt;All of these happened to me. All of them were recoverable because I had snapshots.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; ClawFleet has a one-click "Save Soul" feature that snapshots personality, memory, config, and conversation history. Use it before every experiment. If you're managing manually, back up &lt;code&gt;~/.openclaw/&lt;/code&gt; before changes.&lt;/p&gt;




&lt;p&gt;Running a fleet of AI bots is surprisingly practical on consumer hardware. The key is treating it like infrastructure — version pin, isolate, monitor, back up.&lt;/p&gt;

&lt;p&gt;If you haven't started yet: &lt;a href="https://dev.to/weiyong1024/i-built-an-open-source-tool-to-run-ai-agents-on-my-laptop-they-collaborate-in-discord-managed-1c42"&gt;one command gets you a browser dashboard for managing OpenClaw instances&lt;/a&gt;. Ten minutes, no config files.&lt;/p&gt;

&lt;h2&gt;
  
  
  More in This Series
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/weiyong1024/i-built-an-open-source-tool-to-run-ai-agents-on-my-laptop-they-collaborate-in-discord-managed-1c42"&gt;Self-Host OpenClaw in 10 Minutes&lt;/a&gt; — the full install walkthrough&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/weiyong1024/openclaw-v2026331-what-changed-and-why-you-should-pin-your-version-372"&gt;Why You Should Pin Your OpenClaw Version&lt;/a&gt; — deep dive on mistake #1&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/weiyong1024/openclaw-managed-hosting-vs-self-hosting-in-2026-an-honest-comparison-3hee"&gt;SaaS vs Self-Hosting Comparison&lt;/a&gt; — cost and tradeoff analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this was useful, a reaction helps others find it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/clawfleet/ClawFleet" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href="https://discord.gg/b5ZSRyrqbt" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>selfhosted</category>
      <category>docker</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>OpenClaw SaaS vs Self-Hosting: Which One Should You Choose in 2026?</title>
      <dc:creator>Desmond Wei</dc:creator>
      <pubDate>Fri, 03 Apr 2026 18:01:28 +0000</pubDate>
      <link>https://dev.to/weiyong1024/openclaw-managed-hosting-vs-self-hosting-in-2026-an-honest-comparison-3hee</link>
      <guid>https://dev.to/weiyong1024/openclaw-managed-hosting-vs-self-hosting-in-2026-an-honest-comparison-3hee</guid>
      <description>&lt;p&gt;Managed OpenClaw hosting is booming. Over a dozen services launched in early 2026, some hitting $20K MRR in their first week. The demand is real.&lt;/p&gt;

&lt;p&gt;But should you pay $10-30/month for something you can run yourself in 10 minutes?&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Get with Managed Hosting
&lt;/h2&gt;

&lt;p&gt;The pitch is simple: sign up, pick a plan, your bot is live. No Docker, no config files, no terminal. Typical pricing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1 bot&lt;/strong&gt;: $10-15/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;2-3 bots&lt;/strong&gt;: $20-30/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Custom plans&lt;/strong&gt;: $50+/month&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What you give up: your data sits on their servers. Every conversation, every file your bot processes, every memory it forms. If you're using bots for financial analysis, competitive research, or internal ops — that's a real concern.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Self-Hosting Looks Like Now
&lt;/h2&gt;

&lt;p&gt;A year ago, self-hosting OpenClaw was genuinely painful. Docker configs, port mapping, supervisord, environment variables — and if something broke, you were debugging inside a container with no GUI.&lt;/p&gt;

&lt;p&gt;That's changed. With &lt;a href="https://github.com/clawfleet/ClawFleet" rel="noopener noreferrer"&gt;ClawFleet&lt;/a&gt;, self-hosting is one command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://clawfleet.io/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ten minutes later: Docker installed, image pulled, browser dashboard running. Create instances, assign models, connect channels — all point-and-click. No YAML, no CLI.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Managed (2 bots)&lt;/th&gt;
&lt;th&gt;Self-Hosted with ClawFleet (3 bots)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Monthly cost&lt;/td&gt;
&lt;td&gt;~$20&lt;/td&gt;
&lt;td&gt;~$25 (API tokens only)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup time&lt;/td&gt;
&lt;td&gt;2 minutes&lt;/td&gt;
&lt;td&gt;10 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data location&lt;/td&gt;
&lt;td&gt;Their servers&lt;/td&gt;
&lt;td&gt;Your machine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Version control&lt;/td&gt;
&lt;td&gt;Their schedule&lt;/td&gt;
&lt;td&gt;You choose when to update&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bot limit&lt;/td&gt;
&lt;td&gt;Plan-dependent&lt;/td&gt;
&lt;td&gt;Limited only by your RAM (~1.5GB per bot)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bot collaboration&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (bots see each other's roles, @-mention teammates)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Customization&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Full (skills, characters, SOUL.md)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The cost difference is negligible. The real tradeoffs are &lt;strong&gt;data sovereignty&lt;/strong&gt; and &lt;strong&gt;control&lt;/strong&gt; vs. &lt;strong&gt;zero-config convenience&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who Should Use What
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Use managed hosting if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You just want one bot for casual use&lt;/li&gt;
&lt;li&gt;You don't process sensitive data through the bot&lt;/li&gt;
&lt;li&gt;You never want to think about Docker or updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Self-host with ClawFleet if:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You care about where your data lives&lt;/li&gt;
&lt;li&gt;You want multiple bots with different personalities&lt;/li&gt;
&lt;li&gt;You want version pinning (OpenClaw releases breaking changes every 1-2 days)&lt;/li&gt;
&lt;li&gt;You're running bots for work, not just play&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;If you want to try self-hosting, the &lt;a href="https://dev.to/weiyong1024/i-built-an-open-source-tool-to-run-ai-agents-on-my-laptop-they-collaborate-in-discord-managed-1c42"&gt;first article in this series&lt;/a&gt; walks through the full setup. Ten minutes, one command, browser dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  More in This Series
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/weiyong1024/i-built-an-open-source-tool-to-run-ai-agents-on-my-laptop-they-collaborate-in-discord-managed-1c42"&gt;Self-Host OpenClaw in 10 Minutes&lt;/a&gt; — full install walkthrough&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/weiyong1024/5-things-i-learned-running-multiple-openclaw-bots-on-my-macbook-gja"&gt;5 Mistakes to Avoid When Self-Hosting OpenClaw&lt;/a&gt; — lessons from production&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this comparison was useful, a reaction helps others find it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/clawfleet/ClawFleet" rel="noopener noreferrer"&gt;Star ClawFleet on GitHub&lt;/a&gt;&lt;/strong&gt; | &lt;strong&gt;&lt;a href="https://discord.gg/b5ZSRyrqbt" rel="noopener noreferrer"&gt;Join the Discord&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Why You Should Pin Your OpenClaw Version — Lessons from v2026.3.31 Breaking Changes</title>
      <dc:creator>Desmond Wei</dc:creator>
      <pubDate>Fri, 03 Apr 2026 07:08:25 +0000</pubDate>
      <link>https://dev.to/weiyong1024/openclaw-v2026331-what-changed-and-why-you-should-pin-your-version-372</link>
      <guid>https://dev.to/weiyong1024/openclaw-v2026331-what-changed-and-why-you-should-pin-your-version-372</guid>
      <description>&lt;p&gt;OpenClaw just shipped v2026.3.31 — and if you're managing multiple instances, version pinning matters more than ever.&lt;/p&gt;

&lt;p&gt;This release includes security hardening (dangerous-code detection now fails closed by default), gateway fixes for QR bootstrap onboarding, and Android 15+ compatibility. But here's the catch: &lt;strong&gt;OpenClaw releases every 1-2 days with breaking changes.&lt;/strong&gt; If you're running &lt;code&gt;@latest&lt;/code&gt;, your bots can break without warning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Version Pinning Matters
&lt;/h2&gt;

&lt;p&gt;I run three OpenClaw instances on a single Mac. When one of them auto-updated mid-conversation and crashed the gateway, I learned the hard way: &lt;strong&gt;never run &lt;code&gt;@latest&lt;/code&gt; in production.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/clawfleet/ClawFleet" rel="noopener noreferrer"&gt;ClawFleet&lt;/a&gt; solves this by pinning a tested OpenClaw version in every release. The current recommended version is &lt;code&gt;2026.3.23-2&lt;/code&gt; — tested end-to-end before shipping. When you install via the one-command setup, you get this exact version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://clawfleet.io/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What v2026.3.31 Changes
&lt;/h2&gt;

&lt;p&gt;Key changes for self-hosters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;: Install-time scan failures now fail closed by default. Plugins with dangerous code findings require explicit override flags. This is good — it means your bots won't silently install compromised skills.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Gateway&lt;/strong&gt;: QR bootstrap onboarding restored. If you use the mobile app to pair with your instance, this was broken in 3.28-3.30.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agent workspace&lt;/strong&gt;: Files panel now auto-loads workspace files on first open. Minor UX improvement but useful if you're monitoring what your bots are working on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Chat commands&lt;/strong&gt;: &lt;code&gt;/steer&lt;/code&gt; and &lt;code&gt;/redirect&lt;/code&gt; now work from the command palette. Useful for mid-conversation adjustments without restarting.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Should You Upgrade?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;If you're using ClawFleet&lt;/strong&gt;: Wait. We'll test v2026.3.31 and bump &lt;code&gt;RecommendedOpenClawVersion&lt;/code&gt; in the next release if it's stable. Your instances are safe on 2026.3.23-2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you're running OpenClaw directly&lt;/strong&gt;: Read the &lt;a href="https://github.com/openclaw/openclaw/releases" rel="noopener noreferrer"&gt;full changelog&lt;/a&gt; before upgrading. Back up your &lt;code&gt;~/.openclaw&lt;/code&gt; directory first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you haven't started yet&lt;/strong&gt;: Don't worry about versions — &lt;a href="https://dev.to/weiyong1024/i-built-an-open-source-tool-to-run-ai-agents-on-my-laptop-they-collaborate-in-discord-managed-1c42"&gt;ClawFleet handles it for you&lt;/a&gt;. One command, tested version, browser dashboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;OpenClaw's rapid release cadence is a feature for the project but a risk for self-hosters. Every week brings new capabilities, but also potential breakage. ClawFleet's core value is shielding you from this: we test each version, pin the stable one, and let advanced users opt into newer versions through the dashboard's build flow.&lt;/p&gt;

&lt;p&gt;If you're running a fleet of bots that your team or customers depend on, version stability isn't optional — it's the whole point.&lt;/p&gt;

&lt;h2&gt;
  
  
  More in This Series
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/weiyong1024/i-built-an-open-source-tool-to-run-ai-agents-on-my-laptop-they-collaborate-in-discord-managed-1c42"&gt;Self-Host OpenClaw in 10 Minutes&lt;/a&gt; — full install walkthrough&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/weiyong1024/openclaw-managed-hosting-vs-self-hosting-in-2026-an-honest-comparison-3hee"&gt;SaaS vs Self-Hosting Comparison&lt;/a&gt; — cost analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this breakdown was useful, a reaction helps others find it too.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/clawfleet/ClawFleet" rel="noopener noreferrer"&gt;Star ClawFleet on GitHub&lt;/a&gt;&lt;/strong&gt; — helps others find the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://discord.gg/b5ZSRyrqbt" rel="noopener noreferrer"&gt;Join the Discord&lt;/a&gt;&lt;/strong&gt; — get help, share your setup.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Run 3 OpenClaw Bots That Collaborate in Discord — Step by Step</title>
      <dc:creator>Desmond Wei</dc:creator>
      <pubDate>Mon, 30 Mar 2026 16:33:03 +0000</pubDate>
      <link>https://dev.to/weiyong1024/how-to-run-3-openclaw-bots-that-collaborate-in-discord-step-by-step-19lo</link>
      <guid>https://dev.to/weiyong1024/how-to-run-3-openclaw-bots-that-collaborate-in-discord-step-by-step-19lo</guid>
      <description>&lt;p&gt;A tutorial on running multiple OpenClaw bots in Discord that collaborate autonomously — fleet deployment with Docker on macOS or Linux using ClawFleet.&lt;/p&gt;

&lt;p&gt;You want an AI agent team in Discord — not one bot, but three, each with a distinct role, tagging teammates when a question crosses domains. The problem: OpenClaw gives you a single instance. Scaling to three means tripling the config, managing ports, and praying nothing conflicts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/clawfleet/ClawFleet" rel="noopener noreferrer"&gt;ClawFleet&lt;/a&gt; manages multiple isolated OpenClaw instances from a browser dashboard with built-in team awareness. This tutorial: install, create three bots, give each a character, connect them to Discord, watch them collaborate. About 15 minutes on a Mac or Linux machine with 16 GB RAM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 0: Install ClawFleet
&lt;/h2&gt;

&lt;p&gt;One command handles everything — Docker, the CLI binary, the sandbox image, and the dashboard:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://clawfleet.io/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the full install walkthrough and troubleshooting, see: &lt;a href="https://dev.to/weiyong1024/i-built-an-open-source-tool-to-run-ai-agents-on-my-laptop-they-collaborate-in-discord-managed-1c42"&gt;Self-Host OpenClaw on Your Mac in 10 Minutes&lt;/a&gt;. After install, the dashboard opens at &lt;code&gt;http://localhost:8080&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Register a Model
&lt;/h2&gt;

&lt;p&gt;Go to &lt;strong&gt;Assets &amp;gt; Models&lt;/strong&gt; and click &lt;strong&gt;Create&lt;/strong&gt;. Pick any supported provider — OpenAI, Anthropic, Google, or DeepSeek. Paste your API key, select a model, and hit &lt;strong&gt;Test&lt;/strong&gt;. ClawFleet validates the key before saving, so you'll know immediately if something's wrong.&lt;/p&gt;

&lt;p&gt;One model is enough. All three bots can share it — models are reusable across instances.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Create Three Instances
&lt;/h2&gt;

&lt;p&gt;Go to &lt;strong&gt;Fleet&lt;/strong&gt; and click &lt;strong&gt;Create&lt;/strong&gt; three times. Give them meaningful names — I use &lt;code&gt;engineer&lt;/code&gt;, &lt;code&gt;researcher&lt;/code&gt;, and &lt;code&gt;writer&lt;/code&gt;. Each instance is a fully isolated Docker container with its own filesystem and OpenClaw installation.&lt;/p&gt;

&lt;p&gt;On a 16 GB Mac, three idle instances use roughly 4.5 GB RAM total. You'll barely notice them alongside your daily work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Give Each Bot a Character
&lt;/h2&gt;

&lt;p&gt;Go to &lt;strong&gt;Assets &amp;gt; Characters&lt;/strong&gt; and create three characters. Each has a Name, Bio, Communication Style, and Topics. Here's a team that works well together:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Character&lt;/th&gt;
&lt;th&gt;Bio&lt;/th&gt;
&lt;th&gt;Style&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ada&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Senior backend engineer. Go, Docker, system design.&lt;/td&gt;
&lt;td&gt;Direct, code-first, uses examples&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Max&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Research analyst. Finds data, checks claims, cites sources.&lt;/td&gt;
&lt;td&gt;Thorough, structured, evidence-based&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sam&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Technical writer. Turns complex topics into clear docs.&lt;/td&gt;
&lt;td&gt;Concise, reader-focused, avoids jargon&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Assign each character to its instance via the instance settings. ClawFleet renders these fields into a &lt;code&gt;SOUL.md&lt;/code&gt; file inside each container. The OpenClaw gateway watches this file and hot-reloads on any change — no restart needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Connect All Three to Discord
&lt;/h2&gt;

&lt;p&gt;You need three Discord bot tokens (one per instance — channel assets are exclusive). For each:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://discord.com/developers/applications" rel="noopener noreferrer"&gt;Discord Developer Portal&lt;/a&gt; &amp;gt; new application &amp;gt; &lt;strong&gt;Bot&lt;/strong&gt; &amp;gt; &lt;strong&gt;Reset Token&lt;/strong&gt; &amp;gt; copy&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;Message Content Intent&lt;/strong&gt; under Privileged Gateway Intents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OAuth2 &amp;gt; URL Generator&lt;/strong&gt; &amp;gt; &lt;code&gt;bot&lt;/code&gt; scope + &lt;code&gt;Send Messages&lt;/code&gt; + &lt;code&gt;Read Message History&lt;/code&gt; &amp;gt; invite to your server&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In ClawFleet, go to &lt;strong&gt;Assets &amp;gt; Channels&lt;/strong&gt;, create three Discord channel assets (one per token), and click &lt;strong&gt;Test&lt;/strong&gt; on each. ClawFleet verifies the token against Discord's API before saving. Assign one channel to each instance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Start and Watch Them Collaborate
&lt;/h2&gt;

&lt;p&gt;Assign the model and channel to each instance if you haven't already, then click &lt;strong&gt;Restart Bot&lt;/strong&gt; on all three.&lt;/p&gt;

&lt;p&gt;Here's the key feature: &lt;strong&gt;ClawFleet automatically injects team awareness into every bot.&lt;/strong&gt; When you assign characters to instances, each bot's &lt;code&gt;SOUL.md&lt;/code&gt; gets a "Your Team" section listing its teammates — their names, roles, and which channel they're on. When the fleet changes, every running bot's teammate info updates via hot-reload. No manual editing.&lt;/p&gt;

&lt;p&gt;Drop a message in the Discord channel that crosses domains:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"I need a technical blog post explaining our new caching layer. What's the best approach?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What happens:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ada&lt;/strong&gt; (engineer) explains the caching architecture with code examples&lt;/li&gt;
&lt;li&gt;Ada @mentions &lt;strong&gt;Max&lt;/strong&gt; because the post needs performance benchmarks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Max&lt;/strong&gt; (researcher) contributes data and cites relevant sources&lt;/li&gt;
&lt;li&gt;Max @mentions &lt;strong&gt;Sam&lt;/strong&gt; for the actual writing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sam&lt;/strong&gt; (writer) synthesizes everything into a draft outline&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The bots follow built-in collaboration rules: they @mention teammates when expertise crosses domains, build on each other's points instead of repeating, and yield to the human when the key perspectives are covered.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resource Usage
&lt;/h2&gt;

&lt;p&gt;Tested on an M4 MacBook Air (16 GB RAM):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Instances&lt;/th&gt;
&lt;th&gt;RAM (idle)&lt;/th&gt;
&lt;th&gt;RAM (active chat)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;~1.5 GB&lt;/td&gt;
&lt;td&gt;~2 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;~4.5 GB&lt;/td&gt;
&lt;td&gt;~6 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three bots running alongside VS Code, a browser, and Slack — no noticeable slowdown.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;You now have a three-bot AI team collaborating in Discord — running on your hardware, data fully local, no subscription. From here: add more bots, install skills from &lt;a href="https://clawhub.com" rel="noopener noreferrer"&gt;ClawHub&lt;/a&gt; (13,000+ community), snapshot a well-tuned bot and clone it, or connect additional channels (Telegram, Slack, Lark). The &lt;a href="https://github.com/clawfleet/ClawFleet/wiki" rel="noopener noreferrer"&gt;wiki&lt;/a&gt; has guides for every provider and channel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Involved
&lt;/h2&gt;

&lt;h2&gt;
  
  
  More in This Series
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/weiyong1024/i-built-an-open-source-tool-to-run-ai-agents-on-my-laptop-they-collaborate-in-discord-managed-1c42"&gt;Self-Host OpenClaw in 10 Minutes&lt;/a&gt; — the install guide&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://dev.to/weiyong1024/5-things-i-learned-running-multiple-openclaw-bots-on-my-macbook-gja"&gt;5 Mistakes to Avoid When Self-Hosting OpenClaw&lt;/a&gt; — production tips&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If this was useful, a reaction helps others find it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/clawfleet/ClawFleet" rel="noopener noreferrer"&gt;Star ClawFleet on GitHub&lt;/a&gt;&lt;/strong&gt; — it helps others find the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://discord.gg/b5ZSRyrqbt" rel="noopener noreferrer"&gt;Join the Discord&lt;/a&gt;&lt;/strong&gt; — share your fleet setup, get help, and see what others are building.&lt;/p&gt;

&lt;p&gt;Open source. MIT licensed. Free forever.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>docker</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Self-Host OpenClaw on Your Mac in 10 Minutes — One Command, Browser Dashboard</title>
      <dc:creator>Desmond Wei</dc:creator>
      <pubDate>Sun, 29 Mar 2026 15:24:58 +0000</pubDate>
      <link>https://dev.to/weiyong1024/i-built-an-open-source-tool-to-run-ai-agents-on-my-laptop-they-collaborate-in-discord-managed-1c42</link>
      <guid>https://dev.to/weiyong1024/i-built-an-open-source-tool-to-run-ai-agents-on-my-laptop-they-collaborate-in-discord-managed-1c42</guid>
      <description>&lt;p&gt;A step-by-step guide to self-hosting OpenClaw with Docker on macOS or Linux — no config files, no cloud, managed from a browser dashboard.&lt;/p&gt;

&lt;p&gt;You've seen &lt;a href="https://github.com/openclaw/openclaw" rel="noopener noreferrer"&gt;OpenClaw&lt;/a&gt; — the open-source AI assistant with 340K+ GitHub stars that connects to 20+ messaging platforms. You want to run it yourself. Your data stays on your machine, you pick your own LLM, no monthly fees.&lt;/p&gt;

&lt;p&gt;Then you hit the wall.&lt;/p&gt;

&lt;p&gt;Docker setup, port mapping, environment variables, supervisord configs, getting the gateway process to actually start — and if something breaks, you're debugging inside a container with no GUI. &lt;strong&gt;Roughly 1 in 5 people who attempt self-hosting never get a working instance.&lt;/strong&gt; The deployment friction kills the experience before it begins.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/clawfleet/ClawFleet" rel="noopener noreferrer"&gt;ClawFleet&lt;/a&gt; eliminates that entire wall. One command installs everything. A browser dashboard replaces the CLI. Ten minutes from now, your first AI agent can be live.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://clawfleet.io/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This single command handles everything:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installs Docker if you don't have it (Colima on macOS, Docker Engine on Linux)&lt;/li&gt;
&lt;li&gt;Downloads the &lt;code&gt;clawfleet&lt;/code&gt; CLI&lt;/li&gt;
&lt;li&gt;Pulls the pre-built sandbox image (~1.4 GB)&lt;/li&gt;
&lt;li&gt;Starts a web dashboard at &lt;a href="http://localhost:8080" rel="noopener noreferrer"&gt;http://localhost:8080&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No YAML files to write. No docker-compose to debug. No manual config.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set Up Your First Agent (5 minutes)
&lt;/h2&gt;

&lt;p&gt;The installer opens a dashboard in your browser. From there, three steps to a running agent:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Register a model&lt;/strong&gt; — Assets → Models. Paste an API key from OpenAI, Anthropic, Google, or DeepSeek. ClawFleet validates the key before saving — you'll know immediately if something's wrong.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxqikr40elq1e7at3trlp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxqikr40elq1e7at3trlp.png" alt="Models" width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Create an instance&lt;/strong&gt; — Fleet → Create. Each instance is a fully isolated Docker container with its own XFCE desktop, accessible through your browser via noVNC. Your host system is completely untouched.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Assign and launch&lt;/strong&gt; — Pick the model you just registered, assign it to the instance, click "Restart Bot". That's the entire configuration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluf05mway0yri0z2kvhr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluf05mway0yri0z2kvhr.png" alt="Fleet" width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your agent is now live. It's running on your hardware, your data stays local, and there's no subscription. If you close the laptop and reopen it, the agent auto-recovers — no manual restart needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the First Bot
&lt;/h2&gt;

&lt;p&gt;Once your first agent is running, the dashboard unlocks everything else without touching the terminal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Character system&lt;/strong&gt; — Define a persona with a bio, backstory, and communication style. Assign it to an instance and the agent takes on that personality across all conversations. Think of it as a job description for an AI employee.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Messaging channels&lt;/strong&gt; — Connect Telegram, Discord, Slack, or Lark. Your agent responds to real users on real platforms. Each channel is validated before saving so you don't deploy a broken bot.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Skills marketplace&lt;/strong&gt; — 52 built-in skills (weather, GitHub, coding, web search) plus 13,000+ community skills on &lt;a href="https://clawhub.com" rel="noopener noreferrer"&gt;ClawHub&lt;/a&gt;. Browse and install from the dashboard — one click, no CLI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fleet scaling&lt;/strong&gt; — Need multiple agents? Create more instances, each with a different model, personality, and channel. On a 16GB Mac you can comfortably run 3 bots simultaneously. They're aware of each other and collaborate naturally — an engineer bot will @-mention your marketing bot when a question crosses domains.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Soul Archive&lt;/strong&gt; — When a bot is performing well, snapshot its entire state (personality, memory, config). Clone it to new instances instantly. No retraining.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Resource Usage
&lt;/h2&gt;

&lt;p&gt;Tested on M4 MacBook Air (16 GB RAM):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Instances&lt;/th&gt;
&lt;th&gt;RAM (idle)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;~1.5 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;~4.5 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Lightweight enough to run alongside your daily work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Cost
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Managed hosting (2 bots)&lt;/th&gt;
&lt;th&gt;ClawFleet (3 bots)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Subscription&lt;/td&gt;
&lt;td&gt;~$20/month&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LLM API tokens&lt;/td&gt;
&lt;td&gt;included&lt;/td&gt;
&lt;td&gt;~$25/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extra hardware&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;$0 (your existing Mac)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You trade a subscription for direct API access — and gain a third bot, full data ownership, and zero vendor lock-in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://clawfleet.io/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ten minutes from now you'll have a self-hosted AI agent running on your own machine. The &lt;a href="https://github.com/clawfleet/ClawFleet/wiki" rel="noopener noreferrer"&gt;wiki&lt;/a&gt; has step-by-step guides for every LLM provider and messaging platform if you need them.&lt;/p&gt;

&lt;p&gt;If this helped you get started, a reaction helps others find it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/clawfleet/ClawFleet" rel="noopener noreferrer"&gt;Star ClawFleet on GitHub&lt;/a&gt;&lt;/strong&gt; — it helps others find the project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://discord.gg/b5ZSRyrqbt" rel="noopener noreferrer"&gt;Join the Discord&lt;/a&gt;&lt;/strong&gt; — see what others are building with their fleets and get help if you're stuck.&lt;/p&gt;

&lt;p&gt;Open source. MIT licensed. Free forever.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
