<?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>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>
