<?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: Muhammad Zafar</title>
    <description>The latest articles on DEV Community by Muhammad Zafar (@zafarr).</description>
    <link>https://dev.to/zafarr</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%2F1298630%2Fefeede4d-e0eb-40cf-88c0-50cb4ae1867d.png</url>
      <title>DEV Community: Muhammad Zafar</title>
      <link>https://dev.to/zafarr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zafarr"/>
    <language>en</language>
    <item>
      <title>OpenClaw on Mac Mini: Secure 24/7 Setup Guide for Production Use</title>
      <dc:creator>Muhammad Zafar</dc:creator>
      <pubDate>Sat, 21 Feb 2026 09:39:20 +0000</pubDate>
      <link>https://dev.to/zafarr/openclaw-on-mac-mini-secure-247-setup-guide-for-production-use-5a29</link>
      <guid>https://dev.to/zafarr/openclaw-on-mac-mini-secure-247-setup-guide-for-production-use-5a29</guid>
      <description>&lt;p&gt;This is a step-by-step guide to run OpenClaw on a Mac mini, intended for 24/7 uptime with a security-first baseline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Side note:&lt;/strong&gt; If you want this set up for you, message me. I’ll install it and tailor the agent to your goals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 1: macOS prep (uptime + baseline hardening)&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;1) Stop the machine from sleeping&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo pmset -a sleep 0 disksleep 0 displaysleep 0&lt;br&gt;
sudo pmset -a hibernatemode 0 powernap 0&lt;br&gt;
sudo pmset -a standby 0 autopoweroff 0&lt;br&gt;
sudo pmset -a autorestart 1&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Verify:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pmset -g | grep sleep&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Expected: sleep-related values are 0.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Keep the system awake across reboots (LaunchAgent + caffeinate)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
cat &amp;gt; ~/Library/LaunchAgents/com.openclaw.caffeinate.plist &amp;lt;&amp;lt; 'EOF'
&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&amp;gt;
&amp;lt;plist version="1.0"&amp;gt;
&amp;lt;dict&amp;gt;
    &amp;lt;key&amp;gt;Label&amp;lt;/key&amp;gt;
    &amp;lt;string&amp;gt;com.openclaw.caffeinate&amp;lt;/string&amp;gt;
    &amp;lt;key&amp;gt;ProgramArguments&amp;lt;/key&amp;gt;
    &amp;lt;array&amp;gt;
        &amp;lt;string&amp;gt;/usr/bin/caffeinate&amp;lt;/string&amp;gt;
        &amp;lt;string&amp;gt;-s&amp;lt;/string&amp;gt;
    &amp;lt;/array&amp;gt;
    &amp;lt;key&amp;gt;RunAtLoad&amp;lt;/key&amp;gt;
    &amp;lt;true/&amp;gt;
    &amp;lt;key&amp;gt;KeepAlive&amp;lt;/key&amp;gt;
    &amp;lt;true/&amp;gt;
&amp;lt;/dict&amp;gt;
&amp;lt;/plist&amp;gt;
EOF

launchctl load ~/Library/LaunchAgents/com.openclaw.caffeinate.plist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pgrep caffeinate&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Expected: returns a PID.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Enable auto-login for the agent user&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;System Settings → Users &amp;amp; Groups → Login Options → Automatic login: [agent user]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4) Turn on firewall + stealth mode&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on&lt;br&gt;
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setstealthmode on&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5) Disable services you don’t need&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo mdutil -a -i off&lt;br&gt;
defaults write com.apple.NetworkBrowser DisableAirDrop -bool YES&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6) Lock down home directory permissions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chmod 700 ~/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7) Enable FileVault (full disk encryption)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;System Settings → Privacy &amp;amp; Security → FileVault → Turn On&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8) Optional: enable Remote Login (SSH)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;System Settings → General → Sharing → Remote Login → ON Restriction: agent user only.&lt;br&gt;
Phase 2: Install Tailscale&lt;/p&gt;

&lt;p&gt;&lt;code&gt;brew install tailscale&lt;br&gt;
tailscale up&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Follow the auth URL to join your tailnet.&lt;/p&gt;

&lt;p&gt;Verify:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tailscale status&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Note: If you already have the Mac App Store version installed, the Homebrew CLI can conflict. The App Store build also doesn’t support Tailscale SSH. Use the Mac app for GUI management and the brew CLI for tailscale serve only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 3: Install prerequisites&lt;/strong&gt;&lt;br&gt;
Homebrew (if needed)&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Node 22+&lt;/p&gt;

&lt;p&gt;&lt;code&gt;brew install node@22&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Git&lt;/p&gt;

&lt;p&gt;&lt;code&gt;brew install git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Verify Node:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;node -v&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Expected: 22+&lt;br&gt;
Create a Telegram bot (required for onboarding)&lt;/p&gt;

&lt;p&gt;Message &lt;a class="mentioned-user" href="https://dev.to/botfather"&gt;@botfather&lt;/a&gt; on Telegram&lt;br&gt;
 Send /newbot, choose name + username&lt;br&gt;
 Copy the bot token (used during onboarding)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 4: Install OpenClaw and run onboarding&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Install:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install -g openclaw@latest&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Onboard:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;openclaw onboard --install-daemon&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;During the wizard you’ll handle gateway setup, model/auth, channels (Telegram + bot token), skills, and daemon install.&lt;/p&gt;

&lt;p&gt;Known bug (v2026.2.12+ / Issue #16134): the wizard can skip the Model/Auth step and jump ahead without collecting an API key. If that happens, the agent will be unresponsive. The fix is in Phase 5.&lt;/p&gt;

&lt;p&gt;Verify:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;openclaw --version&lt;br&gt;
openclaw health&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Pair Telegram:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Message your bot on Telegram, get the pairing code
Approve:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;code&gt;openclaw pairing list --channel Telegram&lt;br&gt;
openclaw pairing approve Telegram &amp;lt;CODE&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Verify again:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;openclaw health&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Expected: Telegram: ok (@yourbotname)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 5: Configure API key + model setup&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;5.1 Remove stale env var overrides&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A shell-level ANTHROPIC_API_KEY can override OpenClaw config and cause silent auth failures if it’s wrong.&lt;/p&gt;

&lt;p&gt;Check:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;echo $ANTHROPIC_API_KEY&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;If it returns something, find where it’s set:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;grep -rn ANTHROPIC_API_KEY ~/.zshrc ~/.zprofile ~/.bash_profile ~/.zshenv 2&amp;gt;/dev/null&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Remove the export line, then:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;source ~/.zshrc&lt;br&gt;
unset ANTHROPIC_API_KEY&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.2 Confirm your key works with a direct API call&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Replace YOUR_KEY with your key from console.anthropic.com:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;curl https://api.anthropic.com/v1/messages \&lt;br&gt;
  -H "x-api-key: YOUR_KEY" \&lt;br&gt;
  -H "content-type: application/json" \&lt;br&gt;
  -H "anthropic-version: 2023-06-01" \&lt;br&gt;
  -d '{"model":"claude-sonnet-4-20250514","max_tokens":50,"messages":[{"role":"user","content":"hi"}]}'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Expected: a JSON reply with Claude output. Errors usually mean the key is invalid.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.3 Add env + models to openclaw.json&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Edit:&lt;br&gt;
&lt;code&gt;nano ~/.openclaw/openclaw.json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add at top-level:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"env": {&lt;br&gt;
  "ANTHROPIC_API_KEY": "YOUR_ACTUAL_KEY_HERE"&lt;br&gt;
},&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Inside agents.defaults, set model strategy:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"model": {&lt;br&gt;
  "primary": "anthropic/claude-sonnet-4-6",&lt;br&gt;
  "fallbacks": ["anthropic/claude-opus-4-6"]&lt;br&gt;
},&lt;br&gt;
"heartbeat": {&lt;br&gt;
  "every": "30m",&lt;br&gt;
  "model": "anthropic/claude-haiku-4-5",&lt;br&gt;
  "activeHours": { "start": "08:00", "end": "23:00" }&lt;br&gt;
},&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Meaning:&lt;/p&gt;

&lt;p&gt;Sonnet for normal work&lt;br&gt;
   Haiku for heartbeat pings&lt;br&gt;
   Opus as fallback&lt;/p&gt;

&lt;p&gt;Important: avoid the setup-token auth flow (openclaw models auth setup-token). It uses OAuth bearer tokens that can get stuck in persistent 401 loops. Prefer direct API key via the env block.&lt;/p&gt;

&lt;p&gt;If onboarding created an auth.profiles block with "mode": "token", it can override your env key. If you see 401 errors, remove auth.profiles and delete:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;rm ~/.openclaw/agents/main/agent/auth-profiles.json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.4 Restart and test end-to-end&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;openclaw gateway restart&lt;br&gt;
openclaw tui&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Type hello. If you get (no output) or 401s, revisit 5.1 to 5.3.&lt;br&gt;
Phase 6: Expose the dashboard safely with Tailscale Serve&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tailscale serve --bg http://127.0.0.1:18789&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Use http:// (plain loopback). Using https+insecure:// often yields 502 errors.&lt;/p&gt;

&lt;p&gt;Access from tailnet: https://[mac-mini-hostname].tail[xxxxx].ts.net&lt;/p&gt;

&lt;p&gt;Verify from another device:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;curl -k https://[mac-mini-hostname].tail[xxxxx].ts.net&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Security note: Use Serve, not Funnel. Serve stays private to your tailnet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 7: Security hardening&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Run audits:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;openclaw security audit&lt;br&gt;
openclaw security audit --deep&lt;br&gt;
openclaw security audit --fix&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Lock down permissions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;chmod 700 ~/.openclaw
chmod 600 ~/.openclaw/openclaw.json
find ~/.openclaw/credentials -type f -exec chmod 600 {} \;
find ~/.openclaw/agents -name "auth-profiles.json" -exec chmod 600 {} \;
find ~/.openclaw/agents -name "sessions.json" -exec chmod 600 {} \; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify gateway binds to loopback:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;grep '"bind"' ~/.openclaw/openclaw.json&lt;/code&gt;&lt;br&gt;
Expected: loopback&lt;/p&gt;

&lt;p&gt;Verify token auth mode:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;grep -A 3 '"auth"' ~/.openclaw/openclaw.json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Expected: "mode": "token"&lt;/p&gt;

&lt;p&gt;Verify DM pairing policy:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;grep '"dmPolicy"' ~/.openclaw/openclaw.json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Expected: pairing&lt;/p&gt;

&lt;p&gt;Verify no insecure flags:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;grep "allowInsecureAuth" ~/.openclaw/openclaw.json&lt;br&gt;
grep "dangerouslyDisableDeviceAuth" ~/.openclaw/openclaw.json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Expected: no output&lt;/p&gt;

&lt;p&gt;Run doctor:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;openclaw doctor --fix&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Note: gateway.discovery.mode is not a valid config key in v2026.2.13. Don’t add it.&lt;br&gt;
Phase 8: Define the agent’s identity (this is what makes it useful)&lt;/p&gt;

&lt;p&gt;List workspace files:&lt;br&gt;
&lt;code&gt;ls ~/.openclaw/workspace/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Use your LLM to generate these files:&lt;/p&gt;

&lt;p&gt;IDENTITY.md&lt;br&gt;
   SOUL.md&lt;br&gt;
   USER.md&lt;br&gt;
   AGENTS.md&lt;br&gt;
   HEARTBEAT.md&lt;/p&gt;

&lt;p&gt;Then paste them into:&lt;br&gt;
&lt;code&gt;nano ~/.openclaw/workspace/IDENTITY.md&lt;br&gt;
nano ~/.openclaw/workspace/SOUL.md&lt;br&gt;
nano ~/.openclaw/workspace/USER.md&lt;br&gt;
nano ~/.openclaw/workspace/AGENTS.md&lt;br&gt;
nano ~/.openclaw/workspace/HEARTBEAT.md&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Warning: an empty HEARTBEAT.md can cause heartbeat to silently skip. It needs real content.&lt;/p&gt;

&lt;p&gt;Test understanding (via Telegram): Ask it to explain autonomy zones, what it can do without permission, and what it must never do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Phase 9: Cron jobs (optional)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Only add scheduled tasks if needed. Use --session isolated to avoid heartbeat prompt hijacking (bug #3589).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
openclaw cron add \
  --name "job-name" \
  --cron "0 7 * * 1-5" \
  --tz "Europe/Vienna" \
  --session isolated \
  --message "Clear, specific instruction here." \
  --model "anthropic/claude-sonnet-4-5" \
  --deliver \
  --channel telegram \
  --best-effort 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify:&lt;br&gt;
&lt;code&gt;openclaw cron list&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Phase 10: Final verification checklist&lt;/p&gt;

&lt;p&gt;macOS:&lt;br&gt;
&lt;code&gt;pmset -g | grep sleep&lt;br&gt;
pgrep caffeinate&lt;br&gt;
tailscale status&lt;/code&gt;&lt;br&gt;
OpenClaw:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;openclaw --version&lt;br&gt;
openclaw health&lt;br&gt;
openclaw security audit&lt;br&gt;
openclaw system heartbeat last&lt;br&gt;
openclaw cron list&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Security:&lt;br&gt;
&lt;code&gt;grep '"bind"' ~/.openclaw/openclaw.json&lt;br&gt;
grep '"dmPolicy"' ~/.openclaw/openclaw.json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Tailscale:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tailscale serve status&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Behavior test: Send a task on Telegram. You should see it start without extra permission prompts, report results, and log work to memory/YYYY-MM-DD.md.&lt;br&gt;
Key commands&lt;/p&gt;

&lt;h1&gt;
  
  
  Gateway
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;openclaw gateway restart&lt;br&gt;
openclaw gateway status&lt;br&gt;
openclaw dashboard&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Status
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;openclaw health&lt;br&gt;
openclaw doctor --fix&lt;br&gt;
openclaw system heartbeat last&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Security
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;openclaw security audit --deep --fix&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Cron
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;openclaw cron list&lt;br&gt;
openclaw cron add --name "..." --cron "..." --tz "..." --session isolated --message "..."&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Telegram pairing
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;openclaw pairing list --channel Telegram&lt;br&gt;
openclaw pairing approve Telegram &amp;lt;CODE&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Models
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;openclaw models status&lt;br&gt;
openclaw models list&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Config
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;cat ~/.openclaw/openclaw.json&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Tailscale
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;tailscale status&lt;br&gt;
tailscale serve status&lt;br&gt;
tailscale serve --bg http://127.0.0.1:18789&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now if you don’t want to deal with any of this, contact me. I’ll set it up and tailor the agent to your business goals so you don’t have to figure it out. Email at: &lt;a href="mailto:zafarrbizz@gmail.com"&gt;zafarrbizz@gmail.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>tutorial</category>
      <category>openclaw</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
