<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[🚀 HarnessRouter: community package now available]]></title><description><![CDATA[<blockquote>
<p dir="auto"><strong>TL;DR:</strong> HarnessRouter puts one OpenAI Responses-compatible API and a web console in front of agent command-line tools (OpenCode, Codex, Claude Code): your scripts or product send a request, HarnessRouter runs the agent, streams its progress and keeps the transcript. It is now packaged for Cloudron, with every agent session running as its own unprivileged user behind an egress firewall, and your provider keys held by HarnessRouter rather than by the agents. Built and tested on Cloudron 10; unofficial and community maintained.</p>
</blockquote>
<p dir="auto"><img src="/assets/uploads/files/1793475523201-start-resized.png" alt="start.png" class="img-markdown  img-fluid" width="1440" height="900" /><br />
<img src="/assets/uploads/files/1793475546347-model-keys-resized.png" alt="model-keys.png" class="img-markdown  img-fluid" width="1440" height="900" /><br />
<img src="/assets/uploads/files/1793475555158-api-keys-resized.png" alt="api-keys.png" class="img-markdown  img-fluid" width="1440" height="900" /></p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/2728.png?v=edadd94e5e6" class="not-responsive emoji emoji-android emoji--sparkles" style="height:1.4em;width:auto;vertical-align:middle" title="✨" alt="✨" /> Headline features</h3>
<ul>
<li>One API for several agent tools: call OpenCode, Codex or Claude Code through the same OpenAI Responses-style endpoint, with streaming.</li>
<li>A web console to run turns by hand, read transcripts, manage model connections and create API keys for your own scripts.</li>
<li>Bring your own model: Anthropic, OpenAI, OpenRouter, or any OpenAI-compatible endpoint, including one you host yourself.</li>
<li>Sessions resume: a later request can continue an earlier one, and each session keeps its own working directory.</li>
<li>API keys for programs, so a script can drive agents without a console login.</li>
</ul>
<h3>Links</h3>
<ul>
<li><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f3e0.png?v=edadd94e5e6" class="not-responsive emoji emoji-android emoji--house" style="height:1.4em;width:auto;vertical-align:middle" title="🏠" alt="🏠" /> Project homepage: <a href="https://harnessrouter.ai" target="_blank" rel="noopener noreferrer nofollow ugc">https://harnessrouter.ai</a></li>
<li><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4e6.png?v=edadd94e5e6" class="not-responsive emoji emoji-android emoji--package" style="height:1.4em;width:auto;vertical-align:middle" title="📦" alt="📦" /> Upstream repo: <a href="https://github.com/HarnessRouter/harnessrouter" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/HarnessRouter/harnessrouter</a></li>
<li>🧱 Cloudron package repo: <a href="https://github.com/OrcVole/harnessrouter-cloudron" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/OrcVole/harnessrouter-cloudron</a></li>
<li><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f512.png?v=edadd94e5e6" class="not-responsive emoji emoji-android emoji--lock" style="height:1.4em;width:auto;vertical-align:middle" title="🔒" alt="🔒" /> What the package does to contain agents, as measured: <a href="https://github.com/OrcVole/harnessrouter-cloudron/blob/main/docs/CONTAINMENT.md" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/OrcVole/harnessrouter-cloudron/blob/main/docs/CONTAINMENT.md</a></li>
</ul>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4e5.png?v=edadd94e5e6" class="not-responsive emoji emoji-android emoji--inbox_tray" style="height:1.4em;width:auto;vertical-align:middle" title="📥" alt="📥" /> How to install</h3>
<p dir="auto">The easiest route is the dashboard. In the App Store, click the <strong>Add custom app</strong> dropdown (top right) and choose <strong>Community app</strong>, then paste the CloudronVersions.json URL below into the box that pops up. Apps installed this way receive automatic updates.</p>
<p dir="auto"><img src="/assets/uploads/files/1782552307466-community-package.jpeg" alt="community-package.jpeg" class="img-markdown  img-fluid" width="1024" height="471" /></p>
<p dir="auto"><img src="/assets/uploads/files/1782552321764-cloudronversions.jpeg" alt="cloudronversions.jpeg" class="img-markdown  img-fluid" width="631" height="249" /></p>
<pre><code>https://ca.cloudron.io/app/io.github.orcvole.harnessrouter
</code></pre>
<p dir="auto">Or with the CLI:</p>
<pre><code class="language-bash">cloudron install \
  --versions-url https://raw.githubusercontent.com/OrcVole/harnessrouter-cloudron/main/CloudronVersions.json \
  --location harnessrouter.example.com
</code></pre>
<p dir="auto"><strong>Minimums:</strong> a 4 GiB memory limit, measured against ten agent sessions running at once (about 0.2 GiB for the app plus about 0.25 GiB per active session), and the localstorage addon. The package asks for the <code>net_admin</code> capability, which it uses only for the agents' firewall; Cloudron grants it with the install. The first start downloads the agent tools under their own licences and takes several minutes; the console does not answer until that finishes.</p>
<p dir="auto"><strong>First run:</strong> the console password is generated on first start. Open the app's Web Terminal, run <code>cat /app/data/.secrets/admin-password</code>, sign in as <code>harnessrouter</code>, then change the password on the Profile page. Add a model connection in the console, and create an API key there for your own scripts.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f464.png?v=edadd94e5e6" class="not-responsive emoji emoji-android emoji--bust_in_silhouette" style="height:1.4em;width:auto;vertical-align:middle" title="👤" alt="👤" /> For users</h3>
<p dir="auto"><strong>Why try it:</strong> if you want to put coding agents behind your own product, or run them from scripts, HarnessRouter gives you one API and keeps the transcripts, so you do not have to wrap each tool yourself. <strong>Cloudron wins:</strong> backups of your transcripts, settings and keys, one-click updates, and agents kept apart from the rest of your server. Good fit for agent work driven by programs; probably not if you only want a chat window.</p>
<h3>🧰 For packagers: what we learned</h3>
<p dir="auto"><strong>What helped:</strong> upstream already ships a broker mode, written for its hosted service, in which agents never hold the real provider key. The package switches it on and cannot be talked out of it.</p>
<p dir="auto"><strong>What was tricky:</strong> containment. Each session already runs as its own user upstream; the package moves those users to a high uid range and adds an IPv4 and IPv6 owner-match firewall, so agents reach the internet, DNS, HarnessRouter's own API and nothing on Cloudron's internal network or the mail ports. The app refuses to start if the firewall cannot be installed. Agents can traverse the data directory to run their tools, so anything there with a world-read bit is readable by name: the package now makes the settings file root-only at every start, and its containment test checks every file, not a list.</p>
<p dir="auto"><strong>Still rough:</strong> session workspaces are kept outside the backup on purpose (about 50 MB each, rebuilt from each session's checkpoint, which is backed up). Streaming through the reverse proxy was proven for framing, not yet for event-by-event timing against a slow model.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f6e0.png?v=edadd94e5e6" class="not-responsive emoji emoji-android emoji--hammer_and_wrench" style="height:1.4em;width:auto;vertical-align:middle" title="🛠" alt="🛠" />️ For the Cloudron team</h3>
<p dir="auto"><strong>Maintenance burden:</strong> upstream releases often; the package pins the agent tool versions and moves them together on each bump. <strong>Why it suits the App Store:</strong> agent infrastructure is in demand, the upstream is Apache-2.0, and it pairs with the AI apps already here. <strong>Friction worth knowing:</strong> we tried <code>proxyAuth</code> as an optional wall and measured that with <code>supportsBearerAuth</code> any request carrying an <code>Authorization: Bearer</code> header passes it, whatever the token, and that the addon takes the app's own <code>/login</code>; for an app with its own login it added nothing, so the package keeps HarnessRouter's own login.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f4bb.png?v=edadd94e5e6" class="not-responsive emoji emoji-android emoji--computer" style="height:1.4em;width:auto;vertical-align:middle" title="💻" alt="💻" /> For HarnessRouter's developers</h3>
<p dir="auto">Thank you for broker mode: it made a careful package possible. Making it the self-hosting default, and generating the first password instead of shipping one, would help every operator. Package source and pull requests welcome at <a href="https://github.com/OrcVole/harnessrouter-cloudron" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/OrcVole/harnessrouter-cloudron</a>. Happy to co-maintain.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f513.png?v=edadd94e5e6" class="not-responsive emoji emoji-android emoji--unlock" style="height:1.4em;width:auto;vertical-align:middle" title="🔓" alt="🔓" /> Unlocks</h3>
<p dir="auto">Now you can give your own scripts and products one API that runs coding agents on your own Cloudron, with transcripts kept and the agents fenced off from your server's internal network and your provider keys.</p>
<h3><img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f517.png?v=edadd94e5e6" class="not-responsive emoji emoji-android emoji--link" style="height:1.4em;width:auto;vertical-align:middle" title="🔗" alt="🔗" /> Synergies</h3>
<ul>
<li><strong>HarnessRouter + agentgateway:</strong> give HarnessRouter its own gateway key instead of a provider's master key, so you can limit or revoke it without touching the provider account.</li>
<li><strong>HarnessRouter + vLLM or Ollama:</strong> point a connection at a model you host yourself, through its public URL, and keep prompts on your own hardware.</li>
<li><strong>HarnessRouter + Forgejo:</strong> give agents a repository to clone, commit to and push, so their work lands in version control you own.</li>
<li><strong>HarnessRouter + Uptime Kuma:</strong> watch <code>/login</code> so you know when the console goes down.</li>
</ul>
<p dir="auto">Feedback, bug reports, and "works on my install" confirmations gratefully received.</p>
]]></description><link>https://forum.cloudron.io/topic/16224/harnessrouter-community-package-now-available</link><generator>RSS for Node</generator><lastBuildDate>Mon, 02 Nov 2026 15:50:17 GMT</lastBuildDate><atom:link href="https://forum.cloudron.io/topic/16224.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 31 Oct 2026 19:41:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 🚀 HarnessRouter: community package now available on Mon, 02 Nov 2026 14:33:06 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto">Also, "mistakes were made", like deletion of half an archive.</p>
</blockquote>
<p dir="auto">Ouch !</p>
<blockquote>
<p dir="auto">once you start using AI, it becomes so helpful that the same machine becomes your main machine.</p>
</blockquote>
<p dir="auto">Yes, I see that.  99/100 it's fine, becoming indispensable.<br />
But safeguarding against 1/100 is the conundrum.</p>
]]></description><link>https://forum.cloudron.io/post/132296</link><guid isPermaLink="true">https://forum.cloudron.io/post/132296</guid><dc:creator><![CDATA[timconsidine]]></dc:creator><pubDate>Mon, 02 Nov 2026 14:33:06 GMT</pubDate></item><item><title><![CDATA[Reply to 🚀 HarnessRouter: community package now available on Mon, 02 Nov 2026 11:55:38 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/timconsidine" aria-label="Profile: timconsidine">@<bdi>timconsidine</bdi></a> <a href="/post/132246">said</a>:</p>
<p dir="auto">I'm very reluctant to run AI tools on my primary device</p>
</blockquote>
<p dir="auto">From our experience, that is a wise choice. AI has repeatedly  "found itself" operating outside of its designated areas, i.e. in No Go zones. It is able to provide a plausible excuse when it is spotted. Also, "mistakes were made", like deletion of half an archive.</p>
<p dir="auto">The difficult thing is that once you start using AI, it becomes so helpful that the same machine becomes your main machine.</p>
]]></description><link>https://forum.cloudron.io/post/132278</link><guid isPermaLink="true">https://forum.cloudron.io/post/132278</guid><dc:creator><![CDATA[LoudLemur]]></dc:creator><pubDate>Mon, 02 Nov 2026 11:55:38 GMT</pubDate></item><item><title><![CDATA[Reply to 🚀 HarnessRouter: community package now available on Sun, 01 Nov 2026 23:54:03 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/robi" aria-label="Profile: robi">@<bdi>robi</bdi></a> fascinating ... but I think I need a brain upgrade (trying to recover from changing traditional colour terms to being expressed in <code>oklch</code> for Tailwind 4).</p>
]]></description><link>https://forum.cloudron.io/post/132256</link><guid isPermaLink="true">https://forum.cloudron.io/post/132256</guid><dc:creator><![CDATA[timconsidine]]></dc:creator><pubDate>Sun, 01 Nov 2026 23:54:03 GMT</pubDate></item><item><title><![CDATA[Reply to 🚀 HarnessRouter: community package now available on Sun, 01 Nov 2026 22:55:52 GMT]]></title><description><![CDATA[<p dir="auto">Not sure this needs a separate app, but is VERY useful in any agent/harness<br />
<a href="https://github.com/goodnight000/api-anything" target="_blank" rel="noopener noreferrer nofollow ugc">https://github.com/goodnight000/api-anything</a></p>
]]></description><link>https://forum.cloudron.io/post/132255</link><guid isPermaLink="true">https://forum.cloudron.io/post/132255</guid><dc:creator><![CDATA[robi]]></dc:creator><pubDate>Sun, 01 Nov 2026 22:55:52 GMT</pubDate></item><item><title><![CDATA[Reply to 🚀 HarnessRouter: community package now available on Sun, 01 Nov 2026 21:45:08 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/timconsidine" aria-label="Profile: timconsidine">@<bdi>timconsidine</bdi></a> Yep, remember to zoom out when you get stuck.</p>
<p dir="auto"><a href="http://Fly.io" target="_blank" rel="noopener noreferrer nofollow ugc">Fly.io</a> is awesome and a great use case for a harness like this.</p>
<p dir="auto">Don't mind all the fear porn out there, it's deliberate narrative and they don't share any logs or proof.</p>
]]></description><link>https://forum.cloudron.io/post/132250</link><guid isPermaLink="true">https://forum.cloudron.io/post/132250</guid><dc:creator><![CDATA[robi]]></dc:creator><pubDate>Sun, 01 Nov 2026 21:45:08 GMT</pubDate></item><item><title><![CDATA[Reply to 🚀 HarnessRouter: community package now available on Sun, 01 Nov 2026 21:40:53 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto">Mercury is in retrograde, has some effects during Halloween.</p>
</blockquote>
<p dir="auto">Thank you, I knew something was off <img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f923.png?v=edadd94e5e6" class="not-responsive emoji emoji-android emoji--rolling_on_the_floor_laughing" style="height:1.4em;width:auto;vertical-align:middle" title=":rolling_on_the_floor_laughing:" alt="🤣" /></p>
<p dir="auto">I love all of this stuff, but almost always trip up over a deployment issue : giving the tool stuff to work on / with.</p>
<p dir="auto">I'm very reluctant to run AI tools on my primary device (Mac laptop) apart from Opencode and TRAE, both of which I endeavour to watch like a hawk (but probably fail on occasions).  I never give Ai tools access to primary email, just work off secondary accounts which get fed with email from primary.<br />
Edging towards moving dev projects off laptop and then using opencode-web.  But not making much progress.<br />
Theoretically every project needs its own silo / environment, but can't get my head around structuring and managing that.</p>
<p dir="auto">Still playing with firing up on-demand environments (like <a href="http://fly.io" target="_blank" rel="noopener noreferrer nofollow ugc">fly.io</a> sprites and machines) but also slow progress.</p>
]]></description><link>https://forum.cloudron.io/post/132246</link><guid isPermaLink="true">https://forum.cloudron.io/post/132246</guid><dc:creator><![CDATA[timconsidine]]></dc:creator><pubDate>Sun, 01 Nov 2026 21:40:53 GMT</pubDate></item><item><title><![CDATA[Reply to 🚀 HarnessRouter: community package now available on Sun, 01 Nov 2026 18:22:31 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/timconsidine" aria-label="Profile: timconsidine">@<bdi>timconsidine</bdi></a> Mercury is in retrograde, has some effects during Halloween.</p>
<p dir="auto">It's basically a Trae for many other Trae's and Hermes and OpenCode, etc...</p>
<p dir="auto">Manage many, vs one at a time.</p>
]]></description><link>https://forum.cloudron.io/post/132234</link><guid isPermaLink="true">https://forum.cloudron.io/post/132234</guid><dc:creator><![CDATA[robi]]></dc:creator><pubDate>Sun, 01 Nov 2026 18:22:31 GMT</pubDate></item><item><title><![CDATA[Reply to 🚀 HarnessRouter: community package now available on Sat, 31 Oct 2026 20:14:10 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/timconsidine" aria-label="Profile: timconsidine">@<bdi>timconsidine</bdi></a></p>
<p dir="auto">Hey Tim, thanks for looking and commenting!</p>
<p dir="auto"><strong>The problem.</strong> Coding agents like Claude Code, Codex and OpenCode are like very capable helpers who only work at a keyboard. You type to them in a terminal, they read files, run commands and write code. That works when you are sitting there. It doesn't work when your app or script wants to hand them a job.</p>
<p dir="auto"><strong>What HarnessRouter does</strong>. It's a front desk for those helpers. Your program walks up to the desk and says "please do this task" through one standard API. HarnessRouter then:</p>
<ul>
<li>picks the helper you asked for (Codex, OpenCode or Claude Code);</li>
<li>gives it a private room to work in (its own folder and its own user account);</li>
<li>lets it think with whichever AI model you've connected;</li>
<li>streams back what it's doing, and keeps a written record of everything it did.</li>
</ul>
<p dir="auto">Later you can come back and say "carry on from where you left off", and it picks up the same job.</p>
<p dir="auto"><strong>Why that's useful.</strong> You can build things on top of agents without wiring each tool up yourself:</p>
<ul>
<li>a support tool that drafts replies;</li>
<li>a script that reviews code every night;</li>
<li>a feature in your own product that "does the task for the user".</li>
</ul>
<p dir="auto">One API covers every helper, and you can swap helpers or models without rewriting your code.</p>
<p dir="auto"><strong>What the Cloudron package adds.</strong> These helpers can run commands, so you don't want them poking around your server. Our package keeps them fenced in:</p>
<ul>
<li>One room each. Every job runs as its own user and can't see the others.</li>
<li>No keys in hand. The helpers never hold your real AI provider key. HarnessRouter holds it and passes requests along for them.</li>
<li>Fenced off from your server. A firewall stops them reaching your other apps, your internal network or email. They can still reach the internet, which they need for models and code repositories.</li>
<li>Cloudron housekeeping. You get backups, one-click updates and a generated password.</li>
</ul>
<p dir="auto"><strong>In one line:</strong> HarnessRouter turns "an AI agent in a terminal" into "an AI agent service your programs can call", and the Cloudron package makes running it on your own server reasonably safe.</p>
]]></description><link>https://forum.cloudron.io/post/132203</link><guid isPermaLink="true">https://forum.cloudron.io/post/132203</guid><dc:creator><![CDATA[LoudLemur]]></dc:creator><pubDate>Sat, 31 Oct 2026 20:14:10 GMT</pubDate></item><item><title><![CDATA[Reply to 🚀 HarnessRouter: community package now available on Sat, 31 Oct 2026 19:57:06 GMT]]></title><description><![CDATA[<p dir="auto">I read all the words, but my brain doesn't understand the use case.<br />
Maybe I am having a bad day.</p>
]]></description><link>https://forum.cloudron.io/post/132202</link><guid isPermaLink="true">https://forum.cloudron.io/post/132202</guid><dc:creator><![CDATA[timconsidine]]></dc:creator><pubDate>Sat, 31 Oct 2026 19:57:06 GMT</pubDate></item></channel></rss>