I’m Matthew Hunter, a programmer, sysadmin, and CISSP security officer. I’ve been building software and tinkering with Linux since the late 90s. This site is home to my projects, writings, and occasional musings on gaming, technology, and life.

Operational Lessons from 1,500 Memstore Facts

By Matthew Hunter |  Mar 26, 2026  | memstore, mcp, claude-code, information-retrieval

Building a persistent memory system for AI agents is one problem. Operating it at scale is a different one. After two months of daily use, memstore holds around 1,500 active facts across a dozen projects — project architecture, coding conventions, design decisions, cross-cutting invariants, and roughly a thousand symbol-level descriptions generated by running an LLM over every Go function in every codebase I work on. The system works. The recall pipeline surfaces relevant context on every prompt without manual search. But getting from “works” to “works well” required a series of scoring adjustments, noise filters, and feedback mechanisms that the original design didn’t anticipate.

Fact Supersession: Version Control for Knowledge

By Matthew Hunter |  Mar 25, 2026  | memstore, knowledge-management

Most memory systems for AI agents treat knowledge as a key-value store. Write a fact, overwrite it later, old value is gone. That works for simple preferences — “use dark mode” doesn’t need a paper trail. But knowledge that evolves over time is a different problem. When a design decision turns out to be wrong, or a project’s architecture shifts, or a dependency gets replaced, you don’t just want the current answer. You want to know what you believed before, when it changed, and ideally why. Losing that history means losing the reasoning trail, and reasoning is the expensive part. Memstore’s supersession system brings version control semantics to AI memory: facts get replaced, not erased, and the full chain of revisions is preserved.

Traefik

By Matthew Hunter |  Mar 25, 2026  | software, homelab, networking, tool-library

Traefik is an open source reverse proxy and load balancer built for containerized environments. Its defining feature is automatic service discovery: point it at a Docker host, add labels to your containers, and Traefik provisions routes as services come up without manual configuration. I’m using it as the front door for my homelab, handling TLS termination via Let’s Encrypt and routing traffic to the appropriate backends. Getting there involved some genuine frustration. Running it is largely painless. On balance, it’s highly recommended—but go in knowing that “simple setup” undersells the actual process.

Umami vs Plausible

By Matthew Hunter |  Mar 25, 2026  | software, homelab, analytics, tool-library

Both Umami and Plausible are open source, privacy-focused web analytics platforms that run in Docker, collect visitor metrics without cookies, and position themselves as GDPR-compliant alternatives to Google Analytics. I ran both simultaneously on my personal sites to decide which to keep long-term. My conclusion was Umami, and it wasn’t particularly close once I moved past surface aesthetics. The deciding factors were practical: API flexibility, navigational coherence, and—counterintuitively—Plausible’s own setup flow working against it. Plausible is marginally prettier in places, but it squanders that advantage with some genuinely puzzling navigation decisions.

Uptime Kuma

By Matthew Hunter |  Mar 25, 2026  | software, homelab, monitoring, tool-library

Uptime Kuma is an open source, self-hosted monitoring tool that tracks the availability of your services and alerts you when something goes down. After a few weeks of running it via Docker Compose to monitor both my homelab services and sites running on external hosting, my overall impression is quite positive—but there are some structural concerns that may send me looking for alternatives down the road.

Setup and First Impressions

Getting Uptime Kuma running is straightforward. A single service in a Docker Compose file, a volume for persistence, and you’re at the web interface within minutes. There’s no separate database server to configure, no complex dependency chain—it uses an embedded SQLite database and handles everything through the browser.

Proactive Context Injection with Claude Code Hooks

By Matthew Hunter |  Mar 24, 2026  | claude-code, mcp, memstore

Claude Code sessions start with amnesia. Every conversation begins cold — no memory of what you worked on yesterday, what invariants matter in the file you’re about to edit, or what tasks are still pending from last week. CLAUDE.md helps by injecting static project context, and MCP tools let the model search for facts on demand. But both of those require something to go right first: either the static file happens to cover the relevant topic, or the model decides to search before acting. In practice, the model often doesn’t search. It plows ahead with what it has, and the most valuable context — the constraint you documented last Tuesday, the task you left half-finished — stays in the database unsurfaced. This post is about closing that gap with hooks: small scripts that fire at specific points in the Claude Code lifecycle and inject relevant context automatically, before the model even knows it needs it.

Building Persistent Memory for AI Agents

By Matthew Hunter |  Mar 23, 2026  | memstore, mcp, claude-code, sqlite

AI coding assistants are goldfish with a PhD. They can solve complex problems within a single session — refactoring a module, debugging a race condition, designing an API — but the moment the conversation ends, everything they learned about your project evaporates. After months of building software with Claude Code, I found myself re-explaining the same project conventions, the same architectural decisions, the same mistakes we’d already caught and fixed, at the start of every session. CLAUDE.md files help, but they’re static and they don’t scale. You can’t stuff a dozen projects’ worth of design context into a single markdown file. So I built memstore: a persistent memory system that gives AI agents durable, searchable knowledge across sessions, projects, and machines.

Ubiquiti Mission Critical Switch

By Matthew Hunter |  Mar 13, 2026  | networking, ubiquiti, unifi, hardware

The Ubiquiti USW Mission Critical is a rare device that combines several features you’d normally need separate hardware for: a managed 1GbE PoE switch, an integrated UPS battery backup, and two remotely controllable AC power outlets—all in a single 1U rackmount chassis. The intended use case is keeping your cameras recording and your internet connection self-healing during power outages, and it does that well. In my setup, eight cameras draw only about 23% of the 240W PoE budget, leaving substantial headroom. The AC outlets can be power-cycled remotely or automatically if internet drops—handy for rebooting a flaky modem. The main drawbacks are the unit’s unusual depth, which can cause clearance issues in shallow racks, and the lack of automated graceful-shutdown support for connected devices when the battery runs low.

Ubiquiti Switch Pro Max 16 PoE

By Matthew Hunter |  Mar 10, 2026  | networking, ubiquiti, unifi, hardware

The Ubiquiti USW-Pro-Max-16-PoE occupies an awkward middle ground between a central rackmount switch for an entire building and the smaller Flex switches aimed at prosumer or satellite use cases. The sixteen ports are split unevenly: four run at 2.5GbE with PoE++, while the remaining twelve are 1GbE only, which means you need to think carefully about what gets plugged in where. Two SFP+ ports provide 10GbE capability, and the fanless design is a genuine plus for closet installations. In my setup it serves as a secondary closet switch with 10GbE uplinks in both directions, but for most use cases one of the Flex 2.5GbE 8-port models will be a better fit. The niche this switch fills is real but narrow.

Ubiquiti Camera G6 PTZ

By Matthew Hunter |  Mar 7, 2026  | networking, ubiquiti, unifi, hardware, cameras

I bought the Ubiquiti Camera G6 PTZ to replace a failed G4 camera on a corner mount, with the plan of using patrol mode to cover a broad arc and the zoom function to pick up details from a distant, otherwise-uncovered space. It has worked well for both purposes. The camera is larger than expected—the pan-tilt mechanism adds a conspicuous cylinder that’s less discreet than a dome—and the PTZ controls take some trial and error to learn, but the image quality is good and patrol mode is easy to configure once you know the basics. Aside from a puzzling Fast Ethernet connection speed, the overall impression is positive.

About
Navigation