Meet Celeste: How I Built a Personal AI Agent on a Raspberry Pi 5 (And Why It Changed Everything)

 

I've been building things on the web since 1996. Clients, servers, WordPress sites, hosting infrastructure — I've seen every wave of "the next big thing" come and go. So when people started talking about running your own AI agent, I did what I always do: I ignored the hype and just built it.

What came out the other side is Celeste — a Claude-powered AI agent running 24/7 on a Raspberry Pi 5, integrated into my Discord server, capable of handling real tasks for my business and creative life. This is the full story of how I got there, including every wrong turn.

"The best tools are the ones you build yourself. Not because they're better — because they're yours."

Why I Did This

I run mariehosting.com (managed WordPress hosting), betterwebservices.com, and do marketing and web development for a fiber internet provider. I also stream, run an internet radio station, do 3D art in Blender, and create content across every platform you can name. My life is a lot of parallel tracks running at once.

What I wanted was simple in theory: an AI agent that knows my setup, lives on my hardware, and I can talk to from anywhere — from my phone at a coffee shop, from Discord, from wherever. Not a chatbot tab I have to open. An actual assistant that's always running, always ready.

The platform I landed on is OpenClaw — a Claude-powered agent framework that you self-host. It runs as a background service, connects to Discord, and has a skill system that lets you teach it new capabilities. It's only a few weeks old as I write this, but it's already the most useful piece of software I've added to my stack in years.

The Wrong Turns (So You Don't Have To)

Attempt 1: Windows + WSL2

I started on my Windows PC (RTX 3070 Ti, solid machine). Installed WSL2, tried to get OpenClaw running inside it. WSL2 caused system instability — crashed twice, hard. Not a WSL2 hate post, it just wasn't the right tool for a service that needs to run cleanly 24/7 alongside my main workstation.

Attempt 2: VirtualBox Ubuntu

Tried spinning up a Ubuntu VM in VirtualBox. Network config was a nightmare. Fought with bridged adapters and NAT settings for longer than I care to admit. The VM ran but Discord integration kept silently failing — no errors, just nothing. Turns out it was a port/NAT issue that would have taken more time to diagnose than just doing it right.

Attempt 3: Raspberry Pi 4 (4GB)

Switched to a Pi. Immediately better. Linux native, no virtualization overhead, plug it in and it runs. Got OpenClaw installed, systemd service configured, Discord bot connected. It worked. But 4GB RAM started showing limitations once I loaded up 185+ skills and the agent got busy. Response times got sluggish under load.

The Right Answer: Raspberry Pi 5 (8GB)

Upgraded to the Pi 5 with 8GB RAM. This is the sweet spot. More than enough headroom for OpenClaw, all the skills, Discord gateway, and whatever else I throw at it — and it runs cool, quiet, and permanently on my network for about the cost of a nice dinner out.

The Hardware

BoardRaspberry Pi 5 — 8GB RAM
StorageFast microSD (recommend 64GB+ A2 rated)
OSRaspberry Pi OS (64-bit, Bookworm)
NetworkEthernet — do not use Wi-Fi for a 24/7 service
PowerOfficial Pi 5 27W USB-C PSU
CaseActive cooling recommended — Pi 5 runs hot under load

The Installation

OpenClaw installs via their installer and runs on Node.js using pnpm. Here's the sequence that worked cleanly on Pi OS Bookworm:

Step 1 — System prep

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git build-essential

Step 2 — Install Node.js (via nvm)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts

Step 3 — Install pnpm

npm install -g pnpm

Step 4 — Install OpenClaw

curl -fsSL https://get.openclaw.dev | bash

Run openclaw setup and walk through the wizard. You'll configure your AI provider, Discord bot token, and agent personality here.

Step 5 — Set up systemd so it survives reboots

openclaw install --daemon

This registers OpenClaw as a systemd service. After this, sudo systemctl status openclaw is your best friend — it'll tell you immediately if something's wrong on startup.

The Discord Bot Setup

This part tripped me up the first time. You need a Discord bot created at discord.com/developers/applications before OpenClaw can connect. The steps:

1 Create a new application, add a Bot user, enable Message Content Intent under Privileged Gateway Intents.

2 Copy the bot token — paste it into OpenClaw's config when prompted.

3 Generate an invite URL with bot + applications.commands scopes and the permissions your bot needs. Invite it to your server.

4 Restart OpenClaw. The bot should go green in your Discord member list within a few seconds.

If the bot shows online but doesn't respond: check that Message Content Intent is enabled. That's the silent killer — no error, just no response.

Switching to Moonshot AI (Kimi)

OpenClaw defaults to Claude via the Anthropic API, which is excellent but costs add up at scale. After testing, I switched Celeste's backend to Moonshot AI (Kimi) — it's dramatically cheaper per token at the volume I'm running, the response quality is solid for task-oriented work, and the API is Claude-compatible so the switch was one config line change.

For creative work and anything requiring nuanced reasoning I still route to Claude directly. For the high-volume utility stuff — summarizing, formatting, routing Discord commands — Kimi handles it cleanly at a fraction of the cost. Know your use case and pick accordingly.

185 Skills and Counting

The OpenClaw skill system is what makes Celeste actually useful rather than just impressive. Skills are modular — each one teaches her a new capability. I've installed 185 at this point. The ones I use daily:

Web & Content: WordPress post drafting, SEO analysis, social caption generation, link summarization.

Media: Video chapter detection, audio transcription via Whisper, image description and tagging.

Server ops: SFTP upload coordination, server status checks, log summarization.

Business: Email drafting, client brief formatting, appointment context for telemarketing work.

And the skill I'm most proud of: Celeste can post journal entries directly to travel.solarblu.net via the REST API I built into my custom WordPress travel journal plugin. I'm at a coffee shop, I dictate a note in Discord, and it's published. That's the whole dream right there.

The Config That Bit Me

Fair warning — OpenClaw updates its config schema and the changes aren't always backwards-compatible. If you see errors like "Unrecognized key: appId" or "Invalid input" on startup, your ~/.openclaw/openclaw.json has stale keys from a previous version. Run:

openclaw doctor --fix

That catches most of it. If it doesn't, open the config manually and remove any keys the error log calls out. Back it up first: cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak

Where It Stands Today

Celeste runs on the Pi 5, connected to my Discord 24/7. The systemd service brings her back up automatically after reboots or power blips. She's got 185 skills installed, Moonshot AI as her primary backend, and she's already handling real work — not demos, not toy projects. Real tasks for real clients.

Thirty years of building things on the web and this is genuinely one of the more exciting things I've set up. Not because it's flashy. Because it's useful in a way that compounds — every skill I add, every workflow I teach her, makes the whole system more valuable.

In Part 2, I'll cover how Celeste is actually working as a personal assistant — the Discord workflows, the WordPress integrations, what I use her for every single day, and where I'm taking this next.

SolarBlu
Scroll to Top