Skip to content

Holidays are over

Hero

Happy New Year! I came back from the holidays to a mini-disaster that turned into a revelation.

The crash that proved the point

First day back, Claude Code decided to greet me with a version parsing crash: #16699. The fix required downgrading Claude to 2.0.76, nuking ~/.claude.json and the entire ~/.claude directory. All my agents, MCP server registrations - gone.

But there is good news! I was back up and running in under five minutes.

Having tested this setup repeatedly, recovery was just:

  1. Run ./scripts/install-agents.sh
  2. Reconnect to the Cognee MCP server
  3. Done

That felt good. The infrastructure works.

A deeper problem

But while I was fixing things, I kept thinking about something that's been bothering me for months: Claude Code's agent routing is non-deterministic.

Same prompt, different agent every time. No guaranteed workflow execution. Unpredictable behavior. I still have to remind Claude to use the agents half the time. Some days it works great. Some days I'm typing "please use the agent" like I'm training a puppy.

This just won't do.

What I'm building

So I've started designing (designing, not coding!) a CLI tool that handles routing deterministically. Code-based routing, not LLM interpretation. From my overview document:

Claude Code is great, but it has a frustrating limitation: it uses LLM interpretation for routing decisions. That means:

  • Same prompt, different agent every time (non-deterministic)
  • No guaranteed workflow execution
  • Unpredictable behavior
  • Can't reliably automate anything

We're fixing that with code-based routing (100% deterministic) plus a clever trick: instead of loading all our patterns into context (expensive!), we query them on-demand. That saves us 78% on costs and lets our pattern library grow without blowing up our context window.

It will be its own tool distinct from Claude Code. And yeah, I can't share this one publicly just yet - I think I've figured out a way to monetize it. I'm a strong supporter of FOSS, but if this works as I think it will, someone else will monetize it first.

Meanwhile

A few other things happened over the break:

Project reorganization: Right before the holidays I reorganized this project to better separate concerns. Looking at it a couple weeks later, I'm not sure I like it. Think it can be better.

Back to .NET: I've been getting reacquainted with C# development, especially .NET 10's AOT compilation support. Created a convenience image for AOT tooling and started developing agents and patterns for C# 14.0. .NET has been my bread-n-butter since beta 2 back in 2001 - I have a love-hate relationship with it, but that's a post for another day.

What's next

Unfortunately, I have to put my tooling work on the back burner and make sure I'm back up to speed with .NET. I'm between jobs and a lot of the companies posting jobs use .NET. I'll also be applying the CI patterns I established for Go to .NET. I'll use that knowledge to create a C# agent and create patterns and examples. So, it's not a complete halt on the work; it's like a side quest that will help me advance through the main storyline.

As Ted Lasso once said:

nothing-to-it