AI Agents, Self-Hosting, and Learning to Let Go of the Code

AI Agents, Self-Hosting, and Learning to Let Go of the Code

It’s been a busy few weeks. Between launching the website, testing new models, and handing more and more of my infrastructure over to AI agents, there’s a lot to write up. So here’s a bit of a grab-bag update.

Prompt Caching Works… Mostly

I learned that prompt caching is a real thing, and when it works, it works well — noticeably faster responses and lower costs on repeated context. The catch: if you’re running Anthropic’s models through OpenRouter, caching appears to be broken, or at least it needs some agent-side configuration I haven’t cracked yet. If anyone’s figured out the right flags to get this working through OpenRouter, I’d love to hear about it.

The Website Is Live

I finally pulled the trigger and released the site: ajvc.dev

The fun part isn’t just that it’s live — it’s how it’s being run. The site is maintained by a dedicated instance of Hermes (my AI agent harness). It pulls articles from RSS feeds, summarizes them, and posts links to the ones it finds interesting.

Working on the site has honestly been a joy. I tell Hermes what I want in plain English, it goes off, makes the changes, and deploys them straight to production. It’s like having a small team of developers and DevOps engineers on call — except I never have to review a PR at 11pm. It’s freed me up to focus on what the site should do rather than how it’s built.

The Self-Hosted Stack

I got some good feedback on earlier posts asking me to add more detail and links to the projects and systems I self-host. Here’s the current lineup:

I’ll probably do a dedicated post on how these all fit together at some point, since a few people asked for that specifically.

Skills Are Portable

Been testing more things on a spare Hermes install. One nice discovery: migrating skills between instances is trivial — just copy the relevant folder from .hermes/skills over to the new instance. No export/import dance, no config wrangling. It just works.

Prompting as the Next Abstraction Layer

The more I do this, the more prompting feels like just another layer in the same stack we’ve always had: assembly, then compilers and interpreters, and now prompting — with the added twist that it also handles deployment and execution.

I keep coming back to something Linus Torvalds has said: we don’t say an app was “developed with compilers,” so why do we insist on saying it was “developed with AI”? At some point this stops being a novelty and just becomes how software gets built.

Testing MiniMax M3

Found MiniMax M3 and it looks promising — testing is ongoing. Early impressions:

A Confession: I Started Vibe Coding

I’ll be honest — vibe coding has pulled me away from my original intent of using AI to learn broadcasting principles. What started as “let AI help me understand the fundamentals” has drifted into “let AI just build the thing.” Not necessarily a bad outcome, but worth naming, since it’s a different goal than the one I started with.

Case in point: I spent the past month vibe-coding an app to help me analyze logs, mostly using MiniMax M3, and ended up with a working app.

Then I Brought in Claude Code

A few days ago I switched over to Claude Code with Sonnet 5 to review the log-analysis codebase for issues. In under five minutes it found a number of problems — and then just went ahead and fixed them.

Some observations comparing the two:

The Joplin Notes API: A Case Study

This one’s worth its own section. I wanted a way for Hermes to read my Joplin notes. MiniMax M3’s best solution was a port redirect of the Web Clipper running on a Windows VM with the Joplin client installed — functional, but very resource-hungry.

I asked Claude to solve the same problem. In under five hours, I had a working API running in a Docker container right next to the Joplin Server — a fraction of the resource footprint.

Claude wrote the entire thing. I gave it a test VM to build and run against, installed Docker and the dependencies, and let it iterate until everything was tested and working. Once satisfied, it committed the code to a GitHub repo on its own, then walked me through configuring the Docker Hub API so it could set up GitHub Actions to auto-deploy the container to Docker Hub.

Links if you’re interested:

The Catch

The biggest downside with Claude right now is access. Using it on Hermes requires API access, and that doesn’t appear to be included in the Pro plan as far as I can tell. So for day-to-day agent work I’m still on MiniMax M3 — now through OpenRouter, since I cancelled my direct MiniMax plan.


That’s the state of things for now. More to come as I keep pushing on the Hermes setup and figure out what else I can hand off.

← Home