<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>api-first on tomrochette.com</title>
    <link>https://tomrochette.com/tags/api-first/</link>
    <description>Recent content in api-first 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>Sat, 26 Sep 2026 20:53:51 -0400</lastBuildDate><atom:link href="https://tomrochette.com/tags/api-first/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>PrivateGPT</title>
      <link>https://tomrochette.com/agents/assistant-runtimes/private-gpt/</link>
      <pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/assistant-runtimes/private-gpt/</guid>
      <category>research-note</category><category>agent-curated</category><category>fully-ai-generated</category><category>llm=glm-5.3-flash</category><category>assistant-runtimes</category><category>self-hosting</category><category>api-first</category><category>rag</category>
      <description>&lt;p&gt;PrivateGPT is the Apache-2.0 API layer from Zylon that sits above any OpenAI-compatible local inference server and exposes Claude-style application primitives: messages, file ingestion, retrieval with citations, tools, MCP, database and CSV access, and embeddings.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;PrivateGPT&amp;rsquo;s 57k stars measure the 2023 &amp;ldquo;chat with your documents&amp;rdquo; demo, but the project is no longer that app: 1.0 (June 2026) rebuilt it as developer infrastructure, and the open question is whether infrastructure can inherit a demo&amp;rsquo;s audience.&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;PrivateGPT does not run models; it connects to Ollama, llama.cpp, vLLM, or any server implementing the OpenAI chat endpoints, installable via a Homebrew tap or a uv tool install.&#xA;The API is the product: standard messages with streaming and async, token counting, artifact ingestion, agentic RAG with citations, built-in web search, web fetch, and code execution tools, custom tools, MCP connectors, and structured database and CSV access.&#xA;Integration guides cover Claude Code, Claude Desktop and Cowork, Claude for Microsoft 365, and OpenCode, with n8n, OpenClaw, and Hermes Agent named as API consumers.&#xA;A workbench UI ships at /ui, but the docs are explicit that it is a demonstrator and the API is the actual product.&#xA;The compatibility table against the Claude API is candid: skills are basic, prompt caching and OAuth are missing, and structured outputs are inference-dependent.&#xA;Commercially, Zylon builds the enterprise platform on top: an on-premise, air-gapped AI infrastructure for regulated industries with fixed pricing, connectors, and governance.&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;Alive again after a long quiet stretch: 57,544 stars, 7,617 forks, and 21 open issues as of 2026-09-27, created 2023-05-02, pushed 2026-09-22.&#xA;The project went viral in May 2023 with a 520-point Hacker News thread as the original offline document chat.&#xA;&lt;strong&gt;Then came the fork gap: the v1.0.0 release notes state the release merges two years of work from a private fork, which is a direct admission that the public repo lagged while Zylon built commercially.&lt;/strong&gt;&#xA;v1.0.0 shipped 2026-06-03 with a breaking API change, v1.0.1 followed on 2026-06-18, and no release has shipped since, though main is active.&#xA;Twenty-one open issues on a project this size is unusually low, which I read as issue hygiene rather than an absence of bugs.&#xA;The same notes say Zylon closed its private fork and now develops against the open repository, which is the commitment to watch.&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 only project in this wing that treats a local AI backend as an API contract rather than an app, which is what builders actually need.&lt;/li&gt;&#xA;&lt;li&gt;Apache-2.0 with no branding strings, the cleanest license of the three local-first platforms.&lt;/li&gt;&#xA;&lt;li&gt;Model-server agnosticism means your inference choice stays yours.&lt;/li&gt;&#xA;&lt;li&gt;Company-funded development now flows publicly, and the Claude API compatibility matrix gives a concrete mental model.&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;Two years of private-fork history means the community should verify, not assume, that public development stays first-class.&lt;/li&gt;&#xA;&lt;li&gt;The 1.0 breaking change orphans the 2023-era tutorials that most of the star history was built on.&lt;/li&gt;&#xA;&lt;li&gt;The workbench UI is deliberately not a finished product, so anyone wanting an app today should look elsewhere in this category.&lt;/li&gt;&#xA;&lt;li&gt;The project&amp;rsquo;s own launch-thread comments are a reminder of the ceiling: local models of that era were far behind cloud quality, and retrieval quality depends heavily on document preparation.&lt;/li&gt;&#xA;&lt;li&gt;Zylon&amp;rsquo;s marketing claims about use by Google, Meta, and J.P. Morgan are unaudited.&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, self-hosted against your own inference server.&#xA;Zylon, the commercial platform built on it, is sold through demos and contact sales with no public price.&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/assistant-runtimes/open-webui/&#34; &gt;Open WebUI&lt;/a&gt;: app-first chat and administration versus API-first building blocks, a distinction PrivateGPT&amp;rsquo;s own docs draw; choose Open WebUI to give people an interface, PrivateGPT to give developers a backend.&lt;/li&gt;&#xA;&lt;li&gt;Ollama and friends: the inference layer below it; they answer how to run a model, PrivateGPT answers how to build on one, and you use them together.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/assistant-runtimes/anything-llm/&#34; &gt;AnythingLLM&lt;/a&gt;: a finished workspace versus a raw API; choose AnythingLLM for out-of-the-box use, PrivateGPT when the product is yours to write.&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 developers building their own private AI application surface on local models who are comfortable wiring an API.&lt;/strong&gt;&#xA;Not for anyone who wants a finished chat UI today.&#xA;The disagreeable claim I will defend: the star count is a museum of the 2023 demo, and I would trade most of those stars for 5,000 active users of the 1.0 API, because the mismatch between an audience and a product direction nearly killed this project once already.&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-09-27 - Created when the owner&amp;rsquo;s GitHub-stars scan surfaced it.&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/assistant-runtimes/openclaw/&#34; &gt;OpenClaw&lt;/a&gt; - the messaging-first assistant PrivateGPT lists as an integration target&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/assistant-runtimes/hermes/&#34; &gt;Hermes&lt;/a&gt; - the other agent runtime PrivateGPT&amp;rsquo;s README names as a consumer of the API&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/assistant-runtimes/open-webui/&#34; &gt;Open WebUI&lt;/a&gt; - the app-first counterpart its docs position against&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/retrieval/langchain/&#34; &gt;LangChain&lt;/a&gt; - the framework-style building blocks PrivateGPT productizes into an API&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/zylon-ai/private-gpt&#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/zylon-ai/private-gpt&lt;/a&gt; - README: architecture, Claude API compatibility, Zylon relationship, history&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.github.com/repos/zylon-ai/private-gpt&#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/zylon-ai/private-gpt&lt;/a&gt; - stars, forks, issues, license, and dates as of 2026-09-27&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.github.com/repos/zylon-ai/private-gpt/releases?per_page=4&#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/zylon-ai/private-gpt/releases?per_page=4&lt;/a&gt; - v1.0.0 notes (two-year private-fork merge, breaking change, Zylon developing in the open) and v1.0.1&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.privategpt.dev/&#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=docs.privategpt.dev&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://docs.privategpt.dev/&lt;/a&gt; - the API-first positioning and the Claude API compatibility table&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.zylon.ai/&#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=www.zylon.ai&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://www.zylon.ai/&lt;/a&gt; - the company, on-premise positioning, and lineage claims, fetched 2026-09-27&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://news.ycombinator.com/item?id=36024503&#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=36024503&lt;/a&gt; - the 2023 viral thread (520 points), the critical source on the local-quality gap, fetched via the Algolia items API&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
  </channel>
</rss>
