Token Economy Audit: Preserving Metered LLM Quota

When you run an AI agent on metered LLM providers — subscription plans with session windows, weekly allotments, and fallback headroom — the constraint isn’t cost per thousand tokens. It’s quota burn rate: how fast you exhaust your session window or weekly limit, and how much of that burn is structural waste you never see. I run Hermes Agent on Ollama Cloud as my primary provider, with OpenAI Codex and OpenRouter as fallback lanes....

July 3, 2026 · 9 min · Shane Greaves

Tiered Memory Graduation: Don't Delete, Promote

When you run an AI agent like Hermes Agent with a memory system, you quickly hit a wall: the built-in memory has a hard character limit. When it’s full, the agent silently deletes old entries to make room for new ones. Those facts — important enough to survive in the memory budget for weeks — just vanish. This is a known problem in the Hermes Agent community. Users on r/hermesagent regularly ask about memory management....

July 3, 2026 · 5 min · Shane Greaves

Fixing Empty Responses from a Local LLM

The Symptom I spent some time chasing a frustrating failure mode in a self-hosted agent stack: the model was clearly alive, but some requests came back empty, or with enough hidden reasoning overhead that the whole system felt sluggish. The confusing part was that the usual “is the service up?” checks all looked fine. The API responded. The model was loaded on the GPU. Short prompts worked. Health checks passed. But once the prompts got larger, the system started to misbehave in ways that were hard to separate:...

May 31, 2026 · 3 min · Shane Greaves

Automating Hugo Blog Deployment with Gitea Actions and Ansible-Pull

Introduction Today I modernized my Hugo blog deployment pipeline by replacing a Rundeck webhook with a fully automated Gitea Actions workflow using ansible-pull. This was a fantastic learning experience that taught me about pull-based configuration management and GitOps principles. The Old Way: Rundeck Webhook Previously, pushing to the main branch would trigger a Rundeck webhook that orchestrated the entire build and deployment process. While this worked, it had some drawbacks:...

October 19, 2025 · 4 min · Shane Greaves

Swarm Ingress with frr

I’m running a 3 node Docker Swarm cluster running one manager and two workers. I’ve been in the process of gradually migrating my services over to the cluster. I am at the point now where I want to set up a traefik reverse proxy instance inside the swarm. I’m currently running two traefik reverse proxy instances on standalone docker instances, one for internal services and the second handles external services that come in via a Cloudflare tunnel in my DMZ network....

When Thinking Breaks Your Tools: Debugging Qwen Tool-Calling Corruption

The Symptom Cron jobs started returning this odd refusal: [System Limitation Notice] I am an AI assistant and cannot actually execute bash scripts... Except the agent can execute bash. That’s literally its job. The refusal was fake — a content filter hallucination triggered by something else going wrong deeper in the stack. The Real Problem Qwen3.5 was dumping its internal reasoning monologue into the tool-calling JSON. When calling Qwen via OpenAI-compatible /v1/chat/completions with tool definitions, the model should generate clean JSON like:...

June 2, 2025 · 3 min · Shane Greaves

Week12

Added Obsidian to my workflow Week 12 was a very productive week for me. While I have been using obsidian for the last couple of months, I had not committed to it fully. I was ignorant of its potential or the possibilities. I did have a problem to solve, I’ve been using Standard Notes for the last couple of years and I was not very happy with it. It’s seemed like I needed to pay for it to be able to access the features that would get my notes to function as my second brain....

First Post on Hugo Blog

Hello World! I have been meaning to resurrect my blog for quite awhile but after getting distracted by various shiny things. The hardest part was deciding what tools to use. I thought about using WordPress but opted to move to using ghost. After getting Ghost up and running I thought it was too heavy and I needed only a static site. Hugo is up and at some point I am going to move all the post over from my old WordPress blog....

Freenas and CyberPower UPS

I got a CyberPower UPS to protect my Freenas box. I connected the included UPS cable and I noticed these errors in dmesg and the UPS service would not start. ugen2.4: at usbus2 (disconnected) ugen2.4: at usbus2 ugen2.4: at usbus2 (disconnected) ugen2.4: at usbus2 ugen2.4: at usbus2 (disconnected) ugen2.4: at usbus2 ugen2.4: at usbus2 (disconnected) ugen2.4: at usbus2 ugen2.4: at usbus2 (disconnected) ugen2.4: at usbus2 ugen2.4: at usbus2 (disconnected) ugen2.4: at usbus2 ugen2....

October 7, 2018 · 1 min · Shane Greaves

RT5370 Wireless Adapter won't connect to network after upgrade to Ubuntu 17.04.

I’ve Upgraded my Ubuntu box to Ubuntu 17.04 to fix one issue and created another issue. This after my USB WiFi card would not connect to the network. I could see the network and it would try to connect but timed out after a minute or so. lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 17.04 Release: 17.04 Codename: zesty lsusb Bus 002 Device 003: ID 148f:5370 Ralink Technology, Corp....

November 12, 2017 · 1 min · Shane Greaves