AI Disclosure: Everything here is handwritten by me unless stated otherwise.
I periodically write updates about my homelab (ClamNet). It's been two years since the last one, and ClamNet has undergone major changes since then.
The most prominent change on the hardware has been moving to a proper, rack-mounted setup with many more hosts than before as well as more robust networking equipment. On the software side, I've moved away from manually-deployed services managed by docker compose files to Ansible-deployed services with podman, as well as NixOS.
I've also moved to mostly interacting with AI agents to develop ClamNet these days. I rarely do any manual coding anymore for this, (I can't think of an example in the last ~6mo when I did anything manually for this to be honest).
Hardware
Main Rack
Everything is centered around the main rack (named Salacia), which is a 19" wide, 15U tall, 18" deep Mojo rack. That sits inside a metal stereo cabinet with glass doors and wheels.
AI Use: An agent added the labels in this figure.
The blank plates for the Raspberry Pi section are 3D-printed! And so is the standoff at the top (directly above the "Mojo" label with the diamond-shaped holes). The standoff is because I measured the height of the rack incorrectly when I ordered it... But it also provides airflow!
The rear view of the rack is a disaster. I don't wanna talk about it.
Hosts
Most of the hosts are inside the main rack (shown above):
desktop: this doubles as my desktop and host for more resource-hungry services
haspi: Runs Home Assistant
clamclaw: Originally where lived, but now is general use for other services. now lives inside Paseo
oyster: Hosts any services which are available via the internet
mainclam: Hosts core infrastructure, e.g. DNS/Pangolin/etc
panopea: Hosts Frigate and has a TPU hat for CV
Networking Equipment
As shown above, I have a Unifi UDM-SE and USW-24-G2, as well as a Unifi AP (not pictured). My modem is an Arris SURFboard which I took out of its enclosure so I could add a fan and monitor its temperature. Most cables are CAT-6(e).
Cable Management
AI Use: I took a video panning across this and had an agent stitch together the images.
For cable management, I have four cable sleeves (some visible below), which have a few different destinations (shown above):
to the monitor: includes a USB webcam, monitor power, and DisplayPort
to the workbench: includes a USB hub going to desktop, as well as ethernet for the oscilloscope
to the inside of the desk: includes power extension, 6D mouse, regular mouse, keyboard, Bluetooth, USB hub, etc.
to AC power to the rack PSU and coax for internet
Cable sleeves visible when the desk is pulled away from the wall:
IOT Devices
Without giving a list of the specifics, here's the breakdown of the ~80 devices managed by Home Assistant. Zigbee is my preferred mesh network.
Lighting and controls — 17
Presence, access, and cameras — 16
Climate and environmental monitoring — 10
Power and energy — 9
Plants and pumps — 3
Pet care — 3
Audio, video, and interfaces — 11
Appliances and personal devices — 5
Connectivity and gateways — 10
Some notable mentions are a Tempest weather station and a solar-powered Meshtastic node connected to Home Assistant via Bluetooth.
Software
GitLab Deployment
For this iteration of ClamNet, I wanted to make everything as declarative as possible. That turned out to be (IMHO) a very good decision for agents to interact with it. Everything is either deployed via Ansible or NixOS with GitLab (self-hosted) runners (there are a series of runners on different hosts, both amd64/arm64).
Almost everything revolves around GitLab in one way or another. Everything from NixOS builds to Home Assistant configs is tracked in repos and deployed via runners. If it's not in GitLab, it's considered ephemeral.
AI Agents
Unless it's asking Claude a quick question in the web app, I only interact with agents via Paseo. For Anthropic/OpenAI models I use their respective harnesses. At the time of writing, I use GPT-6-Astra for most things. For I use Pi with GLM-5.3 via Ollama Cloud (via self-hosted LiteLLM), although I've not been interacting with it much lately. I have about a dozen MCPs (routed through self-hosted LiteLLM) that the agents can potentially use.
Inside Paseo I have different chats for different contexts/projects. Each of those usually has a GitLab repo associated with it which the agents push to and use runners for CI/CD, etc.
The setup itself for the agents isn't anything special to be honest, I've found that having self-hosted GitLab with runners be central to everything provides a huge anchor for the agents to grab and run with it in an effective way.
Self-Hosted Services
Sadly with the state of security on the internet right now, I'm hesitant to list a full, specific set of services I host. If you're familiar with self-hosting, it's nothing particularly surprising for the most part. In total there's ~50-80 services depending on how you count them.
To name just a few to give you an idea: Atmosphere PDS, personal website, Immich, Home Assistant, Paperless, ArchiveBox, ChangeDetection, Frigate, GitLab, Healthchecks, Hister, LiteLLM, n8n, ntfy, Pi-hole, Zotero, Grafana Alloy, Wazuh, Matrix Synapse, etc.
What's Next?
Local models: I would love to self-host open-weight models at some point. But I'm not willing to burn the (at the time of writing this) $16k needed to run GLM-5.3 with 2x DGX Sparks. At some point if hardware prices come down, maybe. But for now I'm content using models from the frontier labs. I have an RTX 5080 that I've run some much smaller models on, but I don't use them often.
Further security hardening: I've spent a lot of time hardening the security for all this, and given the state of affairs I will absolutely be spending even more time doing so.
In some ways I'm feeling very content with where things are. I've been self-hosting stuff for ~5yr now and it's a lot less time consuming to do all this with AI than it used to be, I've only started to use AI for self-hosting since early 2026. It's simply not as challenging to get something across the finish line as it used to be. Of course I could do things manually, but most of it's pretty routine at this point because my homelab is already (IMO) very mature.
For that reason, I'm becoming more interested in electronics/robotics projects. Also, my academic background is in theoretical physics. I interact with a lot of experimentalists at work and I think it would be very helpful to go through the struggle of learning some electrical engineering skills.
Overall, I've found that self-hosting things has brought me a lot of digital autonomy, and I think the same will increasingly soon be true of robotics and things that interact with the physical world.