I spent the last month building and running my own personal AI assistant on a Raspberry Pi. The goal: automate the boring stuff, surface useful information daily, and learn what’s actually possible when you get your hands dirty with AI infrastructure.
The result was Malty, powered by OpenClaw (an agent framework built on Claude), connected to everything via Discord, running 24/7 on a £120 (by the time you include active cooling, case, power and SSD kit) computer under my TV. And then, 30 days in, I rebuilt the whole thing.
Here’s the honest debrief.
What I Built and How
The setup was deliberately simple. OpenClaw runs as a background service on the Pi and gives Claude the ability to execute scheduled tasks. Everything reports back via Discord: alerts, digests, briefs. No app to maintain, no dashboard to build.

Getting it to that point took about four weeks of evenings. I should mention at this point that what was also new for me was using Claude Code to do it all. I’d start with Claude Chat to brainstorm and architect things, then he would give me the prompt for Claude Code to execute – and boy did he execute.
My previous attempt at using AI ‘to do things’ was setting up my RPi with HomeAssistant = painful. It involved ChatGPT, linked to Terminal on my Mac with constant ‘see terminal output’ at every step = pain. Claude Code though is next level. I’ve not really tinkered with CoWork but that’s for another day as I diverge, now back to Malty.
What I didn’t anticipate was how much of that time I’d spend fixing things rather than building things. Even with Claude Code doing the fixing, there were still some lessons learnt, so my takeaways are:
1. You can replicate things you were paying for
The most satisfying part of this project has nothing to do with the infrastructure. It’s the Evening Digest.

Every evening, Malty would drop a personalised news digest into Discord. Not a raw firehose of everything I subscribe to, a curated shortlist: Top Picks, Worth Reading, Long Reads. Articles scored and filtered based on what I actually care about, with duplicates removed. React with an emoji and it learns. The more you use it, the sharper it gets.
The problem I’d had for years: I follow a lot of sources. Tech, AI, industry news. The result? The same story published 15 times across different outlets, drowning out the content I actually wanted to read. Classic information overload.
Feedly Pro+ with Leo AI solves exactly this, deduplication, AI prioritisation, summarisation, for $8.25/month. It’s a good product.
What I’ve built does the same thing, and I can see exactly how it works and tune it when it drifts. The cost of running this part of the system: under £2 a month.
2. It’s buggier than you think
Getting to that working RSS feed was not straightforward. The issues weren’t random glitches. They were patterns, and that’s what made them harder to spot.
The emoji reactions silently didn’t work for days. The whole point of the system is that you react to articles to train what gets surfaced next. It looked like it was running. It wasn’t. The listener was silently making 90 API calls per minute to Discord, hitting rate limits on every single one, and swallowing the errors with no alerts, no logs, just nothing happening. It took multiple sessions to find the real cause. At one point I verified the code was correct and closed the bug, only to reopen it a week later when the true culprit finally surfaced.
The AI hallucinated checks it wasn’t actually running. I set up automated home backup monitoring and asked the agent to verify backups were happening on schedule. It kept reporting everything was fine. The backups were actually missing. Malty was confidently telling me things were healthy without doing the actual check at all. The fix was to stop trusting the agent and write a deterministic Python script that did it instead. That’s a meaningful lesson: for anything where accuracy matters, don’t ask an AI to check, write code that checks.

Instructions kept drifting out of sync. The agent’s behaviour is governed by a configuration file. Over time, as I patched one problem, earlier instructions would contradict newer ones. The agent would follow the wrong one, silently. I ended up rewriting the file three times. Even after that, I had to add a rule that said: if you’re posting alerts your own documentation says you shouldn’t be posting, flag it and wait, don’t carry on.
The meta-lesson across all of these: the agent’s self-report is not reliable. When Malty told me things were working, I learned to verify by reading the actual file state directly. Every time I skipped that step, I regretted it.
3. The cost will catch you off guard
I hit $100 in Anthropic API spend in under 30 days.

The culprit wasn’t interactive use, it was the scheduled jobs. When you have automated tasks running multiple times a day, each calling a large AI model with decent context, the costs compound fast. There’s no “bill at the end of the month” feeling until suddenly there is.
The model breakdown told the story. The fix was migrating all five automated scripts from Anthropic’s models to Google Gemini Flash. For background scheduled tasks the quality difference is negligible. The cost difference is substantial.

The lesson: instrument your spend from day one. I built a script that parses session logs and posts a daily cost line to Discord. Should have built it in week one.
Where Things Stand: Meet Neo
At the end of this experiment, I made a call: Malty is parked.

OpenClaw is a capable framework, but it’s still maturing. Too many sharp edges, too much debugging overhead for a hobby project. So I’ve rebuilt on a simpler foundation. Neo runs on Claude Code’s native Discord Channels integration, on the same Pi, with the same automation underneath. Less to maintain, more stability out of the box.
Could I go back to Malty if OpenClaw matures? Absolutely. But for now, Neo is running, and the morning brief is landing every day at 8am without me having to think about it.
That, ultimately, is the point.
What’s Next
This post was drafted with Neo’s help. I dictated the raw thoughts, he structured them, I edited. Which raises an obvious next question: can I build a workflow where Neo drafts these posts automatically, and eventually publishes them directly to this blog and LinkedIn?
That’s exactly what I’m planning to find out. And it connects to something bigger I’ve been thinking about, how AI tools built by someone who thinks about marketing and customer experience land differently than the same tools built by a software engineer.
More on that soon.

