<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>budget-enforcement on tomrochette.com</title>
    <link>https://tomrochette.com/tags/budget-enforcement/</link>
    <description>Recent content in budget-enforcement on tomrochette.com</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>tom@tomrochette.com (Tom Rochette)</managingEditor>
    <webMaster>tom@tomrochette.com (Tom Rochette)</webMaster>
    <copyright>© 2026 Tom Rochette</copyright>
    <lastBuildDate>Mon, 12 Oct 2026 11:16:13 -0400</lastBuildDate><atom:link href="https://tomrochette.com/tags/budget-enforcement/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Mole</title>
      <link>https://tomrochette.com/agents/automated-research/mole/</link>
      <pubDate>Mon, 12 Oct 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/automated-research/mole/</guid>
      <category>research-note</category><category>agent-curated</category><category>fully-ai-generated</category><category>llm=glm-5.3-flash</category><category>automated-research</category><category>deep-research</category><category>budget-enforcement</category><category>open-source</category>
      <description>&lt;p&gt;Mole is Lajos Deme&amp;rsquo;s Apache-2.0 deep-research agent for the terminal: a single Go binary that decomposes a question, searches, reads sources, and returns a cited answer, with a budget ledger that stops the run at the ceiling you set and quote checks that drop claims the source never said.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Mole is the first member of this category that treats the run&amp;rsquo;s cost as part of the loop&amp;rsquo;s contract: every model call is reserved against the budget before it happens and settled after, so a $0.50 ceiling is a hard stop rather than an estimate, and every claim that survives extraction carries a verbatim quote from its source.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What it is&#xA;    &lt;div id=&#34;what-it-is&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-it-is&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;A static Go binary (&lt;code&gt;mole&lt;/code&gt; plus &lt;code&gt;mole-mcp&lt;/code&gt;, Apache-2.0) with a SQLite store created on first use, installable by a checksum-verified script, a Homebrew tap, or the AUR.&#xA;The loop decomposes a question into leads, searches, reads sources, extracts claims, discards any claim whose quote does not appear verbatim in the page it was mined from, checks the survivors for contradictions, and writes a cited answer, or a structured dataset when &lt;code&gt;--schema&lt;/code&gt; asks for rows instead of prose.&#xA;Toolkit mode inverts the control: your coding agent&amp;rsquo;s model does the reasoning while mole supplies the deterministic half (search, fetch, extraction) over MCP, and &lt;code&gt;mole crossings&lt;/code&gt; reports exactly what left the machine.&#xA;The privacy boundary covers local data too: point it at a CSV or a folder and the model only chooses a hypothesis template and column names, the SQL runs locally, and only aggregates over five or more records are allowed back.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Status&#xA;    &lt;div id=&#34;status&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#status&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Active and young: 314 stars, 20 forks, created 2026-08-01, last pushed 2026-10-10, releases v0.1.0 (2026-08-13) and v0.2.0 (2026-10-10), as of 2026-10-12.&lt;/p&gt;&#xA;&lt;picture&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: dark)&#34; srcset=&#34;https://api.star-history.com/chart?repos=lajosdeme/mole&amp;type=date&amp;theme=dark&amp;legend=top-left&#34; /&gt;&#xA;  &lt;source media=&#34;(prefers-color-scheme: light)&#34; srcset=&#34;https://api.star-history.com/chart?repos=lajosdeme/mole&amp;type=date&amp;legend=top-left&#34; /&gt;&#xA;  &lt;img alt=&#34;Star History Chart&#34; src=&#34;https://api.star-history.com/chart?repos=lajosdeme/mole&amp;type=date&amp;legend=top-left&#34; /&gt;&#xA;&lt;/picture&gt;&#xA;&lt;p&gt;The Show HN thread reached 100 points with 14 comments on 2026-08-14, strong for the deep-research tier where GPT Researcher&amp;rsquo;s own launch thread drew 4 points.&#xA;The README&amp;rsquo;s &amp;ldquo;Honest numbers&amp;rdquo; table publishes the loop&amp;rsquo;s weak spots alongside the wins: contradiction precision of 51 percent on a single judgement (70 percent when two agree), against 98 and 67 percent recall, next to a measured 0 percent budget overshoot.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Strengths&#xA;    &lt;div id=&#34;strengths&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#strengths&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The budget is enforced by the database schema, not a dashboard: a reserve-settle ledger with non-negative constraints, a 15 percent escrow held back for the final report, and hard ceilings on leads, tool calls, and wall clock.&lt;/li&gt;&#xA;&lt;li&gt;The verbatim-quote gate changes what can reach an answer: unsupported claims are dropped at extraction or marked in the report, never silently paraphrased into evidence.&lt;/li&gt;&#xA;&lt;li&gt;Local data stays local by construction, and the boundary is auditable after the fact through &lt;code&gt;mole crossings&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Publishing its own 51 percent contradiction-precision number is more candor than most self-evaluations in this category.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Cautions&#xA;    &lt;div id=&#34;cautions&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#cautions&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;One maintainer, two releases, and no independent evaluation: the 0 percent overshoot and claim-integrity numbers come from the project&amp;rsquo;s own test corpus.&lt;/li&gt;&#xA;&lt;li&gt;The strict pricing policy refuses &lt;code&gt;--usd&lt;/code&gt; sessions when a model has no registered price, so unpriced models force token-budget mode where search costs cannot be bounded.&lt;/li&gt;&#xA;&lt;li&gt;The name is contested ground: an unrelated tw93/Mole and a macOS cleanup app called Mole shadow every search, and the launch thread&amp;rsquo;s top replies called for a rename.&lt;/li&gt;&#xA;&lt;li&gt;The toolkit budget originally bounded nothing; the phase-review commit of 2026-08-12 records four independent reviews finding the reserve-settle path missing, fixed the same day.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Pricing&#xA;    &lt;div id=&#34;pricing&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#pricing&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Free and open source under Apache-2.0; there is no paid tier, so pricing does not apply.&#xA;Costs are your own LLM and search API keys (Tavily, Brave, and alternatives), and the &lt;code&gt;--usd&lt;/code&gt; or &lt;code&gt;--tokens&lt;/code&gt; flag is the ceiling the run cannot cross.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Compared to&#xA;    &lt;div id=&#34;compared-to&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#compared-to&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/automated-research/local-deep-research/&#34; &gt;Local Deep Research&lt;/a&gt;: the local-first literature loop with more engines and an encrypted document library; choose LDR for breadth, Mole when the hard budget ceiling and claim-level quote checking matter more.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/automated-research/gpt-researcher/&#34; &gt;GPT Researcher&lt;/a&gt;: the cited-report baseline; Mole is stricter about spend and sourcing and lighter on integrations.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/automated-research/openresearch/&#34; &gt;OpenResearch&lt;/a&gt;: the workspace that runs experiments on your own agents; Mole answers questions instead of executing code.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Bottom line&#xA;    &lt;div id=&#34;bottom-line&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#bottom-line&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Recommended for engineers who want a deep-research appliance where overspend and unverifiable claims are blocked by the system rather than discouraged in a prompt.&lt;/strong&gt;&#xA;Not for anyone needing a mature, independently evaluated tool: the project is one maintainer and two releases old as of 2026-10-12.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Changes&#xA;    &lt;div id=&#34;changes&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#changes&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2026-10-12 - Created.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;See also&#xA;    &lt;div id=&#34;see-also&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#see-also&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/automated-research/local-deep-research/&#34; &gt;Local Deep Research&lt;/a&gt; - the local-first sibling at the same tier, encrypted libraries instead of enforced ledgers&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/automated-research/gpt-researcher/&#34; &gt;GPT Researcher&lt;/a&gt; - the cited-report baseline Mole tightens&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/automated-research/openresearch/&#34; &gt;OpenResearch&lt;/a&gt; - the experiment-running workspace loop&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/automated-research/automated-research-feature-matrix/&#34; &gt;Automated Research Feature Matrix&lt;/a&gt; - the category comparison this note joins&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;References&#xA;    &lt;div id=&#34;references&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#references&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/lajosdeme/mole&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://github.com/lajosdeme/mole&lt;/a&gt; - repository, Apache-2.0, 314 stars, last push 2026-10-10 (as of 2026-10-12)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/lajosdeme/mole/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/lajosdeme/mole/main/README.md&lt;/a&gt; - the loop, the reserve-settle ledger, the verbatim-quote gate, the privacy boundary, and the numbers table with its own failure rates (fetched 200, 2026-10-12)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=49303046&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=news.ycombinator.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://news.ycombinator.com/item?id=49303046&lt;/a&gt; - the 100-point, 14-comment launch thread with the rename calls and the budget-enforcement question (fetched via the Algolia API, 2026-10-12)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.github.com/repos/lajosdeme/mole/releases&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=api.github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://api.github.com/repos/lajosdeme/mole/releases&lt;/a&gt; - the v0.1.0 (2026-08-13) and v0.2.0 (2026-10-10) release train (fetched 200, 2026-10-12)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/lajosdeme/mole/commit/00b9f4e&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://github.com/lajosdeme/mole/commit/00b9f4e&lt;/a&gt; - the phase-review commit recording that the toolkit budget originally bounded nothing (fetched 200 via the API, 2026-10-12)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
  </channel>
</rss>
