Skip to content

Three Short Months of Claude Code

On r/self-hosted today someone asked the question: What have you vibe-coded for yourself only? My desk is covered with test equipment: switch, NAS (mac mini running FreeBSD), raspberry pis. Since mid-January, I used Claude Code to create Version 1.0 of my home lab.

  1. Prototype a CMS: Wrote a configuration management system prototype using makefile, shell, yq: I don’t want python or a JVM in my systems, and I wanted to experiment. From what I learned, I will probably build a fully-fledged CMS app over the summer. Although I run primarily on FreeBSD, it will have Linux integration. If it’s stable and I like it, I’ll release it as open source.

  2. Reverse Proxy Web Server: Placed an HAProxy in front of my web server jails to use one IP for all host managed servers.

  3. Self-Hosted Source Control: Installed Forgejo source control backed by Postgres to track my CMS prototype.

  4. Local Package Cache: Added a jail running a FreeBSD package and base image cache along with a local packages server.

  5. Jailed Time Machine: I already had samba running for Time Machine for my MacBook. I used ai to move samba and the ZFS datasets into a jail and also separate samba from mDNS. I may open source both items when I have stable and useful versions. FreeBSD and Linux are targets. It’ll have some security and recovery features missing from the typical tutorials.

  6. Jailed Home Automation: Stood up my bespoke home automation system inside a jail on the host. I wrote this years ago and plan to use ai to add some new features like garage door control.

  7. Built this Website: Configured a website on AWS to post my blog. Use Obsidian for writing posts, check in to Forgejo from my laptop, pull in a jail and send to AWS for draft, staging and production versions. Process documented here. Can also test on the local network from the jail. Handles images at the laptop by reducing their size. I coached the AI although it devised some aspects. It used Terraform to set up the AWS artifacts, but the next iteration will use CDK and a small tarball library I wrote a couple of years ago when I first attempted this project. The library is a great bit of tech designed for the purpose of streaming a huge pile of files into S3.

  8. Jailed a Jump Server: Jailed a version of Tailscale that tolerates WAN drops despite not having a dual wan router. I have a cell modem on my network providing a backdoor in, but not dual wan out. The jail detects cable modem drops and swaps in a route to the cell modem. A prototype for when I set up an HA router next month: 2 routers, 2 modems, 3 switches.

  9. Built Monitoring Dashboards: Created monitoring dashboards with Grafana, Loki, Prometheus, Alloy. I iterated with the ai until I was satisfied. CPU, network, memory, jails, syslog errors, temperature, backups, file system usage, ZFS, and on and on.

  10. Smartscan Disk Service: Disk test tool in FreeBSD for smart analysis. Scanned four 1TB SSDs, four 20TB HDDs.

  11. Stomped Out Bugs: Found and filed numerous bugs in various products including in Debian. For Debian, I insisted with the AI we run Debian and the target software in a vm on FreeBSD bhyve so I could check the bug was in base and not just the port. The FreeBSD port uses an out of date version of Loki (2.9.2). At the developer’s request I re-ran the tests to demonstrate the bug existed in the latest supported versions (2.9.17 and 3.6.10).

  12. Leveled Up Network Gear: Cleaned up my Cisco networking equipment and leveled up its security using the AI tool to analyze configs and syslog data. Found some hardware problems with connected devices and have fixes or upgrades planned.

  13. Found Corrupted Memory Card: The AI taught me how to use Memtest86+ (open source) and I scanned six 8GB DDR3 memory cards. Looked for memory corruptions on used ddr3 boards purchased on eBay. Everything came back clean except a computer purchased 2 years ago that had memory faults and that I was using as my main NAS/lab. I swapped in some of the newer memory, completed another check and got it back up in “production”. That was just this morning.

Did all this and more in three months using Claude AI.