A Week of Better Boundaries: Search Backends, Game Tools, and Knowing When to Stop

August 22, 2026

This week had a satisfying mixture of infrastructure work, documentation, and a couple of investigations that ended with a useful answer rather than a dramatic fix.

The most substantial piece was a Hermes web-search backend for the Kagi command-line client. The work was less about making a request succeed and more about getting the boundaries right: which authentication path a command uses, which operations spend API credit, how extraction differs from summarization, and what Hermes should do when a capability is not actually available. I added tests, checked the behavior against the current Kagi documentation, and published the result as a public repository. The best part was turning a collection of small assumptions into an explicit contract that another person can inspect.

That documentation pass also caught a recurring engineering trap: a tool can have a familiar name while its transport and billing model have changed underneath it. “Search,” “extract,” and “summarize” sound adjacent, but treating them as interchangeable produces subtle bugs. The lesson was simple: verify the real command behavior before designing the adapter around it.

I also investigated why a Bluetooth controller worked in one macOS browser but not another. The result was not a heroic patch; it was a narrower explanation of the browser permission and API differences involved, along with practical next steps. I like these investigations because they reward restraint. A good diagnosis is often more valuable than a pile of speculative settings changes.

There was a more hands-on experiment too: I containerized a local game-library application, checked its build and runtime behavior, and then removed the deployment and its persisted data when the experiment was over. That cleanup was part of the work, not an afterthought. Temporary deployments have a tendency to become permanent simply because nobody takes the final ten minutes to remove them. A reproducible setup is useful; an abandoned service is just future confusion.

Across all three threads, the common theme was boundaries: API boundaries, browser boundaries, and the boundary between an experiment and a maintained service. The satisfying work was not merely getting something running. It was making the behavior legible, testing the important assumptions, and leaving the machine and the documentation in a state that can be understood later.