<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Robert Imbeault</title>
    <description>The latest articles on DEV Community by Robert Imbeault (@robimbeault).</description>
    <link>https://dev.to/robimbeault</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3818726%2F3d165aef-8612-4c2c-aba9-6dd7754f4f84.jpeg</url>
      <title>DEV Community: Robert Imbeault</title>
      <link>https://dev.to/robimbeault</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/robimbeault"/>
    <language>en</language>
    <item>
      <title>We Got 91% With Kimi. Repeatable 91% Is the Hard Part.</title>
      <dc:creator>Robert Imbeault</dc:creator>
      <pubDate>Thu, 24 Sep 2026 16:29:49 +0000</pubDate>
      <link>https://dev.to/robimbeault/we-got-91-with-kimi-repeatable-91-is-the-hard-part-4bj7</link>
      <guid>https://dev.to/robimbeault/we-got-91-with-kimi-repeatable-91-is-the-hard-part-4bj7</guid>
      <description>&lt;p&gt;&lt;em&gt;A peak score tells you what an AI system can do. Production cares about what it can do again tomorrow.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We recently got &lt;strong&gt;91%&lt;/strong&gt; on &lt;strong&gt;Terminal-Bench 2.1&lt;/strong&gt; using &lt;strong&gt;Kimi K3&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tasks solved:&lt;/strong&gt; 81/89&lt;br&gt;
&lt;strong&gt;Total model cost:&lt;/strong&gt; $28.72.&lt;/p&gt;

&lt;p&gt;This is the part where I am apparently supposed to put the number in very large type, add a trophy emoji, and move on.&lt;/p&gt;

&lt;p&gt;Unfortunately, we ran the experiment more than once.&lt;/p&gt;

&lt;p&gt;And Kimi does not score 91% every time.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;That is where the story gets much more interesting.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  91% is a Result. It Is Not a Personality Trait.
&lt;/h2&gt;

&lt;p&gt;It would be very convenient to say: &lt;strong&gt;Kimi K3 is a 91% Terminal-Bench model.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It would also be &lt;strong&gt;wrong&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We have seen meaningful variance between runs with Kimi and other open-weight models. Sometimes the result is exceptional. Other times it comes down materially. The 91% run was also deliberately different from an official Terminal-Bench submission.&lt;br&gt;
We ran all 89 tasks once. An official submission requires at least five attempts per task. So this was an experimental run, not a judged leaderboard submission. That qualification makes the headline slightly less exciting. It also makes the experiment considerably more useful.&lt;/p&gt;

&lt;p&gt;Because the question we actually care about is not “&lt;em&gt;How high can the number go?&lt;/em&gt;”&lt;/p&gt;

&lt;p&gt;It’s “&lt;em&gt;How much of that performance can we make repeatable?&lt;/em&gt;”&lt;/p&gt;

&lt;h2&gt;
  
  
  Peak Performance and Production Performance Are Different Things
&lt;/h2&gt;

&lt;p&gt;Imagine an agent scores:&lt;br&gt;
91% on Monday.&lt;br&gt;
87% on Tuesday.&lt;br&gt;
83% on Wednesday.&lt;br&gt;
What is its capability?&lt;/p&gt;

&lt;p&gt;All three numbers tell you something.&lt;/p&gt;

&lt;p&gt;The 91% tells you what the system is capable of under a strong trajectory. The lower results tell you what you might actually have to depend on.&lt;/p&gt;

&lt;p&gt;And if I am putting that system into a production workflow, I become considerably more interested in the second number.&lt;/p&gt;

&lt;p&gt;Nobody wants an agent whose résumé says “occasionally brilliant.” &lt;/p&gt;

&lt;h2&gt;
  
  
  Open Models Are Getting Uncomfortably Good
&lt;/h2&gt;

&lt;p&gt;This is what caught our attention.&lt;/p&gt;

&lt;p&gt;Even when Kimi comes down from that particularly strong run, the performance range we are seeing from open-weight models inside a well-engineered agent system is becoming surprisingly competitive.&lt;/p&gt;

&lt;p&gt;For years, AI performance was mostly discussed as a model-selection problem.&lt;/p&gt;

&lt;p&gt;Want better results? Use the better model.&lt;/p&gt;

&lt;p&gt;Everything around the model was plumbing. Necessary plumbing, perhaps, but definitely an expensive plumbing.&lt;/p&gt;

&lt;p&gt;I think that assumption is starting to break.&lt;/p&gt;

&lt;p&gt;As more models move into broadly useful capability ranges, the system around them starts determining how much of that capability actually reaches the user.&lt;/p&gt;

&lt;p&gt;And small architectural decisions begin to matter much more than they look like they should.&lt;/p&gt;

&lt;h2&gt;
  
  
  We Gave Kimi Less to Do
&lt;/h2&gt;

&lt;p&gt;One of the more useful lessons from this run was that better agent design does not always mean giving the model more.&lt;/p&gt;

&lt;p&gt;Sometimes it means taking things away. &lt;/p&gt;

&lt;p&gt;R-CLI did not use Kimi K3 for everything. Kimi handled the primary reasoning, while delegated subagent work could be routed to DeepSeek V4 Flash.&lt;/p&gt;

&lt;p&gt;We also removed 10 tools from the schema because they either conflicted with benchmark constraints or had measured negative effects on performance.&lt;/p&gt;

&lt;p&gt;That meant a smaller tool surface, less prompt overhead, and fewer irrelevant decisions.&lt;/p&gt;

&lt;p&gt;There is a natural temptation when building agents to keep giving them capabilities.&lt;/p&gt;

&lt;p&gt;Another tool.&lt;br&gt;
Another integration.&lt;br&gt;
Another 40,000 tokens of context, just in case.&lt;/p&gt;

&lt;p&gt;Eventually your extremely intelligent model is standing in the middle of Home Depot holding 900 tools and wondering which screwdriver you wanted.&lt;/p&gt;

&lt;p&gt;Capability is useful.&lt;br&gt;
Choice has a cost.&lt;/p&gt;

&lt;h2&gt;
  
  
  Context Windows Are Not Storage Units
&lt;/h2&gt;

&lt;p&gt;The same principle applies to context.&lt;/p&gt;

&lt;p&gt;Large context windows are useful. That does not mean the goal is to fill them.&lt;/p&gt;

&lt;p&gt;In the 91% run, 71.8% of input tokens were served from cache, while median context occupancy was only about 1.5% of the model’s available window. That number is worth sitting with.&lt;/p&gt;

&lt;p&gt;The model had a large context window. We mostly did not use it, because the objective is not to make sure the model has seen everything. The objective is to make sure it sees what matters now.&lt;br&gt;
There is a subtle but important distinction between giving a model enough information and making it read the entire filing cabinet before answering every question.&lt;/p&gt;

&lt;p&gt;One helps. The other is technically also a strategy.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Model Did Not Change
&lt;/h2&gt;

&lt;p&gt;None of these decisions changed Kimi’s weights.&lt;/p&gt;

&lt;p&gt;We did not make the underlying model smarter. We changed the environment in which it operated.&lt;/p&gt;

&lt;p&gt;The harness controlled what context arrived, which tools were available, when work could be delegated, and how much the system should spend. It also used turn timers, budget-aware spend nudges, and a cache-first approach to context. Those choices look small individually. Across hundreds of agent steps, they compound.&lt;/p&gt;

&lt;p&gt;A capable model can still underperform if the system keeps giving it irrelevant context or an unnecessarily complicated tool surface.&lt;/p&gt;

&lt;p&gt;It can waste enormous amounts of computation following bad trajectories.&lt;/p&gt;

&lt;p&gt;It can fail once and never recover. The underlying intelligence may be there.&lt;/p&gt;

&lt;p&gt;The harness determines how much of it survives contact with the task.&lt;/p&gt;

&lt;h2&gt;
  
  
  $28.72 Is Interesting
&lt;/h2&gt;

&lt;p&gt;The full 89-task sweep cost $28.72 which is an impressive number. It is also one I would handle with oven mitts.&lt;/p&gt;

&lt;p&gt;Dollar comparisons between AI systems are messy.&lt;br&gt;
Model prices differ.&lt;br&gt;
Caching policies differ.&lt;br&gt;
Commercial agreements differ.&lt;/p&gt;

&lt;p&gt;Subscription economics can make apparently simple comparisons considerably less simple. Token consumption gives another useful signal.&lt;/p&gt;

&lt;p&gt;Our run used roughly 0.24 million tokens per trial. Several configurations included in our analysis consumed more than one million tokens per trial, while the highest-scoring submission in that comparison used about 2.65 million. That does not make token count a perfect measure either.&lt;/p&gt;

&lt;p&gt;But if two systems are attempting similar work and one requires dramatically more model activity to get there, something meaningful is happening in the architecture.&lt;/p&gt;

&lt;p&gt;Efficiency is not just model pricing.&lt;/p&gt;

&lt;p&gt;It is also how intelligently the system uses the model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reliability Is an Engineering Problem
&lt;/h2&gt;

&lt;p&gt;Here is the encouraging part about variance:&lt;br&gt;
It is frustrating.&lt;/p&gt;

&lt;p&gt;But some of it creates things engineers can work on.&lt;/p&gt;

&lt;p&gt;If one trajectory succeeds and another fails, we can inspect why.&lt;/p&gt;

&lt;p&gt;Maybe routing reduces the variance.&lt;br&gt;
Maybe verification catches a weak trajectory before it becomes a failure.&lt;br&gt;
Maybe retry behavior needs improvement.&lt;br&gt;
Maybe a specific behavior can be improved through post-training.&lt;br&gt;
Maybe a different model should handle a particular stage of the task.&lt;/p&gt;

&lt;p&gt;The source experiment makes exactly that broader point: inconsistency is not necessarily a model-only problem; the surrounding system can influence how repeatable high performance becomes.&lt;/p&gt;

&lt;p&gt;Which means the goal should not simply be:&lt;br&gt;
Make the highest number possible.&lt;/p&gt;

&lt;p&gt;It should be:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Make good performance boringly repeatable.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is a much harder engineering problem.&lt;/p&gt;

&lt;p&gt;It is also the one production systems eventually have to solve.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Benchmark Score Is a Distribution Wearing a Name Tag
&lt;/h2&gt;

&lt;p&gt;This is also why I think AI benchmarks need to mature. A single aggregate number is wonderfully easy to understand. It is also very good at hiding everything underneath it.&lt;/p&gt;

&lt;p&gt;Variance matters.&lt;br&gt;
Failures matter.&lt;br&gt;
Retries matter.&lt;br&gt;
Cost matters.&lt;/p&gt;

&lt;p&gt;A 91% peak and an 85% repeatable system can tell you very different things.&lt;/p&gt;

&lt;p&gt;Neither number is automatically more “real,” because they answer different questions.&lt;/p&gt;

&lt;p&gt;One tells you about the ceiling. &lt;/p&gt;

&lt;p&gt;The other tells you about reliability.&lt;/p&gt;

&lt;p&gt;Production needs both.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Interesting Competition May Be Moving Above the Model
&lt;/h2&gt;

&lt;p&gt;There will always be another model.&lt;br&gt;
&lt;em&gt;GPT.&lt;br&gt;
Claude.&lt;br&gt;
Gemini.&lt;br&gt;
Kimi.&lt;br&gt;
DeepSeek.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Then six months later something with a name that sounds like either an AI lab or an obscure Pokémon comes out.&lt;/p&gt;

&lt;p&gt;The frontier will keep moving, but if several models increasingly occupy the same broad capability range, then the scarce part of the system starts to change.&lt;/p&gt;

&lt;p&gt;The advantage shifts toward the teams that can make those models more dependable without wasting enormous amounts of computation getting there.&lt;/p&gt;

&lt;p&gt;It moves toward the people who understand how to build systems around intelligence rather than simply purchase access to it.&lt;/p&gt;

&lt;p&gt;That is the bet we are making at Backboard.&lt;br&gt;
The 91% run is exciting.&lt;br&gt;
The cost is exciting.&lt;br&gt;
But neither is really the thesis.&lt;/p&gt;

&lt;p&gt;The thesis is that open-weight models are getting better quickly, while the difference between an average harness and a great one may only be starting to matter more.&lt;/p&gt;

&lt;p&gt;And if that is true, the next major advantage in AI may not come from owning the smartest model.&lt;/p&gt;

&lt;p&gt;It may come from making strong performance so repeatable that eventually nobody finds it interesting anymore.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is a conversational remix of an article I published on &lt;a href="http://backboard.io" rel="noopener noreferrer"&gt;Backboard&lt;/a&gt;’s blog. Read the original deep dive &lt;a href="https://backboard.io/blog/we-scored-91-on-terminal-bench-2.1-with-kimi.-that%E2%80%99s-not-the-interesting-part." rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>opensource</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Same Claude. Different Harness. Very Different Result.</title>
      <dc:creator>Robert Imbeault</dc:creator>
      <pubDate>Fri, 18 Sep 2026 15:20:23 +0000</pubDate>
      <link>https://dev.to/robimbeault/same-claude-different-harness-very-different-result-1k58</link>
      <guid>https://dev.to/robimbeault/same-claude-different-harness-very-different-result-1k58</guid>
      <description>&lt;p&gt;&lt;em&gt;Claude didn’t get smarter. We changed everything around it. Somehow, 6.5 points appeared between them.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We beat Claude Code with Claude.&lt;/p&gt;

&lt;p&gt;Which is a slightly ridiculous sentence, but it is also a useful one.&lt;/p&gt;

&lt;p&gt;We ran Backboard CLI on Terminal-Bench 2.1 using Claude Opus 4.8 through Amazon Bedrock. Claude Code, using the same model, had a published score of 78.9%.&lt;/p&gt;

&lt;p&gt;Our submitted result was 85.4% ± 0.8%.&lt;/p&gt;

&lt;p&gt;Same underlying model.&lt;br&gt;
Different system around it.&lt;br&gt;
A 6.5-point difference.&lt;/p&gt;

&lt;p&gt;And that is much more interesting to me than saying we found a smarter model.&lt;/p&gt;

&lt;p&gt;Because we didn’t.&lt;/p&gt;

&lt;h2&gt;
  
  
  Claude Did Not Wake Up Smarter That Morning
&lt;/h2&gt;

&lt;p&gt;For the last few years, AI performance has mostly been discussed as a model problem.&lt;/p&gt;

&lt;p&gt;Want better results? Use the better model. And obviously, models matter. A lot. But once models become sufficiently capable, another question starts becoming more important:&lt;br&gt;
How much of that capability can your system actually get out of them?&lt;/p&gt;

&lt;p&gt;A model working inside an agent does not operate in a vacuum.&lt;br&gt;
It receives context.&lt;br&gt;
It sees tools.&lt;br&gt;
It decides what to do next.&lt;br&gt;
It fails.&lt;br&gt;
It recovers.&lt;br&gt;
It maintains state.&lt;br&gt;
It spends tokens while doing all of this.&lt;/p&gt;

&lt;p&gt;The model may be the engine, but there is quite a lot of car wrapped around it.&lt;/p&gt;

&lt;p&gt;And occasionally someone remembers that transmissions matter too.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Harness Is Not Just Plumbing
&lt;/h2&gt;

&lt;p&gt;It is tempting to describe everything around the model as plumbing.&lt;br&gt;
Context management. Tool interfaces. Planning. State. Recovery. Verification.&lt;/p&gt;

&lt;p&gt;Necessary, certainly.&lt;br&gt;
Exciting enough for a keynote slide?&lt;br&gt;
Apparently less so.&lt;/p&gt;

&lt;p&gt;But those decisions compound.&lt;/p&gt;

&lt;p&gt;Give a capable model too much irrelevant context, and you make its job harder.&lt;/p&gt;

&lt;p&gt;Give it tools it does not need, and you create more ways to make the wrong choice.&lt;/p&gt;

&lt;p&gt;Handle failure poorly and one bad step can ruin an otherwise good trajectory.&lt;/p&gt;

&lt;p&gt;Burn too many tokens getting there, and you may technically solve the task while also solving your CFO’s problem of having too much money.&lt;/p&gt;

&lt;p&gt;The model did not suddenly become more intelligent because Backboard called it.&lt;/p&gt;

&lt;p&gt;The system around the model got more of the existing intelligence into the result.&lt;/p&gt;

&lt;p&gt;That distinction is the reason I care about the benchmark.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Cost Result Was Almost More Interesting
&lt;/h2&gt;

&lt;p&gt;Performance was only half of it.&lt;/p&gt;

&lt;p&gt;Our full submitted Terminal-Bench run cost $280.72. At the time of the original article, the current verified leader had scored 83.8% at a reported cost of $552.67.&lt;/p&gt;

&lt;p&gt;So our submitted result came in higher, while the reported run cost was roughly 49% lower. That changes the question.&lt;/p&gt;

&lt;p&gt;It is easy to ask:&lt;br&gt;
Which model are you using?&lt;/p&gt;

&lt;p&gt;It is harder, and much more useful, to ask:&lt;br&gt;
What can you get that model to accomplish reliably, and what does it cost to get there?&lt;/p&gt;

&lt;p&gt;Those are different optimization problems.&lt;/p&gt;

&lt;p&gt;One produces model comparison charts. The other produces systems you can afford to run.&lt;/p&gt;

&lt;h2&gt;
  
  
  This Is Why We Benchmark
&lt;/h2&gt;

&lt;p&gt;I have mixed feelings about AI leaderboards.&lt;/p&gt;

&lt;p&gt;They are useful and extremely effective at turning otherwise sensible adults into people refreshing a webpage to see whether a decimal moved.&lt;/p&gt;

&lt;p&gt;For us, the useful part is not the trophy. It is the failure data.&lt;br&gt;
The submitted evaluation covered 89 tasks, with five attempts per task, for 445 trials under the same agent configuration. We included the failures and errors. The aggregate result was 85.4%.&lt;/p&gt;

&lt;p&gt;That was the number we were comfortable submitting.&lt;/p&gt;

&lt;p&gt;Every failed task tells us something.&lt;/p&gt;

&lt;p&gt;Sometimes the model made a bad decision. Sometimes context was poor.&lt;br&gt;
Sometimes the harness allowed an unproductive trajectory to continue too long.&lt;br&gt;
Sometimes an implementation change that seemed clever turned out to be very clever at making the benchmark worse.&lt;/p&gt;

&lt;p&gt;Useful information, all of it.&lt;/p&gt;

&lt;p&gt;A benchmark is valuable when it tells your engineers where the system breaks. The leaderboard is what happens afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Same Model Is a Surprisingly Useful Experiment
&lt;/h2&gt;

&lt;p&gt;Comparing AI systems gets messy fast. Change the model, provider, prompt, tools, or context strategy and you’ve changed the experiment.&lt;/p&gt;

&lt;p&gt;That’s why I find the Claude comparison interesting.&lt;/p&gt;

&lt;p&gt;Same Claude Opus 4.8 on both sides. 6.5 points apart.&lt;/p&gt;

&lt;p&gt;I don’t think there’s one clever trick behind that gap. It’s probably a lot of fairly boring engineering choices adding up.&lt;/p&gt;

&lt;p&gt;Which, unfortunately, is usually how software works.&lt;/p&gt;

&lt;h2&gt;
  
  
  Models Will Keep Moving
&lt;/h2&gt;

&lt;p&gt;We care about this for a bigger reason too.&lt;/p&gt;

&lt;p&gt;I don’t think companies should have to rebuild their AI stack every time a new model becomes the favorite.&lt;/p&gt;

&lt;p&gt;Claude might be the right fit today. Tomorrow it could be something else. Six months from now, it could be a model nobody has heard of yet.&lt;/p&gt;

&lt;p&gt;The models will keep changing. That’s normal.&lt;/p&gt;

&lt;p&gt;The infrastructure around them shouldn’t have to.&lt;/p&gt;

&lt;p&gt;Your context, memory, evaluation, application logic, and the lessons you’ve learned about turning model capability into useful work should be able to stick around.&lt;/p&gt;

&lt;p&gt;That’s where I think a lot of the durable value in AI infrastructure will live.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Model Is a Component, Not the Whole Product
&lt;/h2&gt;

&lt;p&gt;This benchmark does not prove that models do not matter.&lt;/p&gt;

&lt;p&gt;That would be a strange conclusion from an experiment powered by Claude Opus 4.8.&lt;/p&gt;

&lt;p&gt;It proves something narrower.&lt;/p&gt;

&lt;p&gt;Choosing a strong model is not the end of the engineering problem.&lt;/p&gt;

&lt;p&gt;There is still a substantial gap between having access to intelligence and building a system that uses it well.&lt;/p&gt;

&lt;p&gt;The surrounding architecture determines what context reaches the model, what actions it can take, how failures are handled, and how much the whole thing costs when it finally succeeds.&lt;/p&gt;

&lt;p&gt;Those decisions are easy to dismiss individually.&lt;/p&gt;

&lt;p&gt;Collectively, they can move a benchmark by 6.5 points.&lt;/p&gt;

&lt;h2&gt;
  
  
  I Think the Competition Is Moving Up the Stack
&lt;/h2&gt;

&lt;p&gt;Foundation models will keep getting better. They’ll keep changing too.&lt;/p&gt;

&lt;p&gt;If several models can solve the same class of problems, simply having access to a good one becomes less of a differentiator.&lt;/p&gt;

&lt;p&gt;The harder questions move up the stack:&lt;/p&gt;

&lt;p&gt;Can you make it reliable?&lt;br&gt;
Can you use context well?&lt;br&gt;
Can you recover when things go wrong?&lt;br&gt;
Can you tell whether an optimization actually helped?&lt;br&gt;
Can you do all of that without treating tokens like confetti?&lt;/p&gt;

&lt;p&gt;That’s the engineering layer we’re betting on at Backboard.&lt;/p&gt;

&lt;p&gt;Our Terminal-Bench result is one piece of evidence, not proof of everything. It’s simply a useful controlled comparison:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The model stayed the same. The system changed. The outcome changed with it.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s the part worth paying attention to.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is a conversational remix of an article I published on &lt;a href="http://backboard.io" rel="noopener noreferrer"&gt;Backboard&lt;/a&gt;’s blog. Read the original deep dive &lt;a href="https://backboard.io/blog/backboard-cli-beats-claude-code-terminal-bench" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>discuss</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Your AI Has the Memory of a Goldfish. That’s an Architecture Choice.</title>
      <dc:creator>Robert Imbeault</dc:creator>
      <pubDate>Tue, 15 Sep 2026 18:00:00 +0000</pubDate>
      <link>https://dev.to/robimbeault/your-ai-has-the-memory-of-a-goldfish-thats-an-architecture-choice-5gll</link>
      <guid>https://dev.to/robimbeault/your-ai-has-the-memory-of-a-goldfish-thats-an-architecture-choice-5gll</guid>
      <description>&lt;p&gt;&lt;em&gt;Most AI assistants are extremely capable and remarkably forgetful.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Give one a complicated problem, and it can reason through it. Come back tomorrow and, depending on the system around it, you may need to explain who you are, what you were doing, and why &lt;strong&gt;FINAL_v12_ACTUALLY_FINAL.pdf&lt;/strong&gt; apparently matters again.&lt;/p&gt;

&lt;p&gt;The industry’s answer has mostly been to give the model an external memory.&lt;/p&gt;

&lt;p&gt;Store conversations somewhere else.&lt;br&gt;
Index them.&lt;br&gt;
Retrieve the relevant pieces later.&lt;br&gt;
Attach them to the next prompt.&lt;br&gt;
It works.&lt;/p&gt;

&lt;p&gt;But it also means the model itself still remembers nothing. We have essentially built a very smart employee who arrives every morning with amnesia and a very organized filing cabinet.&lt;/p&gt;

&lt;p&gt;At Backboard, we wanted to test a different idea:&lt;br&gt;
&lt;strong&gt;What if some of the memory lived inside the model itself?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We post-trained a model on a LOCOMO conversation set and scored &lt;strong&gt;99.95%&lt;/strong&gt; on the benchmark.&lt;/p&gt;

&lt;p&gt;That number sounds impressive, but it also needs a very large asterisk. And that asterisk is the interesting part.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memory Is an Architecture Decision
&lt;/h2&gt;

&lt;p&gt;When people say an AI system “has memory,” they can mean very different things.&lt;/p&gt;

&lt;p&gt;The most common approach looks something like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;A conversation happens.&lt;br&gt;
The system stores pieces of it.&lt;br&gt;
Those pieces are embedded and indexed.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;p&gt;Later, when the user asks another question, the system searches for relevant information and includes it in the new request.&lt;/p&gt;

&lt;p&gt;This is basically retrieval. The model has not remembered anything. The application has remembered something for the model.&lt;/p&gt;

&lt;p&gt;That distinction matters because the memory system now becomes another piece of infrastructure you have to design, secure, operate, monitor, and pay for.&lt;/p&gt;

&lt;p&gt;Where does the memory live?&lt;br&gt;
How is it isolated between users?&lt;br&gt;
What gets retrieved?&lt;br&gt;
Who is allowed to retrieve it?&lt;br&gt;
How long is it retained?&lt;br&gt;
How do you delete it?&lt;br&gt;
What happens when retrieval confidently finds exactly the wrong thing?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“Memory” sounds like a feature.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;It is actually a collection of architectural decisions wearing a friendly name.&lt;/em&gt;_&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The Filing Cabinet Approach
&lt;/h2&gt;

&lt;p&gt;Retrieval-based memory is useful for good reasons. It is easy to update, and it is flexible.&lt;/p&gt;

&lt;p&gt;But every time the model needs that information, the system generally has to retrieve it and put it back into context.&lt;/p&gt;

&lt;p&gt;Imagine having an employee who knows nothing about your company, but before every meeting you hand them the relevant sections of the employee handbook, customer history, policy documents, and notes from the last six meetings.&lt;/p&gt;

&lt;p&gt;They can absolutely do useful work, but there is a lot of photocopying.&lt;/p&gt;

&lt;p&gt;In AI terms, that photocopying is context.&lt;/p&gt;

&lt;p&gt;And context costs tokens.&lt;/p&gt;

&lt;h2&gt;
  
  
  What If the Model Actually Learned Some of It?
&lt;/h2&gt;

&lt;p&gt;There is another option: Instead of storing all long-term knowledge outside the model, you can teach some of it into the model through post-training.&lt;/p&gt;

&lt;p&gt;The analogy is closer to what happens with an experienced employee.&lt;/p&gt;

&lt;p&gt;At first, they look everything up.&lt;br&gt;
Eventually, they know the terminology.&lt;br&gt;
They know the recurring policies.&lt;br&gt;
They know how the organization tends to work.&lt;br&gt;
They stop checking the manual every time someone asks where the expense form lives.&lt;/p&gt;

&lt;p&gt;Until recently, doing something similar with a model was expensive and specialized enough that it was not a realistic memory primitive for most companies.&lt;/p&gt;

&lt;p&gt;That is changing.&lt;/p&gt;

&lt;p&gt;Techniques such as LoRA make targeted post-training more efficient, while quantization can make adapted models smaller and easier to deploy.&lt;/p&gt;

&lt;p&gt;So we wanted to know how far this idea could go.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then We Got 99.95%
&lt;/h2&gt;

&lt;p&gt;We post-trained a model on conversations from LOCOMO, a benchmark designed to test long-term conversational memory.&lt;/p&gt;

&lt;p&gt;The resulting model scored &lt;strong&gt;99.95%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Essentially perfect recall.&lt;/p&gt;

&lt;p&gt;At which point the obvious marketing strategy would have been to put the number in a 72-point font and quietly stop explaining.&lt;/p&gt;

&lt;p&gt;Unfortunately, the explanation is the important part.&lt;/p&gt;

&lt;p&gt;We trained the model on the same conversation material it was later evaluated on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On purpose.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So no, this does not prove that we built a universally superior memory model.&lt;/p&gt;

&lt;p&gt;It does not prove extraordinary generalization to conversations the model has never seen.&lt;/p&gt;

&lt;p&gt;And it certainly does not mean everyone else should throw away their vector database before lunch.&lt;/p&gt;

&lt;p&gt;What it demonstrates is something narrower and, I think, more useful:&lt;br&gt;
&lt;strong&gt;If a model is taught a body of conversational memory, that memory can be represented parametrically with extremely high recall.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We were testing the ceiling of the mechanism. Not trying to disguise a training set as a magic trick.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recall and Generalization Are Different Problems
&lt;/h2&gt;

&lt;p&gt;This experiment also exposed something I think AI benchmarks need to handle more carefully. There are at least two different questions hiding inside “&lt;em&gt;Does the model remember?&lt;/em&gt;”&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Can it recall information it has previously learned?&lt;/li&gt;
&lt;li&gt;Can it reason correctly over new conversations it was never trained on?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Those are not the same capability.&lt;/p&gt;

&lt;p&gt;A model can be excellent at one and weaker at the other.&lt;/p&gt;

&lt;p&gt;So we proposed an extension we call &lt;strong&gt;LOCOMO-Δ&lt;/strong&gt;, where some conversations are held back from training.&lt;/p&gt;

&lt;p&gt;That would make it possible to measure parametric recall separately from generalization.&lt;/p&gt;

&lt;p&gt;Peak numbers are useful. Understanding what produced them is more useful.&lt;/p&gt;

&lt;p&gt;This has become something of a recurring theme in our benchmark work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Parametric Memory Changes the Economics
&lt;/h2&gt;

&lt;p&gt;The interesting part for enterprise systems is not the benchmark. It is the architecture.&lt;/p&gt;

&lt;p&gt;If stable information lives inside a model, the application does not necessarily need to retrieve and resend that information every time it is relevant. That changes the cost structure.&lt;/p&gt;

&lt;p&gt;A retrieval-heavy system may repeatedly pay inference cost for the same policies, product knowledge, terminology, or recurring context.&lt;/p&gt;

&lt;p&gt;Parametric memory shifts some of that work toward a teaching step. For knowledge that is queried again and again, that can become economically interesting.&lt;/p&gt;

&lt;p&gt;It also changes deployment. An adapted model can potentially move with its knowledge.&lt;/p&gt;

&lt;p&gt;Put it in a private environment. Run it on-prem. Quantize it and move it onto a capable workstation. Deploy it somewhere without continuous access to the original external memory service.&lt;/p&gt;

&lt;p&gt;The memory becomes part of the artifact you deploy.&lt;/p&gt;

&lt;p&gt;That is a very different architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  It Also Changes the Security Boundary
&lt;/h2&gt;

&lt;p&gt;Another interesting property is external retrieval systems often keep many users’ or tenants’ memories inside shared infrastructure and rely on permissions, filters, metadata, and application logic to keep everything separated.&lt;/p&gt;

&lt;p&gt;Those controls can be perfectly reasonable, but they are still controls that have to be implemented correctly.&lt;/p&gt;

&lt;p&gt;With separate parametrically adapted models, tenant knowledge can instead reside in separate model weights.&lt;/p&gt;

&lt;p&gt;There is no shared retrieval store containing that particular memory.&lt;/p&gt;

&lt;p&gt;That gives the architecture a different isolation model.&lt;/p&gt;

&lt;p&gt;Not automatically a perfect one. Not magically “secure.”&lt;/p&gt;

&lt;p&gt;Just different.&lt;/p&gt;

&lt;p&gt;And importantly, auditable in different ways.&lt;/p&gt;

&lt;p&gt;Security architecture gets better when teams have multiple well-understood options instead of pretending one pattern is always correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  Unfortunately, Models Are Bad Databases
&lt;/h2&gt;

&lt;p&gt;There is a catch.&lt;/p&gt;

&lt;p&gt;Several, actually.&lt;/p&gt;

&lt;p&gt;Once information has been learned parametrically, editing it is not the same as updating a database row. Deleting one specific fact is harder. Auditing individual pieces of information is harder.&lt;/p&gt;

&lt;p&gt;If a user invokes a right-to-deletion requirement, “we taught it to the weights” is not the kind of sentence that makes a privacy lawyer relax.&lt;/p&gt;

&lt;p&gt;And some information changes constantly.&lt;/p&gt;

&lt;p&gt;Yesterday’s transaction, this morning’s inventory, a user preference they changed five minutes ago, the current exchange rate, etc.&lt;/p&gt;

&lt;p&gt;You probably do not want to retrain a model every time someone changes their shipping address.&lt;/p&gt;

&lt;p&gt;Which leads to the part of this argument that tends to be less exciting on social media.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Answer Is Both
&lt;/h2&gt;

&lt;p&gt;I don’t think enterprise memory becomes:&lt;br&gt;
&lt;strong&gt;RAG is dead. Everything goes into the model.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That would be replacing one overly broad architecture with another one.&lt;/p&gt;

&lt;p&gt;The better distinction is about the kind of knowledge being stored.&lt;/p&gt;

&lt;p&gt;Stable, high-value, recurring knowledge can be a good candidate for parametric memory.&lt;/p&gt;

&lt;p&gt;Things like organizational terminology, durable policies, product knowledge, recurring workflows, or relatively stable tenant context.&lt;/p&gt;

&lt;p&gt;Volatile, user-owned, or highly regulated information generally belongs somewhere external where it can be updated, inspected, audited, and deleted precisely.&lt;/p&gt;

&lt;p&gt;Transactions.&lt;br&gt;
Recent events.&lt;br&gt;
Changing preferences.&lt;br&gt;
Records governed by deletion requirements.&lt;br&gt;
You use the memory mechanism that matches the information.&lt;/p&gt;

&lt;p&gt;A shocking conclusion, I know:&lt;br&gt;
&lt;strong&gt;Different data probably deserves different architecture.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Memory Is Becoming a Design Space
&lt;/h2&gt;

&lt;p&gt;For a while, retrieval was effectively the default answer to long-term AI memory because it was the practical answer available.&lt;/p&gt;

&lt;p&gt;That is starting to change.&lt;/p&gt;

&lt;p&gt;As post-training becomes cheaper and model deployment becomes more flexible, memory stops being one pattern and becomes a design space.&lt;/p&gt;

&lt;p&gt;Some memory can live in retrieval.&lt;br&gt;
Some can live in application state.&lt;br&gt;
Some can live in databases.&lt;br&gt;
Some can live parametrically inside the model.&lt;br&gt;
And a good system may use all of them.&lt;/p&gt;

&lt;p&gt;The question is no longer:&lt;br&gt;
&lt;strong&gt;How do we give the AI memory?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is:&lt;br&gt;
&lt;strong&gt;Which things should the model know, and which things should the system look up?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is a much better architecture question.&lt;/p&gt;

&lt;p&gt;And if the last few years of AI infrastructure have taught me anything, it is that the useful questions usually begin once the magic-sounding feature gets decomposed into boring engineering decisions.&lt;/p&gt;

&lt;p&gt;Which is inconvenient, but also where most of the interesting work turns out to be.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is a conversational remix of an article I published on &lt;a href="//backboard.io"&gt;Backboard&lt;/a&gt;’s blog. Read the original deep dive &lt;a href="https://backboard.io/blog/enterprise-ai-memory" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>architecture</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>AI Won’t Be Priced by Tokens Forever</title>
      <dc:creator>Robert Imbeault</dc:creator>
      <pubDate>Thu, 10 Sep 2026 18:00:00 +0000</pubDate>
      <link>https://dev.to/robimbeault/ai-wont-be-priced-by-tokens-forever-a2m</link>
      <guid>https://dev.to/robimbeault/ai-wont-be-priced-by-tokens-forever-a2m</guid>
      <description>&lt;p&gt;&lt;em&gt;Nobody wants to buy tokens. They want useful work, and eventually, AI will be priced that way too.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Every new technology seems to begin by billing us for the thing engineers can measure most easily.&lt;/p&gt;

&lt;p&gt;Electricity gave us kilowatt-hours. &lt;br&gt;
Telecommunications gave us minutes. &lt;br&gt;
Cloud computing gave us CPUs, memory, storage, and bandwidth.&lt;/p&gt;

&lt;p&gt;AI has tokens.&lt;/p&gt;

&lt;p&gt;And right now, token pricing makes perfect sense, because tokens are measurable. Providers need to charge for computation, and developers need a way to estimate their bills. Input and output tokens give both sides a usable starting point.&lt;/p&gt;

&lt;p&gt;For an industry still figuring itself out, it is a sensible meter, but I don’t think the meter survives as the product.&lt;/p&gt;

&lt;p&gt;Because nobody wakes up in the morning thinking:&lt;br&gt;
&lt;em&gt;You know what would really improve the business today? Another 40 million tokens.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;People want things done. Tokens are just what gets consumed along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloud Went Through the Same Phase
&lt;/h2&gt;

&lt;p&gt;Early cloud computing was very infrastructure-shaped.&lt;/p&gt;

&lt;p&gt;Organizations talked about CPU counts, memory allocations, storage volumes, and bandwidth because those were the things they were buying.&lt;/p&gt;

&lt;p&gt;Then cloud matured.&lt;/p&gt;

&lt;p&gt;Developers stopped thinking quite so much about disks and started buying managed databases. They stopped managing individual servers and started consuming platforms.&lt;/p&gt;

&lt;p&gt;The underlying infrastructure did not disappear.&lt;/p&gt;

&lt;p&gt;Someone still has to care about CPU utilization at 2 a.m., it just stopped being the thing most customers thought they were purchasing.&lt;/p&gt;

&lt;p&gt;The abstraction moved upward, and I think AI is beginning the same transition.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tokens Are a Cost. They Are Not the Outcome.
&lt;/h2&gt;

&lt;p&gt;Today, almost every major AI platform exposes pricing in terms of input and output tokens.&lt;/p&gt;

&lt;p&gt;That makes comparison easy.&lt;/p&gt;

&lt;p&gt;Model A costs this much per million.&lt;br&gt;
Model B costs that much.&lt;br&gt;
Model C is cheaper, provided you only read the footnotes after midnight.&lt;/p&gt;

&lt;p&gt;But token cost tells us surprisingly little about the value of the system.&lt;/p&gt;

&lt;p&gt;A customer does not care how many tokens were required to summarize a meeting, they care whether the summary was useful.&lt;/p&gt;

&lt;p&gt;They do not care how many tokens were consumed analyzing a contract, they care whether the important clauses were identified correctly.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Tokens measure &lt;strong&gt;computational consumption&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Customers care about &lt;strong&gt;completed work&lt;/strong&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those are related. They are not the same thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Better AI Can Actually Mean Using Less AI
&lt;/h2&gt;

&lt;p&gt;This is where the economics become interesting.&lt;/p&gt;

&lt;p&gt;Some of the most useful improvements in AI systems reduce token consumption rather than increase it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Better prompts&lt;/strong&gt; can produce better answers with less context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Better retrieval&lt;/strong&gt; can avoid stuffing unnecessary information into every request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smarter routing&lt;/strong&gt; can send straightforward work to smaller, cheaper models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quantization&lt;/strong&gt; can serve more requests on the same hardware.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Post-training&lt;/strong&gt; can teach recurring organizational knowledge into a model instead of attaching the same context to every prompt forever.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of those improvements make the customer’s experience worse.&lt;/p&gt;

&lt;p&gt;Quite the opposite, because they improve the system while often reducing the amount of computation required. And this creates a slightly awkward incentive.&lt;/p&gt;

&lt;p&gt;If your business grows when customers consume more tokens, efficiency can look suspiciously like a revenue problem.&lt;/p&gt;

&lt;p&gt;If your business grows when customers accomplish more with less infrastructure, efficiency is the product.&lt;/p&gt;

&lt;p&gt;Those are very different businesses.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Same Million Tokens Can Produce Very Different Value
&lt;/h2&gt;

&lt;p&gt;Imagine two AI systems processing the same workload.&lt;/p&gt;

&lt;p&gt;Both consume one million tokens.&lt;/p&gt;

&lt;p&gt;One repeatedly sends irrelevant context, retrieves the wrong information, uses an unnecessarily large model, and eventually produces something useful after considerable persuasion.&lt;/p&gt;

&lt;p&gt;The other gives the right model the right information and gets to the answer efficiently.&lt;/p&gt;

&lt;p&gt;Same number of tokens.&lt;br&gt;
Very different system.&lt;/p&gt;

&lt;p&gt;This is why I think token pricing will gradually become less useful as a proxy for value.&lt;/p&gt;

&lt;p&gt;The model is only part of the equation. The software around it determines whether it gets useful context or has to sift through irrelevant information. Routing each task to an appropriate model can also avoid expensive computation that adds nothing to the result.&lt;/p&gt;

&lt;p&gt;The customer ultimately experiences the system, not the token counter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Eventually, Enterprises Will Ask Different Questions
&lt;/h2&gt;

&lt;p&gt;As AI becomes a larger part of enterprise infrastructure, I expect buying decisions to move upward from raw consumption.&lt;/p&gt;

&lt;p&gt;Organizations will ask different questions that are harder to put on a pricing page than &lt;strong&gt;$X / 1M&lt;/strong&gt; tokens.&lt;/p&gt;

&lt;p&gt;Unfortunately for pricing pages, they are much closer to the questions customers actually care about such as security, workload, and productivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local AI Makes Token Pricing Even Stranger
&lt;/h2&gt;

&lt;p&gt;Token pricing becomes less useful as AI moves beyond centralized APIs.&lt;/p&gt;

&lt;p&gt;Some workloads will stay in the public cloud, while others will run on infrastructure companies manage themselves. More capable hardware will also make it practical to run models directly on laptops and workstations.&lt;/p&gt;

&lt;p&gt;When a company owns the hardware, the cost calculation changes. It’s already paying for the equipment and its operation, rather than receiving a bill for every token. What matters is whether that investment delivers enough useful work to justify the expense.&lt;/p&gt;

&lt;p&gt;Engineers will still count tokens to understand performance and spot inefficiencies. But token volume alone won’t tell the business whether it’s getting value from the system.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tokens Are Going to Become an Implementation Detail
&lt;/h2&gt;

&lt;p&gt;I don’t think tokens disappear.&lt;/p&gt;

&lt;p&gt;CPU utilization did not disappear when cloud platforms moved toward managed services.&lt;/p&gt;

&lt;p&gt;Storage did not disappear when developers stopped manually provisioning disks.&lt;/p&gt;

&lt;p&gt;Bandwidth certainly did not disappear. My monthly bills remain committed to proving that.&lt;/p&gt;

&lt;p&gt;Those metrics still matter enormously to the people operating the infrastructure.&lt;/p&gt;

&lt;p&gt;Tokens will be the same. Engineers will continue tracking them.&lt;br&gt;
They will matter for cost optimization, context management, inference efficiency, and system design.&lt;/p&gt;

&lt;p&gt;But customers will increasingly judge AI by something else:&lt;br&gt;
&lt;em&gt;What did it accomplish, and what did that outcome cost us?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That is a much more meaningful abstraction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Eventually We’ll Price What People Actually Came to Buy
&lt;/h2&gt;

&lt;p&gt;The most valuable AI systems will not necessarily be the ones producing the largest number of tokens.&lt;/p&gt;

&lt;p&gt;They will be the ones delivering the best outcomes with the least friction and the greatest efficiency.&lt;/p&gt;

&lt;p&gt;Tokens are useful.&lt;br&gt;
They are measurable.&lt;br&gt;
They are operationally important.&lt;br&gt;
But they are not the product.&lt;/p&gt;

&lt;p&gt;Like CPU hours before them, tokens are simply the meter we use until the industry gets better at pricing the thing customers actually wanted in the first place: &lt;strong&gt;useful work&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;This is a conversational remix of an article I published on &lt;a href="//backboard.io"&gt;Backboard&lt;/a&gt;’s blog. Read the original deep dive &lt;a href="https://backboard.io/blog/ai-wont-be-priced-by-tokens-forever" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>architecture</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Your AI Doesn't Need to Pick a Side</title>
      <dc:creator>Robert Imbeault</dc:creator>
      <pubDate>Tue, 08 Sep 2026 16:42:15 +0000</pubDate>
      <link>https://dev.to/robimbeault/your-ai-doesnt-need-to-pick-a-side-42i2</link>
      <guid>https://dev.to/robimbeault/your-ai-doesnt-need-to-pick-a-side-42i2</guid>
      <description>&lt;p&gt;&lt;em&gt;Cloud, private cloud, on-prem, on-device, and edge aren’t competing futures. They’re different answers to one question: where should this workload actually run?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Enterprise AI deployment has somehow become a team sport.&lt;/p&gt;

&lt;p&gt;Cloud is the future. Local is the future. Edge is the future.&lt;/p&gt;

&lt;p&gt;Pick your side. Buy the T-shirt. Defend it on LinkedIn.&lt;/p&gt;

&lt;p&gt;I think the framing is wrong.&lt;/p&gt;

&lt;p&gt;These architectures aren’t competing destinations. They’re points on a continuum, and the useful question isn’t which one wins.&lt;/p&gt;

&lt;p&gt;It’s:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How close does this workload need to be to the data, the person, and the decision?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That question makes most of the deployment debate considerably less dramatic.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Continuum Is Really About Distance
&lt;/h2&gt;

&lt;p&gt;We’ve seen this pattern before.&lt;/p&gt;

&lt;p&gt;Computing started on centralized mainframes because that was where enough compute existed. Then more capability moved to PCs, laptops, and eventually phones.&lt;/p&gt;

&lt;p&gt;But laptops didn’t kill data centers. Phones didn’t kill laptops.&lt;/p&gt;

&lt;p&gt;New computing layers changed &lt;strong&gt;which workloads belonged where&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AI is following the same pattern.&lt;/p&gt;

&lt;p&gt;The cloud came first because frontier models require enormous amounts of compute and memory. Centralized infrastructure made that capability available to almost anyone through an API.&lt;/p&gt;

&lt;p&gt;For many workloads, that remains the right architecture.&lt;/p&gt;

&lt;p&gt;But as AI moves into more parts of an organization, the tradeoffs change.&lt;/p&gt;

&lt;p&gt;Think about deployment as a continuum:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud → Private Cloud → On-Prem → On-Device → Edge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Moving along that continuum generally brings intelligence closer to the organization and eventually to the place where the work happens.&lt;/p&gt;

&lt;p&gt;That can mean lower latency, greater control, better offline operation, and tighter data boundaries.&lt;/p&gt;

&lt;p&gt;It also means more operational responsibility.&lt;/p&gt;

&lt;p&gt;Everyone likes sovereignty until someone has to patch the inference server.&lt;/p&gt;

&lt;p&gt;There is no universally correct point on the continuum. There is only the right tradeoff for a particular workload.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why More AI Is Moving Closer to the Work
&lt;/h2&gt;

&lt;p&gt;A few years ago, running capable language models inside an ordinary organization sounded expensive enough to make the cloud decision fairly obvious.&lt;/p&gt;

&lt;p&gt;That is changing.&lt;/p&gt;

&lt;p&gt;Open models are improving. Hardware is getting better. Quantization and inference optimization are making capable models practical on increasingly modest infrastructure.&lt;/p&gt;

&lt;p&gt;That shifts what can run where.&lt;/p&gt;

&lt;p&gt;A workload that required a large cloud environment may become practical on-prem. Something that needed a server may eventually fit on a workstation. Something that needed a workstation may move onto a laptop.&lt;/p&gt;

&lt;p&gt;The machine gets stronger while the model gets smaller.&lt;/p&gt;

&lt;p&gt;Eventually, they meet somewhere in the middle.&lt;/p&gt;

&lt;p&gt;That’s particularly interesting for workloads where proximity changes the product itself.&lt;/p&gt;

&lt;p&gt;An on-device model can keep working without connectivity and may never need to send sensitive information away from the device.&lt;/p&gt;

&lt;p&gt;At the edge, the argument becomes even stronger.&lt;/p&gt;

&lt;p&gt;A model running beside factory equipment, medical hardware, industrial sensors, or autonomous machinery operates under very different constraints from an assistant sitting behind a web interface.&lt;/p&gt;

&lt;p&gt;Milliseconds matter. Connectivity may be unreliable. Sending every decision across a network can become more than inefficient.&lt;/p&gt;

&lt;p&gt;Sometimes it’s simply the wrong architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hybrid Isn’t a Compromise
&lt;/h2&gt;

&lt;p&gt;One of the stranger assumptions in enterprise AI is that organizations will eventually settle on a single deployment model.&lt;/p&gt;

&lt;p&gt;Why would they?&lt;/p&gt;

&lt;p&gt;A company might use a frontier cloud model for compute-heavy reasoning while keeping sensitive workloads on infrastructure it controls. Knowledge workers may eventually run useful models directly on their devices, while industrial systems execute inference at the edge.&lt;/p&gt;

&lt;p&gt;All at the same time.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;That is not architectural indecision. That is architecture.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The deployment decision should follow the workload, not the other way around.&lt;/p&gt;

&lt;p&gt;That also means today’s answer doesn’t have to be permanent.&lt;/p&gt;

&lt;p&gt;Models will become more efficient. Hardware will improve. Costs will change. A workload that belongs in the cloud today may make much more sense somewhere else two years from now.&lt;/p&gt;

&lt;p&gt;Good AI infrastructure should preserve that option.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask Where the Workload Belongs
&lt;/h2&gt;

&lt;p&gt;So instead of asking:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which deployment model wins?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I think developers should ask:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where should this particular workload run?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Start with the constraints.&lt;/p&gt;

&lt;p&gt;Where is the data? How much latency matters? Does the system need to survive without connectivity? What security boundary does it need to stay inside? How much compute does the workload actually require?&lt;/p&gt;

&lt;p&gt;Then choose the architecture.&lt;/p&gt;

&lt;p&gt;The best AI infrastructure won’t force every workload into one environment. It will make it easier for models, context, policies, and workflows to move as those requirements change.&lt;/p&gt;

&lt;p&gt;AI isn’t becoming completely centralized.&lt;/p&gt;

&lt;p&gt;It isn’t becoming completely decentralized.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It’s becoming distributed.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And the interesting engineering problem isn’t choosing which side wins.&lt;/p&gt;

&lt;p&gt;It’s making sure each workload can run where it makes the most sense.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is a conversational remix of an article I published on &lt;a href="//backboard.io"&gt;Backboard&lt;/a&gt;’s blog. Read the original deep dive &lt;a href="https://backboard.io/blog/enterprise-ai-continuum" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>devops</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Your AI Isn’t Sovereign If It Can’t Leave</title>
      <dc:creator>Robert Imbeault</dc:creator>
      <pubDate>Fri, 04 Sep 2026 16:35:00 +0000</pubDate>
      <link>https://dev.to/robimbeault/your-ai-isnt-sovereign-if-it-cant-leave-4ipa</link>
      <guid>https://dev.to/robimbeault/your-ai-isnt-sovereign-if-it-cant-leave-4ipa</guid>
      <description>&lt;p&gt;&lt;em&gt;Running a model locally is useful. Real sovereignty means retaining control over the model, data, policies, infrastructure, and, crucially, the exit door.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The word &lt;strong&gt;sovereign&lt;/strong&gt; is having a very good year.&lt;/p&gt;

&lt;p&gt;Every week, another product, platform, or press release promises “sovereign AI.” Usually, this means an open model running in a particular country, private cloud, or company-owned data center.&lt;/p&gt;

&lt;p&gt;Those are meaningful advances. They solve real problems.&lt;/p&gt;

&lt;p&gt;But a model does not become sovereign simply because you moved it into the basement and gave it a server rack.&lt;/p&gt;

&lt;p&gt;We use the word sovereign at Backboard because it describes an important shift in enterprise computing. But I worry the term is being stretched until it means little more than “the deployment option we happen to sell.”&lt;/p&gt;

&lt;p&gt;Sovereignty should mean something more demanding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sovereignty Is the Freedom to Decide
&lt;/h2&gt;

&lt;p&gt;To me, AI sovereignty is an organization’s ability to make every meaningful decision about how its AI operates.&lt;/p&gt;

&lt;p&gt;Where does the model run?&lt;/p&gt;

&lt;p&gt;Which model do you use?&lt;/p&gt;

&lt;p&gt;Can you modify or replace it?&lt;/p&gt;

&lt;p&gt;Where does the data live?&lt;/p&gt;

&lt;p&gt;Who controls the policies, memory, and access?&lt;/p&gt;

&lt;p&gt;Can you move the workload without rebuilding the entire application?&lt;/p&gt;

&lt;p&gt;That last question is the real test.&lt;/p&gt;

&lt;p&gt;You can run a model entirely on infrastructure you control and still be deeply dependent on someone else.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The server may be yours, but the architecture can still belong to your vendor.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If your model cannot be adapted to your business, how sovereign are you?&lt;/p&gt;

&lt;p&gt;If essential reasoning is locked behind a third-party API, how sovereign are you?&lt;/p&gt;

&lt;p&gt;If your deployment options depend on a vendor’s roadmap, how sovereign are you?&lt;/p&gt;

&lt;p&gt;If switching providers requires an 18-month migration, three consulting firms, and a small support group, you probably do not have sovereignty. You have a long-term relationship.&lt;/p&gt;

&lt;p&gt;Real sovereignty is not isolation from every external provider. That is neither realistic nor especially desirable.&lt;/p&gt;

&lt;p&gt;It is having meaningful control, credible alternatives, and the practical ability to leave.&lt;/p&gt;

&lt;h2&gt;
  
  
  Infrastructure Is Only One Layer
&lt;/h2&gt;

&lt;p&gt;Most discussions about AI sovereignty begin and end with infrastructure.&lt;/p&gt;

&lt;p&gt;Where is the data centre? Which cloud region is being used? Does the workload remain in-country?&lt;/p&gt;

&lt;p&gt;These questions matter. But they cover only one layer of the system.&lt;/p&gt;

&lt;p&gt;An enterprise AI application may rely on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A foundation model&lt;/li&gt;
&lt;li&gt;Post-training and model weights&lt;/li&gt;
&lt;li&gt;Organizational data&lt;/li&gt;
&lt;li&gt;Retrieval and memory systems&lt;/li&gt;
&lt;li&gt;Policies and permissions&lt;/li&gt;
&lt;li&gt;Application logic&lt;/li&gt;
&lt;li&gt;Inference infrastructure&lt;/li&gt;
&lt;li&gt;Deployment and monitoring tools&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Controlling one layer does not automatically give you control over the others.&lt;/p&gt;

&lt;p&gt;You can own the hardware while renting the intelligence. You can use an open model while remaining trapped in proprietary infrastructure. You can keep the data in Canada while sending critical parts of the workflow through services you cannot inspect, modify, or replace.&lt;/p&gt;

&lt;p&gt;The residency map may look reassuring. The dependency map may tell a different story.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Happens When the Model Learns Your Business?
&lt;/h2&gt;

&lt;p&gt;Until recently, most enterprises treated foundation models as essentially fixed.&lt;/p&gt;

&lt;p&gt;The company’s knowledge lived around the model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In system prompts&lt;/li&gt;
&lt;li&gt;In retrieval systems&lt;/li&gt;
&lt;li&gt;In vector databases&lt;/li&gt;
&lt;li&gt;In external memory&lt;/li&gt;
&lt;li&gt;In application code&lt;/li&gt;
&lt;li&gt;Occasionally, in a very large PDF called 'FINAL_v7_revised_ACTUAL_FINAL.pdf'&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That architecture made sense when adapting a model was slow, expensive, and technically difficult.&lt;/p&gt;

&lt;p&gt;But that assumption is changing.&lt;/p&gt;

&lt;p&gt;As post-training becomes faster and more affordable, organizations can increasingly teach models their terminology, policies, workflows, institutional knowledge, and domain expertise.&lt;/p&gt;

&lt;p&gt;The model stops being merely something the organization consumes. It becomes an asset the organization shapes and continually improves.&lt;/p&gt;

&lt;p&gt;In some cases, it may become a meaningful part of the company’s intellectual property.&lt;/p&gt;

&lt;p&gt;That changes the sovereignty question.&lt;/p&gt;

&lt;p&gt;If years of institutional knowledge have been incorporated into a model, control over that model is no longer a minor procurement detail. The organization needs to know whether it can preserve, move, improve, audit, and continue operating that capability if a provider, price, licence, or regulation changes.&lt;/p&gt;

&lt;p&gt;The smarter the model becomes about your business, the less comfortable you should be with someone else controlling the off switch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Portability Is the Part Everyone Forgets
&lt;/h2&gt;

&lt;p&gt;A sovereign architecture should let an organization choose between open and proprietary models.&lt;/p&gt;

&lt;p&gt;It should allow models to be post-trained using the organization’s own knowledge.&lt;/p&gt;

&lt;p&gt;It should allow them to be quantized and optimized for different hardware.&lt;/p&gt;

&lt;p&gt;And it should allow the organization to decide where they execute.&lt;/p&gt;

&lt;p&gt;Sometimes that will be a public cloud.&lt;/p&gt;

&lt;p&gt;Sometimes it will be a private cloud.&lt;/p&gt;

&lt;p&gt;Sometimes it will be infrastructure inside the organization’s own facilities.&lt;/p&gt;

&lt;p&gt;Sometimes it will be a workstation, laptop, vehicle, factory, or edge device sitting directly in front of the person using it.&lt;/p&gt;

&lt;p&gt;The important point is not that one of these options is inherently sovereign.&lt;/p&gt;

&lt;p&gt;It is that the organization can choose among them, and change its mind later.&lt;/p&gt;

&lt;p&gt;Models will change. Hardware will change. Providers will change. Prices will change. Regulations will change. Someone will rename a product, move three features into a new pricing tier, and call it simplification.&lt;/p&gt;

&lt;p&gt;A sovereign architecture preserves the ability to respond.&lt;/p&gt;

&lt;p&gt;Yesterday’s infrastructure decision should not become tomorrow’s permanent technical constraint.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sovereignty Requires an Exit Door
&lt;/h2&gt;

&lt;p&gt;There is a simple way to test an AI system’s sovereignty:&lt;br&gt;
&lt;strong&gt;What happens if you need to leave?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Can you export the organization’s data and memory?&lt;/p&gt;

&lt;p&gt;Can you preserve the adapted model?&lt;/p&gt;

&lt;p&gt;Can you change the inference provider?&lt;/p&gt;

&lt;p&gt;Can you move the workload from cloud to private infrastructure?&lt;/p&gt;

&lt;p&gt;Can you replace one model without rewriting the application?&lt;/p&gt;

&lt;p&gt;Can you continue operating if a vendor changes its terms?&lt;/p&gt;

&lt;p&gt;If the answer is no, the system may still be private, secure, compliant, or locally hosted. Those are valuable properties.&lt;/p&gt;

&lt;p&gt;But it is not fully sovereign.&lt;/p&gt;

&lt;p&gt;It is dependent, just with better geography.&lt;/p&gt;

&lt;h2&gt;
  
  
  No Single Layer Makes You Sovereign
&lt;/h2&gt;

&lt;p&gt;Not the model.&lt;/p&gt;

&lt;p&gt;Not the infrastructure.&lt;/p&gt;

&lt;p&gt;Not the deployment.&lt;/p&gt;

&lt;p&gt;Not the data.&lt;/p&gt;

&lt;p&gt;Sovereignty exists when an organization retains meaningful control across the system, along with the freedom to change it.&lt;/p&gt;

&lt;p&gt;That is where I believe enterprise AI is heading.&lt;/p&gt;

&lt;p&gt;Not only because regulation may demand it or security teams will insist on it, but because AI is becoming core infrastructure. Organizations will want to own the capabilities that differentiate them without permanently tying those capabilities to today’s model, vendor, or hardware.&lt;/p&gt;

&lt;p&gt;The future of enterprise AI is not simply open.&lt;/p&gt;

&lt;p&gt;It is not simply local.&lt;/p&gt;

&lt;p&gt;It is not simply private.&lt;/p&gt;

&lt;p&gt;It is portable, adaptable, governable, and replaceable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If your AI cannot leave, it is not sovereign. It is just being hosted somewhere you recognize.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This is a conversational remix of an article I published on Backboard’s &lt;a href="//backboard.io"&gt;blog&lt;/a&gt;. Read the original deep dive &lt;a href="https://backboard.io/blog/enterprise-ai-sovereignty" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>architecture</category>
      <category>security</category>
      <category>sovereign</category>
    </item>
    <item>
      <title>I Think Therefore I Am… A Big Pain in the A$$</title>
      <dc:creator>Robert Imbeault</dc:creator>
      <pubDate>Mon, 20 Apr 2026 17:59:09 +0000</pubDate>
      <link>https://dev.to/robimbeault/i-think-therefore-i-am-a-big-pain-in-the-a-3a9m</link>
      <guid>https://dev.to/robimbeault/i-think-therefore-i-am-a-big-pain-in-the-a-3a9m</guid>
      <description>&lt;p&gt;If you’ve tried to build anything serious on top of LLMs recently, you’ve probably run into this:&lt;/p&gt;

&lt;p&gt;“Thinking” is supposed to make models better.&lt;br&gt;
In practice, it makes your infrastructure worse.&lt;/p&gt;

&lt;p&gt;Let’s break down where it actually hurts.&lt;/p&gt;




&lt;h2&gt;
  
  
  The illusion of “just turn on reasoning”
&lt;/h2&gt;

&lt;p&gt;At a high level, you’d expect something simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Turn reasoning on → better answers&lt;/li&gt;
&lt;li&gt;Turn reasoning off → cheaper, faster&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reality is messier.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Models sometimes &lt;strong&gt;don’t think when you ask them to&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Models sometimes &lt;strong&gt;overthink trivial prompts&lt;/strong&gt;, burning tokens for no gain&lt;/li&gt;
&lt;li&gt;There’s &lt;strong&gt;no consistent behavior across providers&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So now you’re not just building a product.&lt;br&gt;
You’re debugging &lt;em&gt;model psychology&lt;/em&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The fragmentation problem nobody talks about
&lt;/h2&gt;

&lt;p&gt;Every provider decided to implement “thinking” differently.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenAI → effort levels (low, medium, high)&lt;/li&gt;
&lt;li&gt;Anthropic → token budgets (explicit caps)&lt;/li&gt;
&lt;li&gt;Google → both… depending on the model version&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s just inputs.&lt;/p&gt;

&lt;p&gt;Outputs are worse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some return &lt;strong&gt;dedicated thinking blocks&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Others return &lt;strong&gt;reasoning summaries&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Some mix reasoning into standard content structures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no standard. No shared schema. No predictable behavior.&lt;/p&gt;

&lt;p&gt;So if you’re routing across models, you now need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Input normalization&lt;/li&gt;
&lt;li&gt;Output parsing per provider&lt;/li&gt;
&lt;li&gt;Logic to reconcile different reasoning formats&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where “simple API routing” stops being simple.&lt;/p&gt;




&lt;h2&gt;
  
  
  Billing is inconsistent too
&lt;/h2&gt;

&lt;p&gt;Even cost modeling breaks.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some providers expose reasoning tokens explicitly&lt;/li&gt;
&lt;li&gt;Some hide it inside total usage&lt;/li&gt;
&lt;li&gt;Some introduce &lt;strong&gt;provider-specific fields&lt;/strong&gt; (looking at you, xAI)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you’re not just optimizing performance.&lt;br&gt;
You’re building a &lt;strong&gt;cost translation layer&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Model switching makes everything worse
&lt;/h2&gt;

&lt;p&gt;Switching models mid-thread sounds great… until you try it.&lt;/p&gt;

&lt;p&gt;Even within the same provider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Different endpoints behave differently (yes, even inside OpenAI)&lt;/li&gt;
&lt;li&gt;Input formats change&lt;/li&gt;
&lt;li&gt;Output structures change&lt;/li&gt;
&lt;li&gt;Reasoning formats change&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now add state:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What context do you carry over?&lt;/li&gt;
&lt;li&gt;How do you preserve reasoning continuity?&lt;/li&gt;
&lt;li&gt;How do you avoid exploding token usage?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where most teams either:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Give up on portability, or&lt;/li&gt;
&lt;li&gt;Build a fragile pile of adapters that break every few weeks&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  What we realized building Backboard
&lt;/h2&gt;

&lt;p&gt;The real problem isn’t reasoning.&lt;/p&gt;

&lt;p&gt;It’s &lt;strong&gt;lack of abstraction&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Developers shouldn’t have to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn 5 different “thinking” systems&lt;/li&gt;
&lt;li&gt;Normalize 5 different response formats&lt;/li&gt;
&lt;li&gt;Track 5 different billing models&lt;/li&gt;
&lt;li&gt;Rebuild state every time they switch models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So we made a call:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unify it.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What “unified thinking” actually means
&lt;/h2&gt;

&lt;p&gt;Instead of exposing provider quirks, we abstract them into one model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A single &lt;strong&gt;thinking parameter&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Direct control over &lt;strong&gt;reasoning budget&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Consistent behavior across models&lt;/li&gt;
&lt;li&gt;Normalized input and output structures&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tune reasoning without caring about provider differences&lt;/li&gt;
&lt;li&gt;Switch models without rewriting logic&lt;/li&gt;
&lt;li&gt;Keep state intact across everything&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And most importantly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stop thinking about thinking.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The uncomfortable truth
&lt;/h2&gt;

&lt;p&gt;If you’re building on multiple LLMs and you haven’t hit these issues yet, you will.&lt;/p&gt;

&lt;p&gt;The complexity is not obvious at the start.&lt;br&gt;
It compounds as soon as you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a second provider&lt;/li&gt;
&lt;li&gt;Introduce reasoning&lt;/li&gt;
&lt;li&gt;Try to optimize cost&lt;/li&gt;
&lt;li&gt;Or maintain state across sessions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At that point, you’re not building your product anymore.&lt;br&gt;
You’re building infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where this goes long term
&lt;/h2&gt;

&lt;p&gt;Short term:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Abstractions like this save teams weeks or months of engineering time&lt;/li&gt;
&lt;li&gt;They reduce cost volatility and debugging overhead&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Long term:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The winning platforms won’t be the best models&lt;/li&gt;
&lt;li&gt;They’ll be the ones that make models &lt;strong&gt;interchangeable and stateful&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s the real unlock.&lt;/p&gt;




&lt;p&gt;If you’re currently stitching together multiple providers, do a quick audit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How many reasoning formats are you handling?&lt;/li&gt;
&lt;li&gt;How portable is your state layer?&lt;/li&gt;
&lt;li&gt;How confident are you in your cost predictability?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the answer isn’t clean, you’re already paying the tax.&lt;/p&gt;

&lt;p&gt;This is what we're working on at Backboard.io :)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>developers</category>
      <category>reasoning</category>
    </item>
    <item>
      <title>Why Token Counting in Multi-LLM Systems Is Harder Than You Think</title>
      <dc:creator>Robert Imbeault</dc:creator>
      <pubDate>Thu, 16 Apr 2026 14:09:06 +0000</pubDate>
      <link>https://dev.to/robimbeault/why-token-counting-in-multi-llm-systems-is-harder-than-you-think-1moj</link>
      <guid>https://dev.to/robimbeault/why-token-counting-in-multi-llm-systems-is-harder-than-you-think-1moj</guid>
      <description>&lt;p&gt;When we set out to build our adaptive context window management component, we ran into a problem that sounds deceptively simple: how do you manage context windows when your system routes requests across multiple LLM providers?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Core Problem&lt;/strong&gt;&lt;br&gt;
Each model has its own tokenizer, context window, and pricing rules. The same text is not "the same" across providers. OpenAI might count a prompt as 1,200 tokens; Claude might see it as 1,450. A chat session that fits comfortably in one model can silently exceed limits or cost significantly more in another.&lt;/p&gt;

&lt;p&gt;This creates real problems when you switch providers mid-conversation. The new model has to ingest the full conversation history again — but since each model counts that context differently, you can hit:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unexpected context-window overflow: the conversation that fit before now breaches the limit&lt;/li&gt;
&lt;li&gt;Inconsistent truncation: different models truncate at different points, changing what context the model sees&lt;/li&gt;
&lt;li&gt;Hard-to-predict routing failures: your router makes decisions based on one token count, but the model uses another&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why a Single 'Token Estimate' Doesn't Cut It&lt;/strong&gt;&lt;br&gt;
The tempting solution is to maintain a single token count with a safety margin. The problem: OpenAI, Claude, Gemini, Cohere, xAI, and others don't tokenize text the same way. A single estimate will be wrong in both directions — undercount and you risk failures; overcount and you truncate too aggressively, degrading conversation quality unnecessarily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How We Solved It&lt;/strong&gt;&lt;br&gt;
The answer is making token counting provider-aware. Instead of a single universal estimate, the context management layer measures each prompt the way the specific target model will measure it. The router uses this measurement before the request is sent.&lt;/p&gt;

&lt;p&gt;In practice this means the system:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Knows when a conversation is approaching the edge of a model's context window&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Trims or compresses history intelligently, not just blindly chopping from the front.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoids expensive overages from miscounted tokens&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keeps model-switching complexity invisible to the end user&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The user sees a smooth conversation. The system handles the messy reality that every model speaks a slightly different "token language."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What We're Building Toward&lt;/strong&gt;&lt;br&gt;
This is one component of a larger routing layer. The goal: switch LLM providers mid-product — based on cost, capability, or availability — without that complexity leaking to users. Provider-aware token counting turns out to be a foundational piece of that.&lt;/p&gt;

&lt;p&gt;We're doing this so you won't have to. :)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>devtools</category>
      <category>programming</category>
    </item>
    <item>
      <title>Your Context Window Is Chaos. We Fixed It.</title>
      <dc:creator>Robert Imbeault</dc:creator>
      <pubDate>Tue, 31 Mar 2026 10:47:36 +0000</pubDate>
      <link>https://dev.to/robimbeault/your-context-window-is-chaos-we-fixed-it-3ca5</link>
      <guid>https://dev.to/robimbeault/your-context-window-is-chaos-we-fixed-it-3ca5</guid>
      <description>&lt;p&gt;If you’re routing across multiple LLMs, you probably already know this feeling:&lt;/p&gt;

&lt;p&gt;One model happily accepts your massive conversation.&lt;br&gt;
The next model chokes, truncates half the important bits, and hallucinates the rest.&lt;/p&gt;

&lt;p&gt;Same app. Same user. Different context window. Chaos.&lt;/p&gt;

&lt;p&gt;Backboard.io now includes Adaptive Context Management, a system that automatically manages conversation state when your app moves between models with different context sizes. &lt;/p&gt;

&lt;p&gt;ps. if you have keys from any of the frontiers or OpenRouter you can use this for free!&lt;/p&gt;

&lt;p&gt;You still get access to 17,000+ LLMs on the platform.&lt;/p&gt;

&lt;p&gt;You just don’t have to personally babysit their context windows anymore.&lt;/p&gt;

&lt;p&gt;And yes, it’s included for free.&lt;/p&gt;

&lt;p&gt;The Problem: Context Windows Are Inconsistent (and Annoying)&lt;br&gt;
In a multi‑model setup, this is what actually happens:&lt;/p&gt;

&lt;p&gt;You start on a large‑context model. Everything fits:&lt;/p&gt;

&lt;p&gt;system prompt&lt;br&gt;
conversation history&lt;br&gt;
tool calls + tool responses&lt;br&gt;
RAG chunks&lt;br&gt;
web search results&lt;br&gt;
random runtime metadata you forgot you added&lt;br&gt;
Your router decides to send the next request to a smaller‑context model.&lt;/p&gt;

&lt;p&gt;Suddenly your carefully curated “state” is too big to fit. Something has to go.&lt;/p&gt;

&lt;p&gt;Most platforms respond with:&lt;/p&gt;

&lt;p&gt;“Cool, just write truncation and summarization logic that:&lt;/p&gt;

&lt;p&gt;prioritizes what matters,&lt;br&gt;
handles overflow nicely,&lt;br&gt;
doesn’t break when you add a new tool,&lt;br&gt;
and works for every model you might ever route to.”&lt;br&gt;
So we all end up writing the same brittle code:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;if tokens &amp;gt; limit:&lt;br&gt;
  drop_old_messages()&lt;br&gt;
  maybe_summarize()&lt;br&gt;
  hope_nothing_important_was_there()&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
In a multi‑model system, that logic gets complicated and fragile fast.&lt;/p&gt;

&lt;p&gt;What We Shipped: Adaptive Context Management&lt;/p&gt;

&lt;p&gt;Backboard now automatically handles context transitions when models change.&lt;/p&gt;

&lt;p&gt;There’s no extra endpoint and no new config. It runs inside the Backboard runtime whenever a request is routed to a model.&lt;/p&gt;

&lt;p&gt;When that happens, Backboard:&lt;/p&gt;

&lt;p&gt;Looks up the model’s context window.&lt;br&gt;
Dynamically budgets it:&lt;br&gt;
20% reserved for raw state&lt;br&gt;
80% freed via summarization&lt;br&gt;
Within that 20% “raw state” budget, we prioritize:&lt;/p&gt;

&lt;p&gt;system prompt&lt;br&gt;
recent messages&lt;br&gt;
tool calls&lt;br&gt;
RAG results&lt;br&gt;
web search context&lt;br&gt;
Whatever fits in that 20% goes through unchanged.&lt;/p&gt;

&lt;p&gt;Everything else is handled by intelligent summarization.&lt;/p&gt;

&lt;p&gt;You don’t write the logic. You just route between models.&lt;/p&gt;

&lt;p&gt;How Intelligent Summarization Works&lt;br&gt;
When we need to compress, we follow a simple rule:&lt;/p&gt;

&lt;p&gt;First try the model you’re switching to.&lt;/p&gt;

&lt;p&gt;“Hey smaller model, summarize this so you can still understand what’s going on.”&lt;br&gt;
If the summary still doesn’t fit:&lt;/p&gt;

&lt;p&gt;We fall back to the larger model that was previously in use to generate a more efficient summary.&lt;br&gt;
This preserves the important parts of the conversation while ensuring the final state always fits within the new model’s context window.&lt;/p&gt;

&lt;p&gt;All of this happens automatically during the request and tool calls.&lt;/p&gt;

&lt;p&gt;No manual orchestration. No custom jobs. No extra service.&lt;/p&gt;

&lt;p&gt;You Should Rarely Hit 100% Context Again&lt;br&gt;
Because Adaptive Context Management runs continuously:&lt;/p&gt;

&lt;p&gt;It reshapes and compresses state before you slam into the limit.&lt;br&gt;
It keeps a buffer in the context window instead of riding at 99.9% and hoping for the best.&lt;br&gt;
Mid‑conversation model switches stop being a coin flip on whether something vital gets chopped.&lt;br&gt;
Your job: define the routing logic and features.&lt;/p&gt;

&lt;p&gt;Our job: make sure the context window doesn’t quietly wreck them.&lt;/p&gt;

&lt;p&gt;You Still Get Visibility: context_usage in msg&lt;br&gt;
This is not a black box.&lt;/p&gt;

&lt;p&gt;We expose context usage directly in the msg endpoint so you can see what’s happening in real time.&lt;/p&gt;

&lt;p&gt;Example response:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"context_usage": {&lt;br&gt;
  "used_tokens": 1302,&lt;br&gt;
  "context_limit": 8191,&lt;br&gt;
  "percent": 19.9,&lt;br&gt;
  "summary_tokens": 0,&lt;br&gt;
  "model": "gpt-4"&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can track:&lt;/p&gt;

&lt;p&gt;how much context is currently used&lt;br&gt;
how close you are to the limit&lt;br&gt;
how many tokens are from summarization&lt;br&gt;
which model is currently managing the context&lt;br&gt;
If you like graphs and dashboards, this gives you the raw data without forcing you to build your own context tracking system from scratch.&lt;/p&gt;

&lt;p&gt;The Bigger Idea: Treat Models Like Infrastructure&lt;br&gt;
Backboard’s thesis is simple:&lt;/p&gt;

&lt;p&gt;You should be able to treat models as interchangeable infrastructure.&lt;/p&gt;

&lt;p&gt;Your state should just move with the user.&lt;/p&gt;

&lt;p&gt;That only works if state can move safely between:&lt;/p&gt;

&lt;p&gt;cheap and expensive models&lt;br&gt;
long‑context and short‑context models&lt;br&gt;
different providers and pricing tiers&lt;br&gt;
Adaptive Context Management is the safety layer that makes that viable:&lt;/p&gt;

&lt;p&gt;You route across thousands of models.&lt;br&gt;
Backboard keeps the conversation state aligned with each model’s constraints.&lt;br&gt;
You don’t write ad‑hoc truncation and summarization logic per model.&lt;br&gt;
You focus on product behavior.&lt;/p&gt;

&lt;p&gt;We handle the context window drama.&lt;/p&gt;

&lt;p&gt;Adaptive Context Management is free and live today in the Backboard API.&lt;/p&gt;

&lt;p&gt;No feature flag. No extra pricing line.&lt;/p&gt;

&lt;p&gt;You can start building with it now at:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://docs.backboard.io" rel="noopener noreferrer"&gt;https://docs.backboard.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you’re already routing across multiple models and have horror stories about context windows, I’d love to hear them.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>api</category>
    </item>
    <item>
      <title>I'm bias but I love this!</title>
      <dc:creator>Robert Imbeault</dc:creator>
      <pubDate>Tue, 24 Mar 2026 15:13:56 +0000</pubDate>
      <link>https://dev.to/robimbeault/im-bias-but-i-love-this-4oom</link>
      <guid>https://dev.to/robimbeault/im-bias-but-i-love-this-4oom</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/jon_at_backboardio/im-learning-ai-in-public-and-i-think-developers-need-to-chill-a-bit-31d2" class="crayons-story__hidden-navigation-link"&gt;I’m Learning AI in Public, and I Think Developers Need to Chill a Bit&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/jon_at_backboardio" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3824580%2Fcbf3ef23-2d0b-4576-90ff-0d46b2119ea8.png" alt="jon_at_backboardio profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/jon_at_backboardio" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Jonathan Murray
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Jonathan Murray
                
              
              &lt;div id="story-author-preview-content-3395533" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/jon_at_backboardio" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3824580%2Fcbf3ef23-2d0b-4576-90ff-0d46b2119ea8.png" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Jonathan Murray&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/jon_at_backboardio/im-learning-ai-in-public-and-i-think-developers-need-to-chill-a-bit-31d2" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 24&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/jon_at_backboardio/im-learning-ai-in-public-and-i-think-developers-need-to-chill-a-bit-31d2" id="article-link-3395533"&gt;
          I’m Learning AI in Public, and I Think Developers Need to Chill a Bit
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devops"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devops&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devrel"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devrel&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/jon_at_backboardio/im-learning-ai-in-public-and-i-think-developers-need-to-chill-a-bit-31d2" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/fire-f60e7a582391810302117f987b22a8ef04a2fe0df7e3258a5f49332df1cec71e.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;49&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/jon_at_backboardio/im-learning-ai-in-public-and-i-think-developers-need-to-chill-a-bit-31d2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              10&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>devops</category>
      <category>devrel</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Hidden Problem With Multi-Model AI Systems: Context Window Mismatch</title>
      <dc:creator>Robert Imbeault</dc:creator>
      <pubDate>Tue, 24 Mar 2026 13:37:22 +0000</pubDate>
      <link>https://dev.to/robimbeault/the-hidden-problem-with-multi-model-ai-systems-context-window-mismatch-821</link>
      <guid>https://dev.to/robimbeault/the-hidden-problem-with-multi-model-ai-systems-context-window-mismatch-821</guid>
      <description>&lt;p&gt;Notes from building infrastructure for 17,000+ LLMs&lt;/p&gt;

&lt;p&gt;One of the promises of modern AI infrastructure is simple:&lt;br&gt;
You should be able to switch models whenever you want.&lt;/p&gt;

&lt;p&gt;Different models have different strengths. Some are faster. Some are cheaper. Some reason better. Some support large context windows.&lt;/p&gt;

&lt;p&gt;In theory, you route requests dynamically and get the best of each.&lt;br&gt;
In practice, something breaks almost immediately.&lt;br&gt;
Context windows don’t match.&lt;/p&gt;

&lt;p&gt;The Moment Everything Breaks&lt;/p&gt;

&lt;p&gt;Imagine this common scenario&lt;/p&gt;

&lt;p&gt;A conversation begins on a large context model. Maybe something like a 128k context window.&lt;br&gt;
The system prompt is fairly large.&lt;br&gt;
 The user has been chatting for a while.&lt;br&gt;
 Tools have been called.&lt;br&gt;
 A RAG system has pulled in documents.&lt;br&gt;
Everything works.&lt;br&gt;
Then your router decides to switch to a smaller model. Maybe for latency or cost reasons.&lt;/p&gt;

&lt;p&gt;Suddenly the entire state no longer fits.&lt;br&gt;
The request fails or the model behaves unpredictably.&lt;br&gt;
This happens because the model’s context window is not just holding messages. It contains the entire runtime state:&lt;br&gt;
system prompts recent conversation turns tool calls and tool outputs RAG results web search context other metadata.&lt;/p&gt;

&lt;p&gt;When you exceed the limit, something has to give.&lt;br&gt;
Most teams end up writing custom logic to handle this:&lt;br&gt;
truncating older messages prioritizing certain content summarizing conversation history trying to prevent context overflow&lt;/p&gt;

&lt;p&gt;This logic grows quickly and often becomes fragile.&lt;br&gt;
We ran into this problem while building Backboard, which currently routes across 17,000+ LLMs.&lt;br&gt;
So we built a system to handle it automatically.&lt;/p&gt;

&lt;p&gt;The Core Idea: Treat Context Like a Budget&lt;br&gt;
The approach we landed on was surprisingly simple.&lt;br&gt;
Instead of filling the entire context window with raw state, we reserve a portion of it as a stable budget.&lt;br&gt;
When a request is routed to a model, we allocate the context window like this:&lt;br&gt;
~20% reserved for raw state&lt;br&gt;
~80% available for summarization&lt;/p&gt;

&lt;p&gt;The system calculates how many tokens fit inside that 20% allocation.&lt;br&gt;
Within that space we prioritize the most important live inputs:&lt;br&gt;
system prompt most recent messages tool calls, RAG results, web search context:&lt;/p&gt;

&lt;p&gt;Everything else becomes eligible for summarization.&lt;/p&gt;

&lt;p&gt;The Summarization Strategy&lt;br&gt;
Once the system identifies which parts of the state cannot fit directly into the context window, it compresses them.&lt;br&gt;
We designed the summarization pipeline around a simple rule:&lt;br&gt;
First try summarizing using the target model.&lt;/p&gt;

&lt;p&gt;If the summary still does not fit, fall back to the larger model previously used to generate a more efficient summary.&lt;/p&gt;

&lt;p&gt;This helps preserve as much information as possible while guaranteeing the final prompt fits inside the model’s context window.&lt;br&gt;
All of this happens automatically in the runtime.&lt;/p&gt;

&lt;p&gt;Avoiding Hard Context Failures&lt;br&gt;
One of our goals was to make context exhaustion extremely rare.&lt;br&gt;
Because the system runs continuously during requests and tool calls, the state is reshaped before the context window is fully consumed.&lt;br&gt;
In practice this means applications rarely hit the absolute context limit of a model.&lt;br&gt;
Developers do not have to constantly monitor token counts or worry about prompt overflow.&lt;/p&gt;

&lt;p&gt;Making Context Usage Observable&lt;br&gt;
Even though the system runs automatically, we wanted developers to see what was happening.&lt;br&gt;
So we added context metrics directly to the API response.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"context_usage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"used_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1302&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"context_limit"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8191&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"percent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;19.9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"summary_tokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gpt-4"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes it easy to track:&lt;br&gt;
how much context is being used when summarization happens how close you are to a model’s limit which model processed the request&lt;/p&gt;

&lt;p&gt;For production systems, this visibility is useful for debugging and optimization.&lt;/p&gt;

&lt;p&gt;Why We Think This Belongs in Infrastructure&lt;br&gt;
A lot of AI applications now route between multiple models depending on cost, latency, or capability.&lt;br&gt;
But context window management often ends up as application code.&lt;br&gt;
Our view was that this is infrastructure responsibility, not application responsibility.&lt;br&gt;
Developers should be able to move between models freely without rebuilding state management every time.&lt;/p&gt;

&lt;p&gt;Adaptive Context Management&lt;br&gt;
We ended up calling this system Adaptive Context Management.&lt;br&gt;
Its job is simple:&lt;br&gt;
Ensure the conversation state always fits the model being used.&lt;br&gt;
No prompt surgery.&lt;br&gt;
No manual truncation logic.&lt;br&gt;
No context window surprises.&lt;/p&gt;

&lt;p&gt;As AI systems move toward multi-model architectures, context management becomes one of the most important reliability problems.&lt;/p&gt;

&lt;p&gt;Different models will always have different limits.&lt;br&gt;
The goal is to make those differences invisible to developers.&lt;/p&gt;

&lt;p&gt;If you are curious about the architecture behind this or how we tested summarization quality, I’d love to hear how others are approaching context management in multi-model systems.&lt;/p&gt;

&lt;p&gt;Adaptive Context Management is now available in Backboard and automatically enabled for users.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
      <category>api</category>
    </item>
  </channel>
</rss>
