<?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: Eric Mono</title>
    <description>The latest articles on DEV Community by Eric Mono (@earthwalker17).</description>
    <link>https://dev.to/earthwalker17</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%2F4024302%2F8b60ec5a-cb9b-4210-8777-0a98ab781d14.jpg</url>
      <title>DEV Community: Eric Mono</title>
      <link>https://dev.to/earthwalker17</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/earthwalker17"/>
    <language>en</language>
    <item>
      <title>How I Made a Product Demo with Claude Code, Playwright, and FFmpeg</title>
      <dc:creator>Eric Mono</dc:creator>
      <pubDate>Mon, 13 Jul 2026 14:47:14 +0000</pubDate>
      <link>https://dev.to/earthwalker17/how-i-made-a-product-demo-with-claude-code-playwright-and-ffmpeg-2ach</link>
      <guid>https://dev.to/earthwalker17/how-i-made-a-product-demo-with-claude-code-playwright-and-ffmpeg-2ach</guid>
      <description>&lt;p&gt;I recently needed a short product demo for my open-source project called Agent OS.&lt;/p&gt;

&lt;p&gt;The goal was modest: create a clear 45–60 second walkthrough of the real product.&lt;/p&gt;

&lt;p&gt;I didn't need a polished advertisement. I also didn't want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;manually record a dozen clips&lt;/li&gt;
&lt;li&gt;learn Premiere or After Effects&lt;/li&gt;
&lt;li&gt;move every cut and caption on a timeline&lt;/li&gt;
&lt;li&gt;recreate the product interface with generated animation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I tried a simpler workflow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Claude Code + Playwright + FFmpeg&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The result was a 56-second silent MP4 created in roughly 30 minutes, using around 50K tokens with Opus 4.8.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Claude Code handled
&lt;/h2&gt;

&lt;p&gt;Claude Code first inspected the application and identified the existing product states that could form a complete story:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Agent OS landing page&lt;/li&gt;
&lt;li&gt;Main Agent planning and Coding Agent handoff&lt;/li&gt;
&lt;li&gt;A real task graph and execution trace&lt;/li&gt;
&lt;li&gt;Build, browser, and visual verification&lt;/li&gt;
&lt;li&gt;A failed browser run with runtime evidence&lt;/li&gt;
&lt;li&gt;A linked bounded-recovery run&lt;/li&gt;
&lt;li&gt;A preview-only Git contract&lt;/li&gt;
&lt;li&gt;The finished Pulseboard application&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It then started the locally served frontend and backend and used Playwright to navigate through those states.&lt;/p&gt;

&lt;p&gt;Nothing was recreated or fabricated for the video. The walkthrough used existing persisted run records from the real Pulseboard build.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why it recorded several short clips
&lt;/h2&gt;

&lt;p&gt;The first instinct was to record one continuous browser session.&lt;/p&gt;

&lt;p&gt;That became unreliable when dense modals and long smooth scrolling caused the Playwright video encoder to fall behind.&lt;/p&gt;

&lt;p&gt;The practical fix was simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;record one short clip for each narrative beat&lt;/li&gt;
&lt;li&gt;give each clip its own BrowserContext&lt;/li&gt;
&lt;li&gt;store the content start and end times&lt;/li&gt;
&lt;li&gt;close the context after every clip so the recording is finalized&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result was much more stable than one long recording.&lt;/p&gt;

&lt;h2&gt;
  
  
  What FFmpeg handled
&lt;/h2&gt;

&lt;p&gt;After Playwright produced the raw WebM files, a small Python script used FFmpeg to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;trim each clip to its useful content window&lt;/li&gt;
&lt;li&gt;add short labels&lt;/li&gt;
&lt;li&gt;create a simple opening card&lt;/li&gt;
&lt;li&gt;create a GitHub end card&lt;/li&gt;
&lt;li&gt;concatenate everything&lt;/li&gt;
&lt;li&gt;export a 1280×720, 30 fps H.264 MP4&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There were no complex transitions. The product interface remained the main visual.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this workflow was useful
&lt;/h2&gt;

&lt;p&gt;This will not replace professional video editing.&lt;/p&gt;

&lt;p&gt;But it seems well suited to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;open-source project demos&lt;/li&gt;
&lt;li&gt;internal product walkthroughs&lt;/li&gt;
&lt;li&gt;release previews&lt;/li&gt;
&lt;li&gt;reproducible UI recordings&lt;/li&gt;
&lt;li&gt;projects where authenticity matters more than elaborate motion graphics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The useful shift was treating the demo as another automated software artifact.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The browser flow is code.
&lt;/li&gt;
&lt;li&gt;The selected product state is deterministic.
&lt;/li&gt;
&lt;li&gt;The labels and timings are configuration.
&lt;/li&gt;
&lt;li&gt;The video can be regenerated when the interface changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The project shown in the demo
&lt;/h2&gt;

&lt;p&gt;Agent OS is a local-first AI Project Operating System — the harness around coding models that adds persistent memory, controlled execution, real verification, bounded recovery, and approval-gated delivery.&lt;/p&gt;

&lt;p&gt;The project is open source here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/earthwalker17/agent-os" rel="noopener noreferrer"&gt;https://github.com/earthwalker17/agent-os&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The demo doesn't prove that the system is perfect. It simply gives people a much faster way to see what it actually does.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>playwright</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Agent OS: A Local-First Harness Around Coding Models</title>
      <dc:creator>Eric Mono</dc:creator>
      <pubDate>Fri, 10 Jul 2026 16:48:13 +0000</pubDate>
      <link>https://dev.to/earthwalker17/agent-os-a-local-first-harness-around-coding-models-238b</link>
      <guid>https://dev.to/earthwalker17/agent-os-a-local-first-harness-around-coding-models-238b</guid>
      <description>&lt;p&gt;A coding model can generate code.&lt;/p&gt;

&lt;p&gt;That does not mean it can reliably finish software work.&lt;/p&gt;

&lt;p&gt;Between a plausible diff and a completed task, a real software agent still needs memory, execution boundaries, verification, recovery, permissions, and delivery infrastructure.&lt;/p&gt;

&lt;p&gt;That is the problem I have been exploring through &lt;strong&gt;Agent OS&lt;/strong&gt;, which I have now released as an open-source project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/earthwalker17/agent-os" rel="noopener noreferrer"&gt;https://github.com/earthwalker17/agent-os&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The model is only one part of the agent
&lt;/h2&gt;

&lt;p&gt;Agent OS is a local-first AI Project Operating System: a harness around coding models.&lt;/p&gt;

&lt;p&gt;The core architecture separates two responsibilities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Main Agent: the brain
&lt;/h3&gt;

&lt;p&gt;The Main Agent handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conversation&lt;/li&gt;
&lt;li&gt;Planning&lt;/li&gt;
&lt;li&gt;Project memory&lt;/li&gt;
&lt;li&gt;Context assembly&lt;/li&gt;
&lt;li&gt;Orchestration&lt;/li&gt;
&lt;li&gt;Delegation decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It cannot edit repository code or execute shell commands.&lt;/p&gt;

&lt;h3&gt;
  
  
  Coding Agent: the hands
&lt;/h3&gt;

&lt;p&gt;The Coding Agent operates inside one sandboxed project workspace.&lt;/p&gt;

&lt;p&gt;It can inspect files, edit code, and run bounded commands, but it cannot modify project memory or access another project’s workspace.&lt;/p&gt;

&lt;p&gt;The two sides communicate through summaries and structured artifacts rather than unrestricted shared control.&lt;/p&gt;

&lt;h2&gt;
  
  
  “Done” must come from verification
&lt;/h2&gt;

&lt;p&gt;Agent OS does not accept the model’s own claim that a task is complete.&lt;/p&gt;

&lt;p&gt;A coding run must pass a real build or test command.&lt;/p&gt;

&lt;p&gt;It can then:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Launch the application&lt;/li&gt;
&lt;li&gt;Walk declared browser flows&lt;/li&gt;
&lt;li&gt;Capture screenshots and runtime evidence&lt;/li&gt;
&lt;li&gt;Run visual review&lt;/li&gt;
&lt;li&gt;Classify failures&lt;/li&gt;
&lt;li&gt;Propose or execute a bounded repair pass&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Recovery is deliberately limited. The goal is not unlimited autonomy, but controlled progress with evidence and an audit trail.&lt;/p&gt;

&lt;h2&gt;
  
  
  External actions remain human-controlled
&lt;/h2&gt;

&lt;p&gt;Git pushes, pull requests, deployments, database migrations, and Stripe test-mode operations use explicit preview-and-confirm contracts.&lt;/p&gt;

&lt;p&gt;The agent can prepare the operation, but it cannot silently mutate an external system because it inferred that the user probably wanted it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing the system on a real product
&lt;/h2&gt;

&lt;p&gt;To pressure-test the architecture, I used Agent OS itself to build and deploy &lt;strong&gt;Pulseboard&lt;/strong&gt;, a full-stack SaaS, from an empty repository.&lt;/p&gt;

&lt;p&gt;The process included real build, runtime, browser, visual, deployment, and database failures. Those failures became the test for whether the system could collect evidence, expose the problem, and recover instead of simply producing a confident success message.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is included in the first public release
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Local filesystem and SQLite-based project state&lt;/li&gt;
&lt;li&gt;Structured Markdown memory&lt;/li&gt;
&lt;li&gt;Claude, GPT, Gemini, DeepSeek, Kimi, and GLM support&lt;/li&gt;
&lt;li&gt;Sandboxed coding execution&lt;/li&gt;
&lt;li&gt;Parallel agent teams in isolated workspaces&lt;/li&gt;
&lt;li&gt;Command, browser, and visual verification&lt;/li&gt;
&lt;li&gt;Typed bounded recovery&lt;/li&gt;
&lt;li&gt;GitHub, Vercel, Supabase, and Stripe test-mode connectors&lt;/li&gt;
&lt;li&gt;Apache-2.0 licensing&lt;/li&gt;
&lt;li&gt;GitHub CI and 832 backend tests&lt;/li&gt;
&lt;li&gt;One-command Windows installation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Current limitations
&lt;/h2&gt;

&lt;p&gt;This is an early public release.&lt;/p&gt;

&lt;p&gt;The Windows setup is currently the most thoroughly tested. macOS and Linux users need to follow the manual setup instructions. At least one supported model provider API key is required.&lt;/p&gt;

&lt;p&gt;Local-first means that project memory, workspaces, credentials, and execution records remain under the user’s control. It does not currently mean that every supported model runs locally.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I am looking for
&lt;/h2&gt;

&lt;p&gt;I am especially interested in feedback on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The separation between the Main Agent and Coding Agent&lt;/li&gt;
&lt;li&gt;The first-run installation experience&lt;/li&gt;
&lt;li&gt;The boundaries of automated recovery&lt;/li&gt;
&lt;li&gt;Which internal components should become independent libraries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The repository, architecture documentation, installation guide, and production showcase are available here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/earthwalker17/agent-os" rel="noopener noreferrer"&gt;https://github.com/earthwalker17/agent-os&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>devtools</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
