Holidays are over

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:
- Run
./scripts/install-agents.sh - Reconnect to the Cognee MCP server
- 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:
