⏰ One hour to RethinkConn.
If you registered, check your inbox for the join link. If you didn't — you can still register and drop in: https://t.co/Hv8Swkd8yB
First session kicks off at 9 AM PT / 12 PM ET.
See you there.
📣 New NATS .NET releases v2.8.0-preview.3 and v3.0.0-preview.5 are out:
🌟 NATS Server v2.14 support, see release notes
🛠️ Dispose improvement, drain on dispose (opt-in)
Please test this if you can
https://t.co/17mFsVlxgj
NATS Server v2.14 just shipped.
(Yes, we skipped 2.13 — superstition. Don't @ us.)
A thread on what's new and why it matters if you're building on @NATS_io / JetStream 👇
If you don't understand this, you will not understand why LLM-based agents are irreparably failing for a general-purpose problem solving.
An agent (by the way it was the topic of my PhD 20 years ago) to be useful, must be rational. Being rational means to always prefer an outcome that results in the maximal expected utility to its master/user.
Let’s say an agent has two actions they can execute in an environment: a_1 and a_2.
If the agent can predict that a_1 gives its user an expected utility of 10, and a_2 gives an expected utility of -100, then a rational agent must choose a_1 even if choosing a_2 seems like a better option when explained in words. The numbers 10 and -100 can be obtained by summing the products of all possible outcomes for each action and their likelihoods.
Now here is the problem with LLM-based agents.
The LLM is not optimizing expected utility in the environment. It is optimizing the next token, conditioned on a prompt, a context window, and a training distribution full of examples of what helpful answers are supposed to look like.
Those are not the same objective.
So when we wrap an LLM in a loop and call it an “agent,” we have not created a rational decision-maker. We have created a text generator that can imitate the surface form of deliberation.
It may say things like:
“I should compare the expected outcomes.”
“The best action is probably a_1.”
“I will now execute the optimal plan.”
But the internal mechanism is not selecting actions by maximizing the user’s expected utility. It is generating a continuation that is statistically appropriate given the prompt and prior context.
This distinction matters enormously.
For narrow tasks, the imitation can be good enough. If the environment is constrained, the actions are simple, and the success criteria are close to patterns seen in training, the system can appear agentic.
But for general-purpose problem solving, the gap becomes fatal.
A rational agent needs stable preferences, calibrated beliefs, causal models of the world, the ability to evaluate consequences, and the discipline to choose the action with maximal expected utility even when that action is boring, non-linguistic, or unlike the examples in its training data.
An LLM-based agent has none of that by default.
It has fluency. It has pattern completion. It has a remarkable ability to compress and recombine human text. But fluency is not rationality, and a plausible plan is not an expected-utility calculation.
This is why these systems so often fail in strange, brittle, and irreparable ways when given open-ended responsibility.
They are not failing because the prompts are insufficiently clever.
They are failing because we are asking a simulator of rational agency to be a rational agent.
Ghostty is leaving GitHub. I'm GitHub user 1299, joined Feb 2008. I've visited GitHub almost every single day for over 18 years. It's never been a question for me where I'd put my projects: always GitHub. I'm super sad to say this, but its time to go. https://t.co/DQDemHdytV
Over the years @nats_io systems have grown in complexity by leaps and bounds. The system is observable to a fault and produces a ton of information about what is going on, but very few people know about everything that is available. So proud of the @synadia team delivering insights. A wealth of information and data that can be accessed via UI, API and your AI agents.
ICYMI we have recently released fair few Orbit .NET packages.
They provide additional functionality on top of NATS Core and in most cases JetStream.
https://t.co/J3cXMggzRA