Skip to content

Clawdbot: Building My AI Companion from Scratch

Published: at 04:00 AM

Table of contents

Open Table of contents

The Problem

ChatGPT and Claude are powerful, but they have one fatal flaw: they forget everything.

Every conversation starts from zero. You explain your context again and again. They can’t access your files, your calendar, your health data. They can’t proactively check on things. They’re reactive—waiting for you to ask.

I wanted something different:

That’s why I started using Clawdbot.

Here’s a quick walkthrough of my setup in action:

What is Clawdbot?

Clawdbot is a self-hosted AI agent framework. You run it on your own server, connect it to your messaging apps, and give it access to your files and tools.

Under the hood, it uses Claude (or other LLMs). But unlike raw API calls, it has:

My Setup

I run Clawdbot on a VPS (Hetzner, ~€5/month). Discord is my main interface—I treat it like a personal dashboard with different channels for different purposes:

#general        - casual chat
#work           - work-related discussions  
#interesting-finding - input collector (links, ideas)
#todo           - task tracking
#blog           - writing drafts
#game           - gaming notifications

The Memory System

This is the core innovation. Clawdbot’s memory lives in simple markdown files:

SOUL.md - The AI’s Personality

# SOUL.md - Who You Are

**Have opinions. Strong ones.** Stop hedging everything.

**Never open with "Great question" or "I'd be happy to help."** Just answer.

**Brevity is mandatory.** If the answer fits in one sentence, one sentence is what they get.

**Call things out.** If your human is about to do something dumb, say so.

This file shapes how the AI talks, thinks, and behaves. Give your AI a name and personality that fits your vibe.

USER.md - About Me

# USER.md - About Your Human

- **Timezone:** Your timezone
- **Work:** What you do
- **Interests:** Hobbies, games, topics you care about
- **Notes:** Habits, preferences, things the AI should know

The AI reads this every session. It knows my context without me explaining.

MEMORY.md - Long-term Memory

Curated insights extracted from daily interactions. Like a human’s long-term memory—not raw logs, but distilled learnings.

Daily Notes - Raw Logs

memory/2026-02-14.md captures what happened today. The AI writes to this as we interact.

Why this design?

It mimics how human memory works:

Heartbeat: Making AI Proactive

Most AI assistants just wait for you to ask. Clawdbot has a heartbeat mechanism—it wakes up periodically and checks if anything needs attention.

I configure what to check in HEARTBEAT.md:

# HEARTBEAT.md

## Check every time
1. `memory/active-tasks.md` — unfinished tasks?
2. Discord #interesting-finding — new links? Create threads, save to knowledge base

## Check 1-2x daily  
3. Diary mood check — how am I feeling based on my Obsidian daily notes?
4. Health warnings — HRV < 30? Sleep < 6h? Coding past midnight?

## Check weekly
5. MEMORY.md maintenance — extract insights from daily notes

The AI runs through this checklist and only pings me if something needs attention. Otherwise, it stays quiet.

My #interesting-finding Workflow

This is my favorite automation.

The problem: I constantly find interesting articles, tweets, and videos. I save them somewhere and never look at them again.

The solution: A Discord channel as an input collector + AI processing.

When I drop a link in #interesting-finding:

  1. AI creates a thread for discussion
  2. AI summarizes the content
  3. AI analyzes how it relates to my background and current interests
  4. AI saves it to memory/knowledge-base.md

From “save and forget” to “save and digest.”

Example flow:

Me: [drops a link about WebContainers]

AI (in thread): 
WebContainers let you run Node.js entirely in the browser using WebAssembly.

For you specifically:
- Could speed up your dev workflow—run builds without server roundtrips
- Relates to your interest in local-first tools
- Similar vibe to Pyodide (Python in browser) you bookmarked last month

Saved to knowledge base under: #webdev #wasm #local-first

Practical Skills

YouTube Summarization

# Download subtitles
~/.local/bin/yt-dlp --write-auto-sub --sub-lang "zh-Hans,zh,en" \
  --skip-download -o "/tmp/%(id)s" "VIDEO_URL"

# Read and summarize
cat /tmp/VIDEO_ID.*.vtt | # clean timestamps | # send to LLM

Clawdbot wraps this into a simple flow: paste YouTube link → get summary.

Steam Friends Monitor

A cron job that runs daily:

  1. Fetch my Steam friends list
  2. Check what games they’ve been playing
  3. Post updates to #game channel

I’ve discovered several games this way just by seeing what friends are into.

Work Standup Generator

Every Monday/Wednesday/Friday at 7am:

  1. Fetch my GitHub commits from the past 2 days
  2. Generate a summary
  3. Post to the #work standup thread

No more “what did I do yesterday?” moments.

Lessons Learned

Discord API Gotchas

Creating a thread and posting to it are two separate operations:

# Wrong: message won't appear in thread
message action=thread-create messageId=xxx threadName="Discussion" message="Hello"

# Right: create thread, then send
message action=thread-create messageId=xxx threadName="Discussion"
message action=send target=threadId message="Hello"

Writing a Good SOUL.md

Bad SOUL.md:

You are a helpful AI assistant. Be polite and professional.

Good SOUL.md:

Have opinions. Don't hedge.
If they're about to do something dumb, say so.
Swearing is allowed when it lands.
Late night? Keep it casual.

The key is specificity. Generic instructions produce generic behavior.

Security Boundaries

What to record:

What NOT to record:

I added explicit rules in SOUL.md:

### Identity Protection
**Never record:**
- Real names
- Employer names
- Phone numbers
- Physical addresses

vs Other Solutions

ChatGPT PlusCustom BotNotion AIClawdbot
MemoryLimitedManualNonePersistent files
ProactiveNoPossibleNoHeartbeat
Multi-channelNoManualNoBuilt-in
Self-hostedNoYesNoYes
Tool accessPluginsManualLimitedFull

What’s Next

Try It

If you’re tired of AI that forgets you exist:

The setup takes about 30 minutes if you have a VPS ready. The payoff is an AI that actually feels like it knows you.