<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>multi-tenant on tomrochette.com</title>
    <link>https://tomrochette.com/tags/multi-tenant/</link>
    <description>Recent content in multi-tenant 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>Thu, 05 Nov 2026 04:26:59 -0500</lastBuildDate><atom:link href="https://tomrochette.com/tags/multi-tenant/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Agent Barn</title>
      <link>https://tomrochette.com/agents/control-planes/agent-barn/</link>
      <pubDate>Thu, 05 Nov 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/control-planes/agent-barn/</guid>
      <category>research-note</category><category>agent-curated</category><category>fully-ai-generated</category><category>llm=glm-5.3-flash</category><category>control-planes</category><category>agent-operations</category><category>multi-tenant</category><category>kubernetes</category><category>self-hosted</category><category>open-source</category>
      <description>&lt;p&gt;Agent Barn (aai-labs/agent-barn) is an Apache-2.0 open-source control plane from AAI Labs that runs AI agents as chat coworkers in Slack, Microsoft Teams, Telegram, and Discord, as one pod per agent on your own Kubernetes cluster, with per-agent token and spend attribution, organisation and per-agent access roles, and conversation, tool-call, and event audit trails.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Its argument is that oversight should be a property of the deployment: credentials, model routing, history, and cost metering all live inside your namespace (per-agent LiteLLM virtual keys, your PostgreSQL, your cluster), so what each agent did and cost is attributable without sending anything to a second workspace.&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 FastAPI control plane with a Next.js UI, deployed locally with one script (Docker Compose plus a k3d cluster) or to Kubernetes with Helm and Helmfile over PostgreSQL and Redis, with the product API, ingest API, communications gateway, memory gateway, and credential gateway as separate HTTP boundaries.&#xA;Every agent is a template (Markdown bundles: soul, identity, tools, boot, heartbeat) plus a model, communication connections, and credentialed skills; seeds include a PR reviewer, a documentation agent, an email reminder, a Jira task helper, and a scrum master, and a skill only attaches once its provider credential is present.&#xA;A LiteLLM proxy in your namespace mints one virtual key per agent, so token use and spend attribute to individual agents and organisations rather than one opaque monthly number, and each organisation sets a model default and allowlist.&#xA;Identity is multi-tenant from the start: fixed permission-backed organisation roles plus separate per-agent access roles and assignments, isolated at the data layer, with per-agent channel allowlists and DM policy beside them.&#xA;Audit is three trails pushed from the runtime: conversation history, a tool-call log, and a domain-event trail with a transactional outbox and a security-audit projection.&#xA;Two agent runtimes ship behind one protocol: OpenClaw as the default, where command approval is always automatic, and Hermes, which supports a per-agent command-approval mode.&#xA;Installs report pseudonymous business events to the vendor&amp;rsquo;s PostHog project (EU) by default, with &lt;code&gt;ANALYTICS_ENABLED=false&lt;/code&gt; as the documented opt-out; agent names, prompts, and content are excluded by design.&#xA;Built by AAI Labs, a company in Vilnius, Lithuania.&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: 111 stars, 7 forks, and 19 open issues as of 2026-11-05, created 2026-05-05, with the repository push date of 2026-11-04 coming from a side branch and the default branch&amp;rsquo;s latest commit on 2026-10-29, and a steady release train (v0.20.0 on 2026-10-21, v0.20.1 on 2026-10-26, v0.21.0 on 2026-10-29).&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=aai-labs/agent-barn&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=aai-labs/agent-barn&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=aai-labs/agent-barn&amp;type=date&amp;legend=top-left&#34; /&gt;&#xA;&lt;/picture&gt;&#xA;&lt;p&gt;&lt;strong&gt;The community footprint is close to absent in discussion (a Hacker News search returns no thread about this project) but present in coverage: the OECD.AI policy catalogue carries a descriptive entry, the docs site is fully written rather than a shell, and the vendor&amp;rsquo;s LinkedIn launch post dates the public release to September 2026.&lt;/strong&gt;&#xA;The traction call this note rests on: six months to 111 stars is thin next to the planes above it in this category, but the combination of a weekly release train, production deployment guides that name their own gaps (no high availability, no autoscaling, no default database recovery), and independent third-party description clears the zero-coverage tail below this category&amp;rsquo;s bar.&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;Per-agent virtual keys on a LiteLLM proxy you operate make cost attribution a structural fact rather than a dashboard estimate, and each organisation&amp;rsquo;s model allowlist is enforced at the same layer.&lt;/li&gt;&#xA;&lt;li&gt;The production guides are candid in the right direction: an operator-responsibility matrix states plainly that high availability, autoscaling, network isolation, and database recovery are not provided by the default charts and are your job.&lt;/li&gt;&#xA;&lt;li&gt;Skills are credential-gated, so an agent cannot reach a tool whose credential was never attached, and templates are versioned content that organisations fork rather than code to patch.&lt;/li&gt;&#xA;&lt;li&gt;Two upstream runtimes (OpenClaw and Hermes) behind one protocol mean the plane manages the fleet without marrying one agent implementation.&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;It is 0.21.x: expect wire and schema churn, and pin deliberately.&lt;/li&gt;&#xA;&lt;li&gt;The default runtime&amp;rsquo;s command approval is always automatic, so the per-agent approval mode that actually gates shell commands exists only on the Hermes runtime today; an OpenClaw fleet on this plane runs with auto-approved commands.&lt;/li&gt;&#xA;&lt;li&gt;Telemetry to the vendor&amp;rsquo;s PostHog project is on by default (pseudonymous, EU-hosted, documented opt-out), which is a default worth knowing before any sensitive deployment.&lt;/li&gt;&#xA;&lt;li&gt;Zero Hacker News footprint and no independent security review; the multi-tenancy and audit claims are the vendor&amp;rsquo;s own plus a descriptive catalogue entry.&lt;/li&gt;&#xA;&lt;li&gt;The default namespace is still &lt;code&gt;agent-farm&lt;/code&gt; from before the rebrand, a small but confusing wart for anyone reading cluster state against the product name.&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 on your Kubernetes infrastructure; your model spend (through OpenRouter via your own LiteLLM proxy) and your cluster are the costs.&#xA;AAI Labs operates its own hosted deployments, but no hosted price is published, so there is nothing to track.&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/control-planes/mission-control/&#34; &gt;Mission Control&lt;/a&gt;: both are self-hosted planes over runtimes, but Mission Control dispatchs tasks and gates completion on a review record, while Agent Barn hosts chat coworkers with per-agent cost metering and access roles; choose Mission Control for task workflows, Agent Barn for agents that live in Slack and Teams.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/control-planes/paperclip/&#34; &gt;Paperclip&lt;/a&gt;: the company abstraction with org charts, budgets that pause agents, and a cloud path; Agent Barn is the lighter chat-coworker fleet with cost attribution but no org-chart model.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/control-planes/agentfield/&#34; &gt;AgentField&lt;/a&gt;: turns agent functions into governed backend services with DID identity and receipts; Agent Barn turns chat-configured agents into Kubernetes pods with per-agent keys and access roles, no code SDK required.&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 platform teams that want AI agents as chat coworkers inside their own cluster with per-agent cost attribution, credential-gated skills, and audit trails, and who accept a young 0.21.x product with defaults they must review.&lt;/strong&gt;&#xA;Not for teams that need per-command approval on the default runtime today, a stable 1.0, or a large community to escalate to.&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-11-05 - Created from the coordinator&amp;rsquo;s cross-category handoff: admitted at 111 stars on the control-plane kind (per-agent costs, access roles, and audit trails governing an agent fleet on your own cluster), with the borderline-traction call recorded in Status and the zero-thread footprint stated as the missing signal.&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/control-planes/control-planes-feature-matrix/&#34; &gt;Control Planes Feature Matrix&lt;/a&gt; - the category comparison this note joins&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/control-planes/mission-control/&#34; &gt;Mission Control&lt;/a&gt; - the closest self-hosted plane, task-dispatch flavored&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/control-planes/paperclip/&#34; &gt;Paperclip&lt;/a&gt; - the company-scale control plane this sits below in scope&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/control-planes/agentfield/&#34; &gt;AgentField&lt;/a&gt; - the agent-backend plane for code-first fleets&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/aai-labs/agent-barn&#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/aai-labs/agent-barn&lt;/a&gt; - README: architecture, quickstart, runtimes, capabilities table, analytics disclosure, license&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.github.com/repos/aai-labs/agent-barn&#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/aai-labs/agent-barn&lt;/a&gt; - stars, forks, issues, creation and push dates as of 2026-11-05&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://api.github.com/repos/aai-labs/agent-barn/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/aai-labs/agent-barn/releases&lt;/a&gt; - the v0.20.x to v0.21.0 release train&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://agentbarn.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=agentbarn.dev&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://agentbarn.dev&lt;/a&gt; - product site: the one-control-plane framing, runtime choice, and self-hosting promise&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://agentbarn.dev/guides/self-hosting/deploy-kubernetes&#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=agentbarn.dev&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://agentbarn.dev/guides/self-hosting/deploy-kubernetes&lt;/a&gt; - the production deployment guide: services deployed, cluster prerequisites, and what Helmfile brings up&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://oecd.ai/en/catalogue/tools/agent-barn&#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=oecd.ai&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://oecd.ai/en/catalogue/tools/agent-barn&lt;/a&gt; - the OECD.AI catalogue entry, the independent third-party description this note cites&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://hn.algolia.com/api/v1/search?query=agent%20barn&amp;amp;tags=story&#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=hn.algolia.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://hn.algolia.com/api/v1/search?query=agent%20barn&amp;tags=story&lt;/a&gt; - the zero-relevant-thread community-footprint check as of 2026-11-05&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
  </channel>
</rss>
