<?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: Hiroshi Ishizaka</title>
    <description>The latest articles on DEV Community by Hiroshi Ishizaka (@ishizakahiroshi).</description>
    <link>https://dev.to/ishizakahiroshi</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%2F3912564%2Fa0868cb4-5c2a-4e9c-accf-12f4e1de96c1.jpg</url>
      <title>DEV Community: Hiroshi Ishizaka</title>
      <link>https://dev.to/ishizakahiroshi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ishizakahiroshi"/>
    <language>en</language>
    <item>
      <title>I built a local web dashboard to run Claude Code and Codex CLI in parallel</title>
      <dc:creator>Hiroshi Ishizaka</dc:creator>
      <pubDate>Sun, 24 May 2026 10:00:25 +0000</pubDate>
      <link>https://dev.to/ishizakahiroshi/i-built-a-local-web-dashboard-to-run-claude-code-and-codex-cli-in-parallel-2coe</link>
      <guid>https://dev.to/ishizakahiroshi/i-built-a-local-web-dashboard-to-run-claude-code-and-codex-cli-in-parallel-2coe</guid>
      <description>&lt;p&gt;I run &lt;strong&gt;Claude Code&lt;/strong&gt; and &lt;strong&gt;Codex CLI&lt;/strong&gt; side by side a lot. The coding part is great — the annoying part is everything around it. Which terminal is waiting for an approval? Which session is still working, and which one quietly finished ten minutes ago? Tabbing between terminal windows just to hit "yes" got old fast.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;any-ai-cli&lt;/strong&gt;: a single local web dashboard that wraps these CLIs and lets me manage every session from one screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2yu0a8vbe3549jhbxlnt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2yu0a8vbe3549jhbxlnt.jpg" alt="any-ai-cli dashboard" width="800" height="589"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;It wraps your AI coding CLIs in a PTY and mirrors their terminal output into a browser dashboard in real time. When a session hits an approval prompt, it surfaces in the UI so you can answer it from the browser — or from the terminal. Both stay in sync.&lt;/p&gt;

&lt;p&gt;Beyond approvals, it grew into a small cockpit for parallel agent work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Unified approval panel&lt;/strong&gt; — approve/reject Claude Code and Codex prompts from the browser, including batch answers for multiple numbered questions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time PTY output&lt;/strong&gt; via xterm.js over WebSocket&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Chat history + split view&lt;/strong&gt; — read a bubble-style transcript, search it, or keep it next to the live terminal&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-pane tab&lt;/strong&gt; — watch several live sessions at once in a grid&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Files tab&lt;/strong&gt; — browse project files, preview Markdown/code, rename and move files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git view&lt;/strong&gt; — branch history, commit details, and diffs without checking out refs; plus "Commit all" after an explicit review step&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image &amp;amp; file attach&lt;/strong&gt; — paste or drag-and-drop straight into a session&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice input&lt;/strong&gt; (Chrome / Edge)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model picker with Ollama routing&lt;/strong&gt; — pick Anthropic / OpenAI / Ollama models from the spawn form; the Hub injects the right env vars per session&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WSL launcher&lt;/strong&gt; on Windows&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The whole thing is a &lt;strong&gt;single Go binary&lt;/strong&gt;. No Electron, no separate frontend server.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The browser UI is static HTML/CSS/vanilla JS, embedded into the binary with &lt;code&gt;go:embed&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;It talks to the Hub over a WebSocket&lt;/li&gt;
&lt;li&gt;Terminal rendering is xterm.js; approval detection works by scanning the terminal buffer for known prompt patterns&lt;/li&gt;
&lt;li&gt;PTY handling uses &lt;code&gt;creack/pty&lt;/code&gt; on Unix and ConPTY (via &lt;code&gt;aymanbagabas/go-pty&lt;/code&gt;) on Windows, so the same binary behaves consistently across platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On privacy: the Hub binds to &lt;strong&gt;127.0.0.1 only&lt;/strong&gt;, puts a &lt;strong&gt;random token&lt;/strong&gt; in the URL, and &lt;strong&gt;any-ai-cli sends no telemetry&lt;/strong&gt;. It's a local-first tool — the point is to make the agents already running on your machine easier to watch, not to add another cloud console.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trying it
&lt;/h2&gt;

&lt;p&gt;Grab a binary from the &lt;a href="https://github.com/ishizakahiroshi/any-ai-cli/releases" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt; page (Windows / macOS / Linux), unzip, and:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Double-click &lt;code&gt;any-ai-cli&lt;/code&gt; (or run it with no arguments)&lt;/li&gt;
&lt;li&gt;Your browser opens at &lt;code&gt;http://127.0.0.1:47777/?token=&amp;lt;token&amp;gt;&lt;/code&gt; and the Hub is running&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;"+ New Session"&lt;/strong&gt; to launch a Claude Code / Codex CLI session&lt;/li&gt;
&lt;li&gt;When an approval prompt shows up, an action bar appears under the input — click or use the keyboard to respond&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You don't have to keep a separate terminal open; sessions are created, monitored, and approved from the Hub UI.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Heads up: v0.2.x is verified mainly on Windows (WSL supported via a separate launcher). Linux/macOS builds are expected to work but aren't fully validated yet — feedback from those platforms is especially welcome.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Where it's at
&lt;/h2&gt;

&lt;p&gt;This is &lt;strong&gt;v0.2.2&lt;/strong&gt; and still early. If you run more than one coding agent at a time, I'd love to hear how this fits (or doesn't fit) your workflow.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/ishizakahiroshi/any-ai-cli" rel="noopener noreferrer"&gt;https://github.com/ishizakahiroshi/any-ai-cli&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cli</category>
      <category>cloudecode</category>
    </item>
    <item>
      <title>I built an offline-first Markdown editor that runs as a single HTML file</title>
      <dc:creator>Hiroshi Ishizaka</dc:creator>
      <pubDate>Mon, 04 May 2026 17:44:12 +0000</pubDate>
      <link>https://dev.to/ishizakahiroshi/i-built-an-offline-first-markdown-editor-that-runs-as-a-single-html-file-1g18</link>
      <guid>https://dev.to/ishizakahiroshi/i-built-an-offline-first-markdown-editor-that-runs-as-a-single-html-file-1g18</guid>
      <description>&lt;p&gt;Most Markdown editors today assume cloud sync, Electron, or heavy installations.&lt;/p&gt;

&lt;p&gt;I wanted something simpler.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flku7o5cu0glmgufvqh2u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flku7o5cu0glmgufvqh2u.png" alt="App screenshot" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I wanted a Markdown editor that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Works fully offline&lt;/li&gt;
&lt;li&gt;Opens local &lt;code&gt;.md&lt;/code&gt; files directly&lt;/li&gt;
&lt;li&gt;Saves back to the original file&lt;/li&gt;
&lt;li&gt;Requires no account, no sync, and no network calls&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Demo Video
&lt;/h3&gt;

&lt;p&gt;Watch the demo video on GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/user-attachments/assets/00d80cbc-ca93-4cfd-86d3-5299895d06b7" rel="noopener noreferrer"&gt;https://github.com/user-attachments/assets/00d80cbc-ca93-4cfd-86d3-5299895d06b7&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;offline-md-editor-viewer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It runs as a single HTML file, which means it works on Windows, Linux, and macOS.&lt;/p&gt;

&lt;p&gt;I also built a desktop version using Tauri, but both versions share the same frontend.&lt;/p&gt;

&lt;h3&gt;
  
  
  Main features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Live preview while editing&lt;/li&gt;
&lt;li&gt;Folder tree support&lt;/li&gt;
&lt;li&gt;Dark / Light theme&lt;/li&gt;
&lt;li&gt;Local file editing and overwrite save&lt;/li&gt;
&lt;li&gt;Privacy-focused design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GitHub:&lt;br&gt;
&lt;a href="https://github.com/ishizakahiroshi/offline-md-editor-viewer" rel="noopener noreferrer"&gt;https://github.com/ishizakahiroshi/offline-md-editor-viewer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'd love feedback from developers who work with local notes, docs, or markdown files.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>html</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
