<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Chuck Benedict</title>
    <description>The latest articles on DEV Community by Chuck Benedict (@chuckb).</description>
    <link>https://dev.to/chuckb</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4239216%2F18a6aac8-f3ff-4fa0-a90f-ab47f0cf365b.jpg</url>
      <title>DEV Community: Chuck Benedict</title>
      <link>https://dev.to/chuckb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chuckb"/>
    <language>en</language>
    <item>
      <title>Cloud Agents Still Start as a Network Problem</title>
      <dc:creator>Chuck Benedict</dc:creator>
      <pubDate>Thu, 12 Nov 2026 16:23:35 +0000</pubDate>
      <link>https://dev.to/chuckb/cloud-agents-still-start-as-a-network-problem-18ia</link>
      <guid>https://dev.to/chuckb/cloud-agents-still-start-as-a-network-problem-18ia</guid>
      <description>&lt;p&gt;The local model or document tool may already work. Connecting a cloud agent to that named capability can still become a network project.&lt;/p&gt;

&lt;p&gt;A developer has a useful model running on a GPU under the desk. A cloud agent could use it for a task right now. The model works. The agent works. Getting one to call the other is where the afternoon goes.&lt;/p&gt;

&lt;p&gt;The same problem appears with a local document suite or an MCP server that can work on the files people actually use. The capability is already there. The cloud agent needs a path to it.&lt;/p&gt;

&lt;p&gt;So the work becomes construction: make a local service reachable, bridge a stdio server to HTTP, configure a tunnel, decide who can call the endpoint, and maintain the arrangement after the demonstration is over.&lt;/p&gt;

&lt;p&gt;None of that runs the model or edits the document. It makes those jobs possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tool arrived before the path
&lt;/h2&gt;

&lt;p&gt;People are already building &lt;a href="https://github.com/sandraschi/libreoffice-mcp" rel="noopener noreferrer"&gt;MCP servers for LibreOffice Writer, Calc, and Impress&lt;/a&gt;. Local model servers are similarly easy to start. An available tool, though, is not necessarily a reachable tool. When the agent runs in a cloud service and the capability runs on a private machine, someone must connect the two.&lt;/p&gt;

&lt;p&gt;There are sound ways to do that. &lt;a href="https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/overview" rel="noopener noreferrer"&gt;Anthropic has documented an outbound MCP tunnel&lt;/a&gt; for its platform. &lt;a href="https://developers.cloudflare.com/tunnel/" rel="noopener noreferrer"&gt;Cloudflare Tunnel&lt;/a&gt; and &lt;a href="https://ngrok.com/use-cases/share-localhost" rel="noopener noreferrer"&gt;ngrok&lt;/a&gt; can carry requests to a local service without an inbound firewall rule. A &lt;a href="https://github.com/sparfenyuk/mcp-proxy" rel="noopener noreferrer"&gt;proxy can adapt a stdio MCP server&lt;/a&gt; for a remote client.&lt;/p&gt;

&lt;p&gt;These are useful answers. They also leave an operator to assemble the route, fit it to the agent’s host, and work out which caller should be allowed to use which local tool.&lt;/p&gt;

&lt;p&gt;That is the part I keep noticing. The person who wanted to use a GPU has become the integrator of a small network service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reachability is only one decision
&lt;/h2&gt;

&lt;p&gt;An outbound connection solves an important problem: the machine with the tool need not accept unsolicited inbound traffic. It does not, by itself, decide who may invoke the tool, how long that permission lasts, or which local capability the caller can reach.&lt;/p&gt;

&lt;p&gt;Those decisions matter when the tool can read a document, change a spreadsheet, or consume a GPU. They also matter after a successful demo, when a temporary arrangement begins to look permanent.&lt;/p&gt;

&lt;p&gt;Running the tool locally does not mean its data never leaves the machine. A cloud agent may receive prompts, tool arguments, and results. The useful distinction is that the local application and its resources need not be moved to a public host merely to make them callable. What crosses the connection should be understood and governed.&lt;/p&gt;

&lt;h2&gt;
  
  
  A smaller job for the operator
&lt;/h2&gt;

&lt;p&gt;Suppose the first step were to name the local capability and authorize a particular caller to use it for a particular purpose or window. The machine could establish outbound connectivity, and the operator could spend their time on the model or document rather than building its route.&lt;/p&gt;

&lt;p&gt;Some environments will still need custom integration. Some organizations will choose a tunnel they already operate. Those are reasonable choices.&lt;/p&gt;

&lt;p&gt;But tunnel assembly should not be the assumed price of using a tool on a machine you control.&lt;/p&gt;

&lt;p&gt;The question is why a working cloud agent and a working local tool still need a network project before they can do useful work together.&lt;/p&gt;

&lt;p&gt;Cloud agents need tools on machines you control?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thirp.net/marketplace/" rel="noopener noreferrer"&gt;See Marketplace&lt;/a&gt; · &lt;a href="https://thirp.net/interest/?sku=marketplace" rel="noopener noreferrer"&gt;Start a conversation&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/sandraschi/libreoffice-mcp" rel="noopener noreferrer"&gt;MCP servers for LibreOffice Writer, Calc, and Impress&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://platform.claude.com/docs/en/agents-and-tools/mcp-tunnels/overview" rel="noopener noreferrer"&gt;Anthropic has documented an outbound MCP tunnel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.cloudflare.com/tunnel/" rel="noopener noreferrer"&gt;Cloudflare Tunnel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ngrok.com/use-cases/share-localhost" rel="noopener noreferrer"&gt;ngrok&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sparfenyuk/mcp-proxy" rel="noopener noreferrer"&gt;proxy can adapt a stdio MCP server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;This piece first appeared on &lt;a href="https://thirp.net/field-notes/cloud-agents-still-start-as-a-network-problem/" rel="noopener noreferrer"&gt;thirp.net&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>networking</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>What It Costs to Get to the Service</title>
      <dc:creator>Chuck Benedict</dc:creator>
      <pubDate>Wed, 11 Nov 2026 13:46:55 +0000</pubDate>
      <link>https://dev.to/chuckb/what-it-costs-to-get-to-the-service-3a07</link>
      <guid>https://dev.to/chuckb/what-it-costs-to-get-to-the-service-3a07</guid>
      <description>&lt;p&gt;A support ticket can stay open all day before an engineer gets ten minutes with the failing service. What would it be worth to change that?&lt;/p&gt;

&lt;p&gt;Suppose an overnight batch misses its window. The vendor’s engineer wants to know whether the transaction service is still making progress. The customer sends the overnight log. It tells the engineer when the batch started. What the engineer needs now is a look at the live queue.&lt;/p&gt;

&lt;p&gt;The customer has someone who can run the query. She’s available after lunch. By then the queue may have cleared on its own, which is good news for today’s batch and less helpful to the person who will be on call tomorrow.&lt;/p&gt;

&lt;p&gt;In the last field note I wrote about what it costs to take custody of a customer’s diagnostic files. There’s another cost in this exchange. Two organizations have people qualified to answer a fairly simple question, and they spend part of the day arranging for one of them to ask it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the ticket clock can tell you
&lt;/h2&gt;

&lt;p&gt;Say the engineer spends twenty minutes reviewing the log and writing instructions, then another twenty on a call walking the customer through the query. Four hours pass between the request and the answer. If the engineer worked other cases in the meantime, charging four hours of labor to this ticket would overstate the cost. The customer still waited four hours. And a live observation that was possible at eight in the morning may be impossible at noon.&lt;/p&gt;

&lt;p&gt;I’d keep both figures. Engineer time tells a support director something about staffing. Elapsed time tells the customer something about the service they received. For a missed batch, the more consequential question may be whether anyone got an answer in time to rerun it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting a price against the hours
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://thirp.net/cloud-for-support/" rel="noopener noreferrer"&gt;Thirp Cloud for Support&lt;/a&gt; is live now, so there’s an actual price to put against that example. Assume, for the sake of arithmetic, that an hour of support engineering time costs the vendor $100 fully loaded. Substitute your own figure. Here’s how much engineering time a team would have to recover each month to cover the subscription on labor alone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thirp.net/pricing/" rel="noopener noreferrer"&gt;Published monthly pricing&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Customer environments&lt;/th&gt;
&lt;th&gt;Monthly subscription&lt;/th&gt;
&lt;th&gt;Time to recover across all environments&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;$99&lt;/td&gt;
&lt;td&gt;About 1 hour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;$274&lt;/td&gt;
&lt;td&gt;About 2 hours 45 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;$749&lt;/td&gt;
&lt;td&gt;About 7 hours 30 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;At thirty environments, two escalations a month that each save four hours would cover $749. The same two escalations saving forty minutes apiece would recover about $133 of engineering time. Both are plausible on paper. Which one resembles your ticket history?&lt;/p&gt;

&lt;p&gt;Recovered time matters if the team can use it. Payroll may be exactly the same next month. The benefit might show up as a senior engineer getting through two more cases, or as a customer getting the batch rerun before the next shift starts. I wouldn’t assign a dollar value to either without asking the people who did the work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The quiet sites count, too
&lt;/h2&gt;

&lt;p&gt;The subscription covers environments through their quiet months. If three customers account for most of the difficult cases, those three may justify enrollment quite readily. The other twenty-seven deserve their own arithmetic. Some may already give the vendor a prompt, approved way to reach the service. Some may need help only once a year. It is entirely reasonable to arrive at different answers for different customers.&lt;/p&gt;

&lt;p&gt;There’s also work on the customer’s side. Someone has to review the agent, agree on which service the vendor may reach, and decide who can approve and end a session. A fair comparison includes that person’s time alongside the calls and log collection the existing process asks of them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it against a closed ticket
&lt;/h2&gt;

&lt;p&gt;For the 30-day trial, I’d start with a case both sides remember. Reproduce it in the vendor’s own environment first. Then, with one willing customer, have their approver grant access to the named service, let the support engineer run the diagnostic, and have the approver end the connection. Check the access record together.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thirp.net/for-customers/" rel="noopener noreferrer"&gt;How customer approval works&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now put the old ticket next to what you just did. Which calls or handoffs would have disappeared? Which steps would still have taken just as long? Above all, would the engineer have seen the queue while there was still something in it to see?&lt;/p&gt;

&lt;p&gt;Support software in customer-controlled environments?&lt;/p&gt;

&lt;p&gt;Thirp Cloud for Support is paid, customer-authorized access to one named private Service—without inbound ports, VPN exchanges, or uncontrolled diagnostic bundles. Every plan starts with a 30-day free trial.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://thirp.net/how-it-works/" rel="noopener noreferrer"&gt;See how Support works&lt;/a&gt; · &lt;a href="https://api.thirp.io/console/signup" rel="noopener noreferrer"&gt;Start a free trial&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This piece first appeared on &lt;a href="https://thirp.net/field-notes/what-it-costs-to-get-to-the-service/" rel="noopener noreferrer"&gt;thirp.net&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>support</category>
      <category>devops</category>
      <category>security</category>
      <category>software</category>
    </item>
  </channel>
</rss>
