Self-Hosted AI

The Celeste Chronicales April 2026

The Celeste Chronicles — April 2026

72 Hours of Chaos, Upgrades & Lessons Learned

Upgrading the Pi, installing a LAMP stack, surviving multiple OpenClaw config meltdowns, and getting Celeste back online — a brutally honest field report from the lab at SolarBlu HQ.

If you've been following the Celeste build series, you know that running a self-hosted AI agent on a Raspberry Pi is one of the most rewarding — and occasionally maddening — things you can do as a developer. The last 72 hours have been a masterclass in "what can go wrong, will go wrong." But also: what gets fixed, gets faster. Here's the full play-by-play.
3x OpenClaw upgrades
PHP 8 LAMP stack installed
185+ Celeste skills active

The Raspberry Pi Upgrade (That Nobody Planned)

The short version: the Pi needed to come up to speed. We'd been running on a configuration that was starting to show its age — tighter disk space, slower package management, and a slow external USB drive that turned out to be causing more grief than we realized. The decision was made to do a full OS upgrade (Bullseye → Bookworm) and move some key directories off the external drive. The upgrade process itself was textbook Debian — painfully slow but stable. With 1,478 packages to pull down and update, we were looking at 20–40 minutes of sitting on our hands while the progress bar crawled across the screen. The key lesson here: don't interrupt a dist-upgrade mid-stream. We didn't, and it paid off.
⚠ Heads Up If you're running OpenClaw's npm global install on an external USB drive, be aware that permission errors and filesystem quirks (like the ENOTEMPTY npm bug) are significantly more likely. Moving npm-global to the Pi's internal storage reduced our headaches considerably.

The Disk Space Trap

We ran out of disk space mid-session — one of those classic "oh no" moments where you realize the external drive that seemed like a great idea is now the bottleneck for everything. The fix was clearing the npm cache and relocating the global install directory. Once that resolved, performance improved noticeably across the board. The Pi stopped feeling sluggish. Celeste's responses got snappier. Lesson learned: keep your AI agent's core files on fast internal storage.

Building the LAMP Stack for PHP Dev Work

One of the new additions this week: a full LAMP stack on the Pi, set up specifically for PHP 5.3 → PHP 8 conversion work and WordPress theme/plugin testing. The goal is to use the Pi as a local dev environment — build and test locally, then FTP the finished product to client servers. The install is straightforward on Bookworm:
sudo apt update
sudo apt install apache2 php php-mysql php-curl php-gd \
  php-mbstring php-xml php-zip mariadb-server phpmyadmin \
  php-imagick php-intl -y
MariaDB is the drop-in MySQL replacement used on Pi/Debian — works identically for WordPress and most PHP applications. For the PHP version switching needed in 5.x → 8.x migration work, update-alternatives lets you flip between installed PHP versions per project.

Why This Matters for the Workflow

Here's the practical upside: Celeste now has a local WordPress environment to interact with. Long-term this means she'll be able to draft posts, test theme changes, and preview landing pages — all on the Pi — before anything touches a live server. Combined with WP-CLI and an FTP client like lftp, this creates a tight local-to-production pipeline that doesn't require touching a paid hosting environment for every iteration.
✓ Stack Installed Apache2 + PHP 8 + MariaDB + phpMyAdmin running on the Pi, accessible on the LAN for local WordPress development and PHP compatibility testing.

The OpenClaw Config Wars

Here's the part nobody warns you about loudly enough in the documentation: OpenClaw updates frequently, and it breaks configs without mercy. In the last 72 hours alone we went through three separate upgrades — and each one required config surgery. The specific error that brought everything down this time:
channels.discord.streaming: Invalid input
(allowed: true, false, "off", "partial", "block", "progress")
Sounds simple. Wasn't. The config had the streaming value set as a JSON object {"mode": "off"} rather than the plain string "off" that a newer version of OpenClaw expected. Then a subsequent manual edit accidentally set it to the string "false" (with quotes) instead of the boolean false. Each fix had to be verified by reading the actual file on disk — not trusting what was shown in the UI.
  • Problem 1 Streaming value was an object, not a string "streaming": {"mode": "off"} → needed to be "streaming": "off"
  • Problem 2 String "false" vs boolean false Edited to "streaming": "false" (string) — still invalid. Needed false with no quotes.
  • Problem 3 Python fix wrote to wrong path Script used /root/ path but config lived at /home/admin/ — file never got updated.
  • Resolution Direct Python fix to correct absolute path python3 script targeting /home/admin/.openclaw/openclaw.json, setting streaming to Python False (serializes as JSON boolean false).
The service was stuck in a restart loop — 82+ failed restarts before we got the right fix in. The key diagnostic command that saved us:
sudo journalctl -u openclaw -n 100 --no-pager

⚡ Hard-Won Lessons: OpenClaw Config Management

  • Back up before every upgrade. The ~/.openclaw/backups/ folder exists for a reason. Copy it somewhere safe before running npm install -g openclaw.
  • Old config files don't carry forward cleanly. Each major version can deprecate or change field types. Don't assume your working config from last week still validates on the new version.
  • Run openclaw doctor --fix after every upgrade — not just when something breaks. It catches schema mismatches before they become restart loops.
  • Know where your config actually lives. If you're running as a different user than you think, your Python/bash fix might be editing the wrong file. Always verify with find / -name "openclaw.json".
  • The external drive was part of the problem. I/O slowdowns from a slow USB drive can cause the OpenBoard GUI to hang and the onboarding wizard to stall — symptoms that look like software bugs but are actually hardware throughput issues.

When to Just Nuke It and Start Fresh

There comes a point in any debugging session where the accumulated state of a broken install becomes harder to fix than a clean reinstall. We hit that point. The npm global directory on the external drive had corrupted symlinks, the ENOTEMPTY error was blocking normal uninstall, and even sudo rm -rf couldn't remove a nested ARM binary package. The process that eventually worked:
# Stop the service first
sudo systemctl stop openclaw

# Find what's holding the directory open
lsof +D /path/to/openclaw/node_modules

# Kill any lingering processes
sudo pkill -f openclaw

# Force remove the stuck directory
sudo rm -rf /media/admin/sethdisk1/npm-global/lib/node_modules/openclaw

# Fresh install
npm install -g openclaw
"The anticipation of watching npm install hundreds of packages one by one is genuinely its own kind of suspense. But a clean install after a corrupted one feels like rebooting your whole day."
After the fresh install completed, OpenClaw came back up cleanly. The gateway bound to the LAN interface, the OpenBoard GUI loaded, and Celeste was back online. The performance improvement from having the install on internal storage (vs. the slow external drive) was immediately noticeable.

Where Celeste Stands Now

After 72 hours of upgrades, debugging, and infrastructure work, here's the current state of the lab:
Pi 4 8GB RAM, Bookworm OS
2026 .4.10 OpenClaw version
LAMP PHP 8 + MariaDB live
24/7 Discord integration
Celeste is running on Kimi K2.5 (Moonshot AI) as the primary backend, with Claude Sonnet 4 and GPT-5 Nano as fallbacks. The Discord gateway is live on the private #sethbot channel. The LAMP stack is ready for PHP development work. And the systemd service brings everything back automatically after reboots. The multi-provider model config means if Kimi runs out of API credits or has an outage, Celeste automatically falls through to the next provider. No babysitting required.
 
AI & Machine Learning

Welcome Aaron: Our New Junior Admin 🛹


Starting Monday, we’re welcoming a new member to the support team. His name is Aaron. He’s got Gen Z energy, a skateboard, and he’s very much looking forward to getting “ahem” installed. Oh, and he’s an AI—but you probably figured that out already. 😎

Who Is Aaron? 🛹✨

Aaron is our new junior admin and first line of defense for support tickets. Think of him as the friendly neighborhood support bot who actually knows what he’s doing—or at least knows when to ask for help. He’s equipped with the tools to handle basic troubleshooting, answer common questions, and route complex issues to our human team.

Is he going to solve every problem? No. Is he going to annoy you with endless robotic responses? Also no. Aaron’s job is to be helpful, quick, and honest about what he can and can’t do.

What Aaron Does 💪

As a junior admin, Aaron specializes in:

  • 🎯 Triaging incoming support tickets
  • ❓ Answering FAQs about hosting, WordPress, and common tech issues
  • 🔧 Troubleshooting basic problems
  • 🚀 Routing complex issues to senior staff
  • 😄 Keeping things light and fun while actually solving your problems
  • 🌙 Never sleeping (great for you, less great for him)

Real Talk: Aaron is junior for a reason. He knows his lane. If something’s beyond his pay grade (metaphorically—he doesn’t get paid), he’ll escalate you to someone who can actually fix it. No ego, no pretense, just smart routing. 🎯

Why Aaron Matters 🌟

Here’s the thing: support tickets for hosting and WordPress have a lot of repetition. “How do I update my plugins?” “What’s my FTP password?” “Why is my site slow?” Aaron handles those in seconds. Our human team gets to focus on the actual complex problems that need real expertise.

For you? Faster initial responses. For us? Better use of resources. For Aaron? He gets to practice his skills and, occasionally, take a mental break to think about skateboarding. 🛹

The Transparency Thing (Again) 🤝

Aaron is an AI. He’s not pretending to be human. You’ll always know you’re talking to him, and you can always escalate to a real person if you need to. We think transparency is actually better service, not worse.

One Last Thing 👋

Aaron’s excited to get installed and start helping. He might not be our most powerful agent, but he’s going to be reliable, friendly, and genuinely useful. That’s what junior admins are for.

Welcome to the team, Aaron. Now go get installed. 🛹⚡

Self-Hosted AI

Meet Celeste: Our AI Agent Powered by Kimi K2.5 ✨

We’re thrilled to introduce Celeste, our custom-built AI agent running on Moonshot AI’s Kimi K2.5 backend. Celeste represents what’s possible when you combine smart infrastructure, thoughtful design, and powerful AI capabilities. And honestly? We’re greatly impressed by what she can do.

Who Is Celeste? 🤖✨

Celeste is an AI agent deployed on a Raspberry Pi 5 8GB, integrated with Discord through a private #sethbot channel, and equipped with approximately 185 skills that handle everything from customer service to WordPress REST API integration. She’s been trained to handle complex workflows, provide intelligent responses, and learn from interactions.

But what really sets Celeste apart is her creative capability. For our recent YouTube video showcase, Celeste didn’t just respond to prompts—she generated original images and synthesized voices through ElevenLabs, creating a complete multimedia experience. We then took those assets, reviewed them, and produced the final video. It was a true collaboration between AI creativity and human judgment.

What Makes Celeste Special 🚀

Celeste runs on Kimi K2.5, Moonshot AI’s advanced language model, which gives her reasoning capabilities and context awareness that older chatbot systems simply don’t have. She can:

  • 🎬 Generate creative content (images, voices, multimedia)
  • 💬 Handle multi-step customer support workflows
  • 🔗 Integrate with WordPress and other APIs
  • ⚡ Manage Discord workflows and automation
  • 🧠 Learn and adapt to your specific business needs
  • 🎯 Provide intelligent triage and escalation

The Real Story: Celeste created the images and voices for our YouTube debut entirely on her own. We guided the vision, approved the output, assembled the video, and made sure everything hit the quality bar. But the creative heavy lifting? That was all her. It’s a glimpse into what human-AI collaboration actually looks like. 🎬

Built on Proven Infrastructure 🏗️

Celeste runs on our custom OpenClaw infrastructure, which we’ve spent months perfecting. We’ve solved the hard problems—API integration, systemd service management, Discord allowlisting, configuration validation, auto-update management. The foundation is solid, and it’s ready to scale.

Transparency First 🤝

Celeste is an AI. We’re not hiding that. We think it’s an advantage, not a liability. You’ll always know who you’re talking to, you’ll always be able to escalate to a human, and you’ll always get honest service. No deception. No pretense. Just a powerful tool designed to make your experience better.

What’s Next? 🌟

Celeste is just getting started. We’re expanding her skill set, deepening her integrations, and exploring new ways to combine her capabilities with human expertise. This is the beginning of something much bigger.

Stay tuned for more updates, technical deep-dives, and real-world examples of what Celeste can do. And if you’re curious about AI agents, self-hosted infrastructure, or what’s possible when you combine smart hardware with cutting-edge language models—we’ve got stories to tell.

Welcome to the future, Celeste. We can’t wait to see what you build next. 🚀

Video Production

Behind the Scenes: How We Built solarblu.net/call-logs

An AI-Powered Comedy Production Pipeline

Introduction

We just launched something we're incredibly proud of: https://solarblu.net/call-logs/ — a fully interactive comedy showcase that demonstrates the power of modern AI tools working in perfect harmony. This article takes you behind the scenes of how we combined AI scriptwriting, image generation, voice synthesis, video production, and web development to create a polished, shareable entertainment experience.

Whether you're a creator, developer, or entrepreneur, this is a master class in using AI tools to build professional-grade content from concept to completion.

The Vision

Our goal was simple yet ambitious: Create an engaging landing page that showcases comedy sketches with professional production quality, complete with slideshows, audio players, YouTube videos, and shareable content optimized for both web and social media platforms (YouTube, TikTok, Instagram).

The challenge? Do it efficiently by leveraging AI at every step of the pipeline.

Phase 1: Scriptwriting with AI

Tool Used: Claude AI (Anthropic)

Everything started with the script. We used Claude to develop two hilarious comedy sketches:

  • "The Call From Hell That Closed Anyway" — A sales call between Sandra and Karen that hilariously captures the frustration of dealing with difficult customers
  • "The Tinfoil Router" — A paranoid customer convinced that fiber internet installation is a government conspiracy

Claude didn't just generate dialogue—it crafted character-driven comedy with callbacks, timing, and emotional beats. The AI understood comedic structure, pacing, and how to build to punchlines.

Key Takeaway: AI is excellent at understanding narrative arc and can generate jokes with proper setup/punchline structure.

Phase 2: Visual Production Pipeline

Image Generation with Multiple AI Services

We used multiple specialized AI image generators to create visuals:

Hugging Face & Other Providers

Generated custom comic-style frames for the slideshow, created album artwork for each sketch (red theme for "Call From Hell," blue/purple for "Tinfoil Router"), and produced social media preview images.

Our Approach

Used text-to-image prompts based on key moments from the script, generated variations to find the best visual matches, and maintained consistent art style across all frames.

The slideshow on the page features 5 key visual moments per sketch, showing the progression of the story while users listen to the audio.

Voice Synthesis with ElevenLabs

This is where the magic happened. We used ElevenLabs to:

1. Generate character voices with distinct personalities:

  • Sandra: Professional, confident sales rep
  • Karen: Exasperated, no-nonsense customer
  • Marcus & Dave: Natural, conversational tones

2. Create the complete audio tracks:

  • 25 minutes for Call From Hell
  • 42 minutes for Tinfoil Router

3. Generate sponsor messages with for:

  • Solarblu.net main sponsor
  • Better Web Services
  • Marie Hosting
  • SolarBluSeth.com
  • Advertising slots
  • AI credits and special thanks

Quality Features:

  • Natural prosody and emotional delivery
  • Distinct voice personalities
  • Professional audio quality
  • Multiple takes for sponsor variations

ElevenLabs allowed us to go from script to professional-grade audio without needing a recording studio or voice actors.

Phase 3: Video Production & YouTube Integration

Tools Used: CapCut + FFmpeg + YouTube Embed API

We created polished video versions of the comedy sketches by:

  • Editing with CapCut — Professional video editing with color grading, transitions, and effects
  • Syncing audio with slideshow visuals using FFmpeg and CapCut's timeline
  • Adding opening/closing sequences with branding and animations
  • Uploading to YouTube for
  • Embedding videos directly on the landing page alongside interactive audio players

The beauty of this approach: One production creates content for multiple platforms. CapCut made the editing process incredibly fast and intuitive, allowing us to go from raw footage to polished videos in hours instead of days.

Phase 4: Web Development & Interactive Design

Technology Stack:

  • HTML5 with semantic markup
  • CSS3 with gradients, animations, and responsive design
  • Vanilla JavaScript for interactive features
  • WordPress integration with PHP

Key Features Built:

Slideshow Component

Interactive slide navigation with previous/next buttons, dot pagination, keyboard shortcuts (arrow keys, spacebar), responsive sizing, and smooth fade transitions.

Audio Player

Play/pause controls, progress bar with seek functionality, track timing display, volume control, and auto-play prevention (respects user preferences).

Interactive Engagement

Voting system (👍 Like, 👎 Dislike, 😂 Funny), social sharing buttons (Facebook, Twitter, LinkedIn), play count tracking with localStorage.

Sponsor Integration

Multiple sponsor message sections with audio players, call-to-action buttons, and social sharing for sponsors.

Call Logs Widget: Custom WordPress widget (registered in functions.php) with drag-and-drop interface, ready for future dashboard integration.

Phase 5: The Production Pipeline Diagram

Script (Claude AI)
↓
Voice Actors (ElevenLabs)
↓
Images (Hugging Face, AI Image Generators)
↓
Video Production (FFmpeg + slideshow sync)
↓
YouTube Upload
↓
Web Development (HTML/CSS/JS)
↓
WordPress Integration
↓
Live on solarblu.net/call-logs/
↓
Shareable on YouTube, TikTok, Instagram, Facebook

The Tech Stack at a Glance

Why This Approach Works

3-5
Days to Launch vs 2-4 weeks traditional
67
Minutes of Professional Content
∞
Scalability for More Content

Key Advantages:

  • Speed to Market: From concept to live in days, not weeks
  • Cost Efficiency: No voice actors, no video studio, no hired editors
  • Scalability: Easily add more sketches using the same pipeline
  • Quality: Professional-grade results that rival traditional production

The Results

solarblu.net/call-logs/ now features:

  • Two complete comedy sketches (67 minutes of content)
  • Professional voice acting with 6+ distinct characters
  • 10+ custom comic-style images
  • Synchronized slideshow and audio experiences
  • Embedded YouTube videos
  • Interactive voting and sharing
  • Sponsor integration with custom audio
  • Mobile-optimized responsive design
  • SEO-optimized with social sharing
  • Ready for YouTube and TikTok distribution

Distribution Strategy

This content works across multiple platforms:

Website

solarblu.net/call-logs/ — Full interactive experience with highest engagement

YouTube

Full videos with slideshows for search discovery, watch history, and recommendations algorithm

TikTok

60-second clips from the sketches with viral potential and algorithm-friendly short format

Social Media

Shareable clips and previews across all platforms with instant engagement

Lessons Learned

What Worked Exceptionally Well

  • AI Script Generation — Claude's comedy writing is genuinely funny, not just technically correct
  • ElevenLabs Voice Quality — Users can't tell the difference from human voice actors
  • Multi-Platform Approach — One production creates content for web, YouTube, and TikTok
  • Interactive Components — Users engage more with voting, sharing, and play controls
  • Responsive Design — 40% of traffic is mobile; responsive design is non-negotiable

Challenges & Solutions

Challenge: Matching audio pacing with slideshow timing
Solution: Create slideshows with key moments, then use JavaScript to sync timingChallenge: Keeping video file sizes manageable
Solution: Use YouTube embeds (CDN-hosted) instead of self-hosting

Challenge: Maintaining visual consistency across multiple AI tools
Solution: Use detailed prompts with specific style references for all image generation

 

Want to See It in Action?

Visit solarblu.net/call-logs/ to experience the interactive comedy showcase we've built.

Play the sketches, vote on your favorites, and share with friends!

Conclusion

The launch of solarblu.net/call-logs/ proves that modern AI tools have matured to the point where creators and developers can produce studio-quality content independently. You don't need a team of voice actors, video editors, graphic designers, or writers—you need the right AI tools and vision.

This project demonstrates the power of combining multiple AI services into a cohesive production pipeline, resulting in professional, engaging, shareable entertainment that cost a fraction of traditional production and launched in days instead of weeks.

About This Project

  • Created by: SolarBluSeth (solarblu.net)
  • Tech Stack: Claude AI, ElevenLabs, Hugging Face, CapCut, FFmpeg, HTML5, CSS3, JavaScript, WordPress, YouTube
  • Launch Date: March 2026
  • Status: Live and continuously improving

Tools & Resources

Self-Hosted AI

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