<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Akash Panchal — AI Systems Engineer &amp; Founder</title>
    <link>https://akashpanchal.com</link>
    <description>I build production AI agents and document the hard engineering problems. Currently: Evercall — when an Australian emergency plumber can&apos;t answer, we book the job.</description>
    <language>en-us</language>
    <atom:link href="https://akashpanchal.com/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>WebRTC from First Principles: Why Voice Agents Run on UDP, Not HTTP</title>
      <link>https://akashpanchal.com/articles/webrtc-for-voice-agents</link>
      <guid>https://akashpanchal.com/articles/webrtc-for-voice-agents</guid>
      <description>Sound is a 20ms clock. TCP was built for documents. This is a ground-up tour of WebRTC — sampling, RTP, ICE, jitter buffers — and why every serious voice agent ends up as a media participant, not a server behind a POST.</description>
      <category>Article</category>
      <pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>The State Machine You Were About to Write Already Exists — LiveKit Voice Agents</title>
      <link>https://akashpanchal.com/tutorials/livekit-voice-agents</link>
      <guid>https://akashpanchal.com/tutorials/livekit-voice-agents</guid>
      <description>Phone agents need dates, room types, and callback numbers. The instinct is a CallState dataclass and next_question(). LiveKit Agents already solved that with AgentTask and TaskGroup — here&apos;s the hotel receptionist that shows how.</description>
      <category>Tutorial</category>
      <pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Build a Harness Agent From Scratch</title>
      <link>https://akashpanchal.com/tutorials/build-a-harness-agent-from-scratch</link>
      <guid>https://akashpanchal.com/tutorials/build-a-harness-agent-from-scratch</guid>
      <description>Picture the demo — model, tools, while loop, done. Then someone refreshes the browser and it&apos;s gone. This tutorial builds the layer around the loop: sessions, persistence, approvals, and a UI contract — by hand, with the OpenAI SDK.</description>
      <category>Tutorial</category>
      <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Stop Re-Reading Huge Tool Outputs: Breadcrumbs Over Blobs</title>
      <link>https://akashpanchal.com/articles/breadcrumbs-over-blobs</link>
      <guid>https://akashpanchal.com/articles/breadcrumbs-over-blobs</guid>
      <description>Your agent just called searchDocs() and got back 48KB of JSON. On the next turn it re-reads all of it — or worse, silently drops the detail it needs. Store signatures and pointers instead of blobs.</description>
      <category>Article</category>
      <pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Two Agent Harnesses: Mastra&apos;s AgentController vs LangChain&apos;s Deep Agents</title>
      <link>https://akashpanchal.com/articles/two-agent-harnesses</link>
      <guid>https://akashpanchal.com/articles/two-agent-harnesses</guid>
      <description>Two frameworks, working independently, reached for the same word — harness. But they bet on opposite shapes of work: one you hold and steer, the other you hand a goal and let run. Here&apos;s the line between them, in code.</description>
      <category>Article</category>
      <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Voice Agents: The Hard Problems Nobody Warns You About</title>
      <link>https://akashpanchal.com/articles/voice-agents-hard-problems</link>
      <guid>https://akashpanchal.com/articles/voice-agents-hard-problems</guid>
      <description>The demo is easy — speech-to-text, LLM, text-to-speech, done. Then a real person talks to it and everything falls apart: the silences are too long, it talks over them, it can&apos;t tell when they&apos;re done. The hard problems in voice aren&apos;t the models. They&apos;re latency, barge-in, and turn-taking.</description>
      <category>Article</category>
      <pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>I Stopped Hand-Rolling the Agent Loop — AI SDK v7 Features Worth Shipping</title>
      <link>https://akashpanchal.com/articles/ai-sdk-v7-features</link>
      <guid>https://akashpanchal.com/articles/ai-sdk-v7-features</guid>
      <description>Every agent project had the same skeleton at the top: call the model, run tools, loop, pray you got the stop condition right. v7 moves that — plus approvals, structured output, and telemetry — into the SDK. Here&apos;s what I reached for the week it landed.</description>
      <category>Article</category>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>I Let an Agent Write Code and Run It — Safely — in a Vercel Sandbox</title>
      <link>https://akashpanchal.com/articles/agent-runs-code-vercel-sandbox</link>
      <guid>https://akashpanchal.com/articles/agent-runs-code-vercel-sandbox</guid>
      <description>An agent that writes code you can&apos;t run is a fancy autocomplete. But running model-generated code on your own box is how you get a crypto miner. I build a mini-app where the agent writes, executes, and self-corrects code inside a Vercel Sandbox microVM — and walk the parts that surprised me.</description>
      <category>Article</category>
      <pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>An Agent Without Evals Is a Vibe With a Deploy Button (Part 7)</title>
      <link>https://akashpanchal.com/tutorials/mastra-evals</link>
      <guid>https://akashpanchal.com/tutorials/mastra-evals</guid>
      <description>The demo sounds sharper. Production quietly gets worse. Part 7 — the series finale: deterministic checks, model-graded scorers, CI gates, and live sampling so &apos;it seems better&apos; becomes &apos;0.86, up from 0.71&apos;.</description>
      <category>Tutorial</category>
      <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Some Agent Work Outlives the HTTP Request — Durable Agents (Part 6)</title>
      <link>https://akashpanchal.com/tutorials/mastra-durable-agents</link>
      <guid>https://akashpanchal.com/tutorials/mastra-durable-agents</guid>
      <description>Forty-page scrape. Human approval that takes a day. A cron job at 3am. Part 6: background tasks, crash-proof durable agents, and heartbeats — machinery for work that doesn&apos;t fit in one request.</description>
      <category>Tutorial</category>
      <pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Your Agent Is Still Guessing — Mastra RAG With Citations (Part 5)</title>
      <link>https://akashpanchal.com/tutorials/mastra-rag</link>
      <guid>https://akashpanchal.com/tutorials/mastra-rag</guid>
      <description>A confident answer with no source is still a hallucination waiting to happen. Part 5: chunk, embed, store, query — wire a retrieval pipeline under your agent so it answers from your documents, with citations.</description>
      <category>Tutorial</category>
      <pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Why Users Think Your Agent Is Frozen — Streaming to a Real UI (Part 4)</title>
      <link>https://akashpanchal.com/tutorials/mastra-streaming</link>
      <guid>https://akashpanchal.com/tutorials/mastra-streaming</guid>
      <description>Ten seconds of silence looks identical to a crash. Part 4: wire agent.stream() into a UI — tokens, tool calls, and custom progress events — so users watch the work happen instead of staring at a spinner.</description>
      <category>Tutorial</category>
      <pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>An Agent Loop Is Not an App — Mastra&apos;s Harness (Part 3)</title>
      <link>https://akashpanchal.com/tutorials/mastra-harness</link>
      <guid>https://akashpanchal.com/tutorials/mastra-harness</guid>
      <description>Refresh the tab. Approve a delete. Hand off a subtask. Part 3: Mastra&apos;s AgentController adds sessions, modes, subagents, and tool approvals — the layer that turns a loop into something users can depend on.</description>
      <category>Tutorial</category>
      <pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>When Your Agent Skips the Eligibility Check — Mastra Workflows (Part 2)</title>
      <link>https://akashpanchal.com/tutorials/mastra-workflows</link>
      <guid>https://akashpanchal.com/tutorials/mastra-workflows</guid>
      <description>Agents decide. Workflows guarantee. Part 2: typed multi-step pipelines with sequencing, parallelism, branching, loops, and human-in-the-loop suspend &amp; resume — for the steps where order isn&apos;t up for a vote.</description>
      <category>Tutorial</category>
      <pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Build a Mastra Agent From Scratch — Tools, Memory, and the Loop (Part 1)</title>
      <link>https://akashpanchal.com/tutorials/mastra-agents</link>
      <guid>https://akashpanchal.com/tutorials/mastra-agents</guid>
      <description>Every new agent project starts with the same hand-rolled loop. Part 1 of the Mastra series: define a typed agent, wire tools with createTool, and add memory so it survives the next turn — without rebuilding the plumbing again.</description>
      <category>Tutorial</category>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>