<?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: MishabuildingAI</title>
    <description>The latest articles on DEV Community by MishabuildingAI (@mishabuildingai).</description>
    <link>https://dev.to/mishabuildingai</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%2F4087527%2F3006f1b3-ee32-459b-8403-d3bbb38c3377.png</url>
      <title>DEV Community: MishabuildingAI</title>
      <link>https://dev.to/mishabuildingai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mishabuildingai"/>
    <language>en</language>
    <item>
      <title>What is an agent runtime? Six questions that tell you if you need one</title>
      <dc:creator>MishabuildingAI</dc:creator>
      <pubDate>Tue, 29 Sep 2026 03:08:45 +0000</pubDate>
      <link>https://dev.to/mishabuildingai/what-is-an-agent-runtime-six-questions-that-tell-you-if-you-need-one-4mai</link>
      <guid>https://dev.to/mishabuildingai/what-is-an-agent-runtime-six-questions-that-tell-you-if-you-need-one-4mai</guid>
      <description>&lt;p&gt;An agent runtime is the layer that keeps an agent's work alive between turns: the session's state and event history, when the machine sleeps and wakes, pauses for approval, and the credentials the agent must never read.&lt;/p&gt;

&lt;p&gt;That's the short version. The longer one matters because the four words people use for this stack (framework, harness, runtime, sandbox) mean different things depending on who is writing. LangChain, which coined a lot of this vocabulary, says in &lt;a href="https://www.langchain.com/blog/agent-frameworks-runtimes-and-harnesses-oh-my" rel="noopener noreferrer"&gt;its own post&lt;/a&gt; that there is no clear definition of framework versus runtime versus harness.&lt;/p&gt;

&lt;p&gt;Disclosure: I work on &lt;a href="https://gobare.dev" rel="noopener noreferrer"&gt;Gobare&lt;/a&gt;, a hosted agent runtime. We run the three layers as separate processes, so the lines below are ones we had to draw in code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Four words, four jobs
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;What it is&lt;/th&gt;
&lt;th&gt;What it owns&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Framework&lt;/td&gt;
&lt;td&gt;A library you write an agent with&lt;/td&gt;
&lt;td&gt;Your control flow&lt;/td&gt;
&lt;td&gt;LangChain, CrewAI, OpenAI Agents SDK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Harness&lt;/td&gt;
&lt;td&gt;A finished agent loop around a model&lt;/td&gt;
&lt;td&gt;Prompting, tool calls, context within a turn&lt;/td&gt;
&lt;td&gt;pi, Claude Agent SDK, Codex&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runtime&lt;/td&gt;
&lt;td&gt;The service that runs that loop over time&lt;/td&gt;
&lt;td&gt;State, events, lifecycle, waits, credentials&lt;/td&gt;
&lt;td&gt;Bedrock AgentCore Runtime, Google Agent Runtime, Gobare&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sandbox&lt;/td&gt;
&lt;td&gt;An isolated machine&lt;/td&gt;
&lt;td&gt;Where commands, files and browsers execute&lt;/td&gt;
&lt;td&gt;E2B, Daytona, Modal&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two things make this messier in practice. OpenAI's Agents API and Claude Managed Agents bundle all of it behind one API, so comparing them with a sandbox provider goes nowhere. And some roundups file sandboxes under "runtimes", which is true only in the sense that code runs there.&lt;/p&gt;

&lt;h2&gt;
  
  
  One test that separates them
&lt;/h2&gt;

&lt;p&gt;Ask what is still there when the agent's process ends: the turn finished, the machine was reclaimed, or something crashed.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A framework leaves nothing. It was a library in your process.&lt;/li&gt;
&lt;li&gt;A harness leaves whatever it wrote to disk.&lt;/li&gt;
&lt;li&gt;A sandbox leaves its filesystem until it is destroyed.&lt;/li&gt;
&lt;li&gt;A runtime is the thing that decides the answer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The hyperscalers answer it differently, and say so. AWS's &lt;a href="https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/runtime-sessions.html" rel="noopener noreferrer"&gt;AgentCore Runtime&lt;/a&gt; gives each session a microVM, stops it after 15 minutes idle by default or 8 hours of compute, and documents session state as ephemeral, with AgentCore Memory as the place for anything durable. Google's &lt;a href="https://docs.cloud.google.com/gemini-enterprise-agent-platform/build/runtime" rel="noopener noreferrer"&gt;Agent Runtime&lt;/a&gt;, formerly Vertex AI Agent Engine, supports long-running operations of up to seven days. Both are coherent. The mistake is picking one without reading its answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a runtime has to do
&lt;/h2&gt;

&lt;p&gt;If you build one yourself, this is the list you end up writing:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Keep the session.&lt;/strong&gt; Transcript and events stored outside the machine, replayable from the last event a client saw.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sleep and wake the machine.&lt;/strong&gt; And tell "idle" from "running a long build", which is where naive timers break.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wait for people and for your code.&lt;/strong&gt; A function only your backend can run, an approval, a question. Durable, so a restart doesn't lose the question.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hold secrets the agent can't read.&lt;/strong&gt; The model key should never enter the sandbox, which means something outside it makes the model call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notify your systems.&lt;/strong&gt; Signed webhooks, retried, delivered at least once, so your backend doesn't hold a connection open for an hour.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enforce limits.&lt;/strong&gt; Concurrency, rate limits, a maximum lifetime per machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Let results outlive the machine.&lt;/strong&gt; OpenAI's hosted sandboxes and Gobare both publish files under &lt;code&gt;/workspace/outputs&lt;/code&gt; as artifacts, which suggests this is settling into a shared convention.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Do you need one? Six questions
&lt;/h2&gt;

&lt;p&gt;Count how many are true for your agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] A task takes longer than one HTTP request will wait.&lt;/li&gt;
&lt;li&gt;[ ] It has to stop and wait for a person or your system.&lt;/li&gt;
&lt;li&gt;[ ] Many sessions run at once, for many users.&lt;/li&gt;
&lt;li&gt;[ ] A crash or a deploy must not lose the work.&lt;/li&gt;
&lt;li&gt;[ ] It holds credentials the agent itself must not read.&lt;/li&gt;
&lt;li&gt;[ ] Someone other than the person who started it reads the result later.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Zero or one: a model and a harness are enough. A chatbot that answers in one request doesn't need a runtime. Two or more: you are building one whether you call it that or not. It shows up as a queue, a state table, a reaper for idle machines, a webhook sender and a secret boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build it or use one
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Build&lt;/strong&gt; on a durable execution engine (Temporal, Inngest), a sandbox provider and a harness. You get every choice and own every failure mode. It is the right call when the runtime is your product.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use one&lt;/strong&gt;, and pick by what it binds you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AgentCore Runtime and Google Agent Runtime bind you to a cloud you may already be on.&lt;/li&gt;
&lt;li&gt;OpenAI's Agents API and Claude Managed Agents bind you to a model provider.&lt;/li&gt;
&lt;li&gt;Gobare runs the open-source pi harness on any model you connect with your own key. It runs on a single sandbox provider and you can't bring your own compute, and a sandbox is reclaimed two hours after it was created, paused time included. Those are real limits to weigh.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which of the six questions was the one that pushed you to build a runtime, or away from it?&lt;/p&gt;

&lt;p&gt;The full version, with a layer diagram and an FAQ on AgentCore and Google's Agent Runtime, is on &lt;a href="https://gobare.dev/blog/what-is-an-agent-runtime" rel="noopener noreferrer"&gt;gobare.dev&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>architecture</category>
      <category>backend</category>
    </item>
    <item>
      <title>Before you leave Claude Managed Agents, check these five things</title>
      <dc:creator>MishabuildingAI</dc:creator>
      <pubDate>Tue, 29 Sep 2026 03:06:03 +0000</pubDate>
      <link>https://dev.to/mishabuildingai/before-you-leave-claude-managed-agents-check-these-five-things-36i2</link>
      <guid>https://dev.to/mishabuildingai/before-you-leave-claude-managed-agents-check-these-five-things-36i2</guid>
      <description>&lt;p&gt;If you build only on Claude, Claude Managed Agents is the hosted harness to use. Here are the five cases where you need something else, checked against Anthropic's docs.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: I work on Gobare, one of the alternatives below. I've quoted Anthropic's documentation rather than paraphrasing it, and there's a section on where we're weaker.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When to stay
&lt;/h2&gt;

&lt;p&gt;Claude Managed Agents gives you a lot that is hard to build yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Versioned agent configurations.&lt;/li&gt;
&lt;li&gt;Sandboxes that run in "an Anthropic-managed cloud sandbox, or a self-hosted sandbox on your own infrastructure".&lt;/li&gt;
&lt;li&gt;Scheduled deployments for cron-style runs, and per-session spend budgets.&lt;/li&gt;
&lt;li&gt;Full checkpoints. When a session goes idle, "its sandbox is checkpointed, preserving the full sandbox state, including the filesystem, installed packages, and any files the agent created."&lt;/li&gt;
&lt;li&gt;Published pricing: "$0.08 per session-hour", and "Runtime is measured to the millisecond and accrues only while the session's status is &lt;code&gt;running&lt;/code&gt;."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If none of the checks below applies to you, stop reading and stay.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check 1: does the model have to be something other than Claude?
&lt;/h2&gt;

&lt;p&gt;Anthropic describes the product as the harness "for running Claude as an autonomous agent", and the setup guide says "Claude 4.5 and later models are supported."&lt;/p&gt;

&lt;p&gt;If your evals pick DeepSeek for bulk turns, a customer mandates a provider, or you route by cost, the harness can't run it. This is the most common reason people search for an alternative, and the simplest to test: list the models your product needs in a year.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check 2: do you need to read or change the agent loop?
&lt;/h2&gt;

&lt;p&gt;You configure the system prompt, tools, MCP servers and skills. How tool calls are dispatched, how errors are recovered and how context is compacted runs on Anthropic's side.&lt;/p&gt;

&lt;p&gt;Most teams never need to see that code. If you've ever had to step through a harness to understand why an agent looped, you'll know whether you're one of the teams that does.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check 3: can your webhooks afford to drop an event?
&lt;/h2&gt;

&lt;p&gt;This one surprised me. Anthropic's webhook docs say: "Anthropic makes up to three delivery attempts", and after the last one "the event is dropped: it isn't queued for later delivery and there's no signal that it was lost." They also recommend reconciling by listing or fetching the resource through the API.&lt;/p&gt;

&lt;p&gt;That's a reasonable design, and it's documented honestly. It does mean that if a webhook triggers billing, a database write or a user notification, you need a polling reconciler next to it. Check whether you've built one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check 4: will someone need a shell in the running machine?
&lt;/h2&gt;

&lt;p&gt;When a long agent run gets stuck on a broken native dependency or a hung background process, the event stream often isn't enough. I didn't find a documented way to get an interactive shell into an Anthropic-managed cloud sandbox. With a self-hosted sandbox the machine is yours, so you can get in, but then you run the compute.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check 5: does compliance require Zero Data Retention?
&lt;/h2&gt;

&lt;p&gt;Anthropic is direct: "Managed Agents is not currently eligible for Zero Data Retention or HIPAA Business Associate Agreement (BAA) coverage", because sessions store their history, sandbox state and outputs.&lt;/p&gt;

&lt;p&gt;No hosted alternative I know of fixes this, including ours. If ZDR is a hard requirement, self-host.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you hit one: three routes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Who runs it&lt;/th&gt;
&lt;th&gt;Models&lt;/th&gt;
&lt;th&gt;Fixes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Stay on Claude Managed Agents&lt;/td&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;Claude 4.5+&lt;/td&gt;
&lt;td&gt;None of the five, but it's the best at everything else&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Self-host open source (OpenMA, open-managed-agents, AstraBox)&lt;/td&gt;
&lt;td&gt;You&lt;/td&gt;
&lt;td&gt;Any&lt;/td&gt;
&lt;td&gt;Any of the five, because the code, the machines and the data are yours; you run the platform&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosted runtime with your own key (Gobare)&lt;/td&gt;
&lt;td&gt;Gobare&lt;/td&gt;
&lt;td&gt;Nine providers plus any OpenAI- or Anthropic-compatible endpoint&lt;/td&gt;
&lt;td&gt;1, 3 and 4; for 2 you can read the loop but not change it&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For the self-hosted route, &lt;a href="https://github.com/openma-ai/open-managed-agents" rel="noopener noreferrer"&gt;OpenMA&lt;/a&gt; (Apache-2.0) describes itself as "an open-source alternative to Claude Managed Agents and OpenAI Agents API" and also offers a hosted version. &lt;a href="https://github.com/rogeriochaves/open-managed-agents" rel="noopener noreferrer"&gt;open-managed-agents&lt;/a&gt; (AGPL-3.0) adds org, team and RBAC governance.&lt;/p&gt;

&lt;p&gt;On the hosted route, what Gobare does for checks 1 to 4: you connect a key from any supported provider and it never enters the sandbox. The harness is &lt;a href="https://github.com/earendil-works/pi" rel="noopener noreferrer"&gt;pi&lt;/a&gt;, which is open source and runs unmodified. Webhooks are retried six times over roughly nine hours, with dead-letter tracking. An engineer can &lt;code&gt;ssh -p 2222 s-$SESSION@ssh.gobare.dev&lt;/code&gt; into the session's machine, after registering a key in the Console.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Gobare is weaker
&lt;/h2&gt;

&lt;p&gt;Before you switch to us, know what you give up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No self-hosted sandboxes, no scheduled runs, no per-session budgets, no multi-agent threads.&lt;/li&gt;
&lt;li&gt;Saved agents aren't versioned.&lt;/li&gt;
&lt;li&gt;Snapshots are best-effort: no &lt;code&gt;.git&lt;/code&gt;, no &lt;code&gt;node_modules&lt;/code&gt;, skipped above 300 MB, and running processes aren't kept.&lt;/li&gt;
&lt;li&gt;A sandbox is reclaimed two hours after it was created, paused time included, and a running turn is interrupted. Sessions with a published address or an open SSH connection are exempt, and the next input starts a fresh sandbox from the snapshot.&lt;/li&gt;
&lt;li&gt;10 session creations per minute per token; 25 concurrent sessions per organisation by default.&lt;/li&gt;
&lt;li&gt;We also store the transcript, so we're not ZDR either.&lt;/li&gt;
&lt;li&gt;Pricing isn't published yet. It's free while in alpha, with no margin on tokens.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;p&gt;Run the five checks. If none applies, stay on Claude Managed Agents. If check 5 applies, self-host. If only checks 1, 3 or 4 apply and you'd rather not run a platform, a hosted runtime on your own key is the middle route.&lt;/p&gt;

&lt;p&gt;The full comparison, with a concept map from Managed Agents primitives to another runtime and side-by-side requests, is on &lt;a href="https://gobare.dev/blog/claude-managed-agents-alternative" rel="noopener noreferrer"&gt;gobare.dev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Which of the five made you look for an alternative, or is there a sixth I've missed?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>llm</category>
      <category>api</category>
    </item>
    <item>
      <title>Before you pick a hosted agent runtime, check what happens at idle</title>
      <dc:creator>MishabuildingAI</dc:creator>
      <pubDate>Sun, 27 Sep 2026 14:05:52 +0000</pubDate>
      <link>https://dev.to/mishabuildingai/before-you-pick-a-hosted-agent-runtime-check-what-happens-at-idle-4lj7</link>
      <guid>https://dev.to/mishabuildingai/before-you-pick-a-hosted-agent-runtime-check-what-happens-at-idle-4lj7</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclosure: I work on Gobare, one of the three runtimes below. To keep that from mattering, I quote the other two instead of describing them, and there is a section on where each of us loses, Gobare included. All quotes are from public docs, checked 27 September 2026. Misha.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I read the sandbox docs of three hosted agent runtimes side by side, ours included. In a 30-second demo they look the same. The agent writes code, runs it, shows a result.&lt;/p&gt;

&lt;p&gt;The difference is one question the demo never asks:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After the agent stops typing, does its machine still exist?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Perplexity, OpenAI and Gobare give three different answers. None of them is wrong. They are building different things. But if you pick one without checking, you find out an hour into a job, at the step where the work was supposed to land.&lt;/p&gt;

&lt;p&gt;This post is the check I wish I had done first.&lt;/p&gt;

&lt;h2&gt;
  
  
  First, be clear which OpenAI product you mean
&lt;/h2&gt;

&lt;p&gt;OpenAI ships two things with similar names. They are not layers of each other.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Agents SDK&lt;/strong&gt; is open source and runs in your process. You own the loop. Other models work through LiteLLM (Python) or the AI SDK adapter (TypeScript).&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Agents API&lt;/strong&gt; is hosted. OpenAI runs the loop, and it is built around OpenAI models.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So "can I use Claude with OpenAI's agents?" has two answers. In the SDK, yes. In the hosted Agents API, the one that gives you a sandbox, non-OpenAI models are on a second-class path.&lt;/p&gt;

&lt;p&gt;Everything below is about hosted runtimes: the ones that give you a machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three answers, in their own words
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Perplexity&lt;/strong&gt;, on their &lt;a href="https://docs.perplexity.ai/docs/agent-api/tools/sandbox" rel="noopener noreferrer"&gt;sandbox tool&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Multiple executions in a single response share the same container: files written and packages installed by an earlier step are still there for a later one."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Between responses, nothing is promised. That is the right design for an answer engine that computes. If you want an answer, paying to keep a machine alive afterwards is waste.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OpenAI&lt;/strong&gt;, on &lt;a href="https://developers.openai.com/api/docs/guides/agents-api/environments/openai-hosted" rel="noopener noreferrer"&gt;hosted sandboxes&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"If activity and keep-alives stop for an hour, the sandbox can be deleted."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Files you write to &lt;code&gt;/workspace/outputs&lt;/code&gt; become immutable artifacts that "remain downloadable after the sandbox expires." The rest of the workspace does not survive. Clean contract: the sandbox is a place to do work, not to keep it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gobare&lt;/strong&gt;, on &lt;a href="https://docs.gobare.dev/limits" rel="noopener noreferrer"&gt;limits&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"A workspace is also paused after five minutes with nothing happening, and woken by the next thing you send."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Before the machine is reclaimed, the workspace files are snapshotted. It is best-effort. Git history, installed dependencies and running processes are not in the snapshot, and a workspace over 300MB is skipped.&lt;/p&gt;

&lt;p&gt;Side by side:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Perplexity&lt;/th&gt;
&lt;th&gt;OpenAI hosted&lt;/th&gt;
&lt;th&gt;Gobare&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Machine lives for&lt;/td&gt;
&lt;td&gt;One response&lt;/td&gt;
&lt;td&gt;Until an hour with no activity or keep-alives&lt;/td&gt;
&lt;td&gt;Paused after five idle minutes, woken by your next message&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What survives&lt;/td&gt;
&lt;td&gt;Nothing promised between responses&lt;/td&gt;
&lt;td&gt;Files in &lt;code&gt;/workspace/outputs&lt;/code&gt;, as artifacts&lt;/td&gt;
&lt;td&gt;Workspace files, best-effort snapshot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;What doesn't&lt;/td&gt;
&lt;td&gt;The container&lt;/td&gt;
&lt;td&gt;The rest of the workspace&lt;/td&gt;
&lt;td&gt;Git history, installed deps, running processes; workspaces over 300MB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Three workloads where the answer decides things
&lt;/h2&gt;

&lt;p&gt;These are not failures of a bad runtime. They are where a correct runtime, picked for the wrong shape of work, gives you a system you cannot finish.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A job longer than the idle window.&lt;/strong&gt; Say a 40-minute refactor across several turns, with gaps while your dispatcher does something else. On a per-request container each response starts clean, so this can't be expressed. On a session sandbox it works, if you know exactly what "idle" means to your provider.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A task that stops to ask a human.&lt;/strong&gt; Approval mid-run means the machine waits, maybe for hours. Whether that wait is free, billed or impossible depends on how the runtime treats an idle machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An agent that serves something.&lt;/strong&gt; If the agent starts a preview server, the machine has to exist when the visitor arrives. That can be long after the agent stopped writing code. If the sandbox goes when execution ends, the preview URL goes with it.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The container has a public price
&lt;/h2&gt;

&lt;p&gt;Perplexity publishes a price for the container itself, on their &lt;a href="https://docs.perplexity.ai/getting-started/pricing" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"$0.03 per session (≤20-min billing window)"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is roughly $0.09 an hour for a managed container. It is the clearest public anchor I found for what hosted agent compute costs.&lt;/p&gt;

&lt;p&gt;It also explains the product. Perplexity's money is in the search index. For them, the runtime does not need to be profitable, and that sets the floor for everyone else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where each one loses
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Perplexity:&lt;/strong&gt; no session state across responses. If work has to survive a response boundary, you build that yourself on &lt;code&gt;previous_response_id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI hosted:&lt;/strong&gt; an hour of quiet and the working tree is gone. Only what you published to &lt;code&gt;/workspace/outputs&lt;/code&gt; stays. Non-OpenAI models are second-class on the hosted path.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI self-hosted:&lt;/strong&gt; you own the lifecycle, so you also own its outages. With &lt;a href="https://developers.openai.com/api/docs/guides/agents-api/environments/providers/daytona" rel="noopener noreferrer"&gt;Daytona&lt;/a&gt; as the provider you must set &lt;code&gt;auto_stop_interval=0&lt;/code&gt;, or the sandbox stops mid-agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gobare:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Single sandbox provider (E2B). No bring-your-own-compute. That is real lock-in, and the fairest criticism of us here.&lt;/li&gt;
&lt;li&gt;A workspace is reclaimed two hours of active time after it starts. Paused time doesn't count, but a turn still running at that point fails.&lt;/li&gt;
&lt;li&gt;No model fallback chain. Perplexity tries up to five models; we have nothing equivalent.&lt;/li&gt;
&lt;li&gt;Saved agents are not versioned.&lt;/li&gt;
&lt;li&gt;No search index.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Questions to ask any runtime's docs
&lt;/h2&gt;

&lt;p&gt;Take this list to whichever runtime you are evaluating. Every item comes from a place where these three differ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lifetime&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Within one response or turn, do executions share a container?&lt;/li&gt;
&lt;li&gt;Is anything promised between responses?&lt;/li&gt;
&lt;li&gt;How long can the machine sit idle before it is paused or deleted?&lt;/li&gt;
&lt;li&gt;What counts as activity? On self-hosted compute, does the provider's idle tracking see the agent's connection, or do I have to disable auto-stop?&lt;/li&gt;
&lt;li&gt;Is there a hard cap on session lifetime, and what happens to a turn that is running when it hits?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;State&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What survives the machine: nothing, an outputs folder, or the whole workspace?&lt;/li&gt;
&lt;li&gt;What is excluded? Git history, installed dependencies, running processes, anything over a size limit?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Workload fit&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can the machine wait hours for a human? Is that wait free, billed or impossible?&lt;/li&gt;
&lt;li&gt;Can something the agent serves stay reachable after it stops generating?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Control&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who runs the agent loop, me or the vendor?&lt;/li&gt;
&lt;li&gt;Which models are first-class on the hosted path?&lt;/li&gt;
&lt;li&gt;Can I bring my own compute?&lt;/li&gt;
&lt;li&gt;Is there a model fallback when a provider goes down?&lt;/li&gt;
&lt;li&gt;Are saved agent configurations versioned?&lt;/li&gt;
&lt;li&gt;Is there a published price for the container itself?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The one question that sorts the rest
&lt;/h2&gt;

&lt;p&gt;Not "which runtime is best." Ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;After my agent stops typing, do I still need the machine?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If no, a per-request container is the honest choice, and you shouldn't pay for more. Perplexity's model is the clean version of that.&lt;/p&gt;

&lt;p&gt;If yes, you are choosing between owning the compute yourself and having someone manage its state for you. Both are defensible. Not knowing which one you picked is not.&lt;/p&gt;

&lt;p&gt;Full version with every source link: &lt;a href="https://gobare.dev/blog/agent-runtimes-disagree-on-what-a-session-is" rel="noopener noreferrer"&gt;gobare.dev/blog/agent-runtimes-disagree-on-what-a-session-is&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have run agents in production: which of these questions did you only learn to ask after something broke?&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>architecture</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
