<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Local-Llm on cameronqj</title>
    <link>https://cameronqj.com/tags/local-llm/</link>
    <description>Recent content in Local-Llm on cameronqj</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <copyright>Cameron Jones</copyright>
    <lastBuildDate>Sun, 19 Jul 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://cameronqj.com/tags/local-llm/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>local-first-model-router</title>
      <link>https://cameronqj.com/projects/local-first-model-router/</link>
      <pubDate>Sun, 19 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://cameronqj.com/projects/local-first-model-router/</guid>
      <description>An experimental OpenAI-compatible router that treats privacy, capability, tool authority, and backend health as policy decisions.</description>
      <content:encoded><![CDATA[<p><strong>Status:</strong> Experimental<br>
<strong>Code:</strong> <a href="https://github.com/cameronqj/local-first-model-router">github.com/cameronqj/local-first-model-router</a></p>
<p>Routing to the cheapest model that might work is easy. Routing without leaking sensitive context, changing models halfway through a tool loop, or granting a weaker backend authority it should not have is a different problem.</p>
<p>I kept the hard decisions deterministic. Privacy rules, backend health, measured capability, tool authority, and session affinity take precedence over the learned classifier. A small local embedding model only advises on ambiguous requests; it cannot override those boundaries.</p>
<h2 id="what-the-evidence-says">What the evidence says</h2>
<p>In one clean five-repeat experiment, the aggressive policy sent 81.15% of requests to local inference, up from a 22.82% conservative baseline. It also completed 10 of 10 authorized write/execute tasks without transport failures or unexpected side effects.</p>
<p>That did not settle the larger question. Quality remained inconclusive, and the latency and remote-token gates failed. The result supports the routing architecture and its authority model, not a claim that local-first routing is automatically faster, cheaper, or production-ready.</p>
<h2 id="read-the-evidence">Read the evidence</h2>
<ul>
<li><a href="https://github.com/cameronqj/local-first-model-router/blob/main/docs/experiment-log.md">Experiment log</a></li>
<li><a href="https://github.com/cameronqj/local-first-model-router/blob/main/docs/adr/0011-aggressive-local-policy-profile-and-tool-authority.md">Aggressive-local policy and tool authority</a></li>
<li><a href="https://github.com/cameronqj/local-first-model-router/blob/main/eval/results/adr-0011-aggressive-local-execute-affinity-2026-07-19.json">Five-repeat execution result</a></li>
</ul>
]]></content:encoded>
    </item>
    <item>
      <title>local-tool-proxy</title>
      <link>https://cameronqj.com/projects/local-tool-proxy/</link>
      <pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://cameronqj.com/projects/local-tool-proxy/</guid>
      <description>An archived compatibility proxy for conservative repair of malformed local-model tool calls on raw-completion paths.</description>
      <content:encoded><![CDATA[<p><strong>Status:</strong> Concluded and archived<br>
<strong>Code:</strong> <a href="https://github.com/cameronqj/local-tool-proxy">github.com/cameronqj/local-tool-proxy</a></p>
<p>This started with a concrete failure: a local model expressed a tool call as JSON inside ordinary response text, while the client expected an OpenAI-style structured tool call.</p>
<p>The proxy repairs only a narrow class of responses. It checks the requested name and arguments against the tools declared by the client, then abstains when intent is unclear. On the companion 117-case raw-output corpus, version 0.1.0 reached 87.5% precision and 38.2% recall on recoverable cases, with two unsafe false positives. Real OpenCode samples still failed the final task-level check even when the protocol shape improved.</p>
<p>Later endpoint-controlled testing explained why. Current parsed chat endpoints already returned clean tool calls, including for the seed model. The proxy is therefore relevant mainly to raw-completion consumers and older or misconfigured serving stacks. It is archived because that scope is too narrow to justify an active compatibility layer.</p>
<h2 id="read-the-evidence">Read the evidence</h2>
<ul>
<li><a href="https://github.com/cameronqj/local-tool-proxy/blob/main/docs/experiment-log.md">Experiment log and failed task verification</a></li>
<li><a href="https://github.com/cameronqj/local-tool-proxy/blob/main/docs/model-stops-using-tools-analysis.md">Where protocol repair stops helping</a></li>
<li><a href="https://github.com/cameronqj/toolcall-repair-bench/blob/main/findings/README.md">Serving-stack scope correction</a></li>
</ul>
]]></content:encoded>
    </item>
  </channel>
</rss>
