<?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>Forem: Alessio Micali</title>
    <description>The latest articles on Forem by Alessio Micali (@alemicali).</description>
    <link>https://forem.com/alemicali</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3858462%2F9f476248-ea12-4d52-a3f1-9668777cfade.jpeg</url>
      <title>Forem: Alessio Micali</title>
      <link>https://forem.com/alemicali</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/alemicali"/>
    <language>en</language>
    <item>
      <title>Why We Built Polpo: The Runtime for AI Agents</title>
      <dc:creator>Alessio Micali</dc:creator>
      <pubDate>Fri, 03 Apr 2026 01:32:07 +0000</pubDate>
      <link>https://forem.com/alemicali/why-we-built-polpo-the-runtime-for-ai-agents-3ncl</link>
      <guid>https://forem.com/alemicali/why-we-built-polpo-the-runtime-for-ai-agents-3ncl</guid>
      <description>&lt;h2&gt;
  
  
  Why We Built Polpo
&lt;/h2&gt;

&lt;p&gt;We kept solving the same infrastructure problems every time we shipped an agent. Streaming, sandboxing, memory, tool execution, evaluation — the same backend plumbing, over and over. So we built a runtime that handles all of it.&lt;/p&gt;

&lt;p&gt;This post explains the gap we saw, why existing tools didn't fill it, and what Polpo does about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agents got good fast. Infrastructure didn't keep up.
&lt;/h2&gt;

&lt;p&gt;A year ago, AI agents could barely handle a multi-turn conversation. Today, they write code, research topics, manage files, ask clarifying questions, spawn sub-agents, and orchestrate complex workflows.&lt;/p&gt;

&lt;p&gt;The capabilities evolved at breakneck speed. The infrastructure to run them? Not so much.&lt;/p&gt;

&lt;p&gt;Building a production-ready agent means stitching together a surprising amount of backend plumbing — streaming, tool execution, sandboxed file access, persistent memory, session management, scheduling. Every team building agents hits the same wall: &lt;strong&gt;the agent works on your laptop. Now what?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The demo-to-production gap
&lt;/h2&gt;

&lt;p&gt;With today's coding tools and models, you can build a beautiful agent demo in a weekend. A slick UI, impressive tool use, real-time streaming. It looks production-ready.&lt;/p&gt;

&lt;p&gt;Then you try to ship it.&lt;/p&gt;

&lt;p&gt;Behind every capability your agent needs, there's a piece of backend someone has to build, test, and maintain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Streaming&lt;/strong&gt; — SSE or WebSocket infrastructure, connection handling, backpressure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool execution&lt;/strong&gt; — Where do tools run? How do you handle timeouts, retries, failures?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filesystem access&lt;/strong&gt; — What filesystem? What permissions? Isolated from other users?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistent memory&lt;/strong&gt; — Context across sessions. Who manages storage? How does it scale?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attachments&lt;/strong&gt; — File parsing, storage, cleanup&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sub-agents&lt;/strong&gt; — Orchestration, dependency resolution, result collection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluation&lt;/strong&gt; — Systematic assessment, not guesswork&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these is a week of work. In the best case.&lt;/p&gt;

&lt;p&gt;You end up with a great demo on Friday and weeks of infra work before your agent does what it's supposed to do in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Polpo is
&lt;/h2&gt;

&lt;p&gt;Polpo is a &lt;strong&gt;Backend-as-a-Service for AI agents&lt;/strong&gt;. An open-source runtime born from building agents in production.&lt;/p&gt;

&lt;p&gt;Define your agent in JSON. Deploy. Get a live API endpoint.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"coder"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"role"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Senior Engineer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"anthropic:claude-sonnet-4-5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"systemPrompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Write clean, tested TypeScript..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"allowedTools"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"bash"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"read"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"write"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"edit"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"skills"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"frontend-design"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"testing"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"reasoning"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"medium"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"maxConcurrency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That JSON becomes a production agent with an OpenAI-compatible API, streaming, 60+ built-in tools, sandboxed execution, persistent memory, and evaluation — no Dockerfile, no Kubernetes, no infra team.&lt;/p&gt;

&lt;p&gt;Here's what you get out of the box:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenAI-compatible API endpoint&lt;/strong&gt; — any HTTP client can talk to it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming&lt;/strong&gt; — SSE, token by token&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;60+ built-in tools&lt;/strong&gt; — file I/O, shell, HTTP, email, browser, search&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sandboxed execution&lt;/strong&gt; — isolated environment per agent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistent memory&lt;/strong&gt; — context across sessions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills&lt;/strong&gt; — modular knowledge packages from skills.sh&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-agent orchestration&lt;/strong&gt; — teams with dependency resolution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scheduling&lt;/strong&gt; — cron-based triggers&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LLM-as-a-Judge evaluation&lt;/strong&gt; — G-Eval scoring with custom rubrics&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How it's different
&lt;/h2&gt;

&lt;p&gt;Frameworks give you &lt;strong&gt;libraries to build with&lt;/strong&gt;. Polpo gives you a &lt;strong&gt;runtime to deploy on&lt;/strong&gt;.&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;&lt;strong&gt;Frameworks (CrewAI, LangGraph, etc.)&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Polpo&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;What it is&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Libraries you code against&lt;/td&gt;
&lt;td&gt;Runtime you deploy to&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agent definition&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Python/TS code&lt;/td&gt;
&lt;td&gt;JSON config&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Execution&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Your infrastructure&lt;/td&gt;
&lt;td&gt;Managed sandboxes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;API endpoint&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;You build it&lt;/td&gt;
&lt;td&gt;OpenAI-compatible, included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Varies by framework&lt;/td&gt;
&lt;td&gt;Built-in, persistent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Sandboxing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;DIY (Docker, etc.)&lt;/td&gt;
&lt;td&gt;Isolated per agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Skills ecosystem&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;skills.sh&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Evaluation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Via integrations&lt;/td&gt;
&lt;td&gt;LLM-as-a-Judge built-in&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Some frameworks now offer managed platforms. Those are great options. Polpo's bet is different: open source, framework-agnostic, config-first.&lt;/p&gt;

&lt;p&gt;Polpo sits below your framework of choice. Or replaces the need for one entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design principles
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;CLI and API first.&lt;/strong&gt; Your coding agent — Claude Code, Cursor, Windsurf — can create, configure, and deploy Polpo agents in seconds. If your infrastructure isn't agent-friendly, you're building for the wrong era.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Framework agnostic.&lt;/strong&gt; OpenAI-compatible API. Any language, any framework.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Works with every model.&lt;/strong&gt; Anthropic, OpenAI, Google, open source. Swap models without changing infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why open source
&lt;/h2&gt;

&lt;p&gt;The core runtime is MIT-licensed. Self-host on your laptop, a VPS, or your company's servers. The cloud adds managed sandboxes, multi-tenancy, and auto-scaling — but the engine is the same.&lt;/p&gt;

&lt;p&gt;We believe the runtime for AI agents should be a commodity, not a moat.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; polpo-ai
polpo skills add lumea-labs/polpo-skills
polpo-cloud deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your agents are live with API endpoints, memory, tools, sandboxing — everything.&lt;/p&gt;

&lt;p&gt;Or prompt your coding agent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Create a customer support agent with email and HTTP tools and deploy it to Polpo."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One prompt. Done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Polpo is in public beta.&lt;/strong&gt; Free tier. No credit card.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/polpo-ai" rel="noopener noreferrer"&gt;Get started on GitHub →&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://polpo.sh/docs" rel="noopener noreferrer"&gt;Docs&lt;/a&gt; · &lt;a href="https://discord.gg/polpo" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; · &lt;a href="https://x.com/polpo_sh" rel="noopener noreferrer"&gt;X&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>opensource</category>
      <category>backend</category>
    </item>
  </channel>
</rss>
