<?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: K9i - Kota Hayashi</title>
    <description>The latest articles on Forem by K9i - Kota Hayashi (@k9i).</description>
    <link>https://forem.com/k9i</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%2F3810926%2F0c19f72e-e168-41a3-a16c-0b6f10ba8dfd.png</url>
      <title>Forem: K9i - Kota Hayashi</title>
      <link>https://forem.com/k9i</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/k9i"/>
    <language>en</language>
    <item>
      <title>I built a mobile app to control Claude Code and Codex from my phone</title>
      <dc:creator>K9i - Kota Hayashi</dc:creator>
      <pubDate>Sat, 07 Mar 2026 04:25:37 +0000</pubDate>
      <link>https://forem.com/k9i/i-built-a-mobile-app-to-control-claude-code-and-codex-from-my-phone-4d84</link>
      <guid>https://forem.com/k9i/i-built-a-mobile-app-to-control-claude-code-and-codex-from-my-phone-4d84</guid>
      <description>&lt;p&gt;I use Claude Code and Codex CLI for most of my side projects. The problem? Every time the agent needs approval or finishes a task, I have to walk over to my Mac. That's fine during work hours, but on weekends I just want to kick things off from the couch and check in from my phone.&lt;/p&gt;

&lt;p&gt;There are terminal-sharing approaches and Claude Code now has &lt;code&gt;/remote-control&lt;/code&gt;, but none of them felt right on a phone screen. So I built my own: &lt;strong&gt;CC Pocket&lt;/strong&gt; — a mobile app designed specifically for controlling AI coding agents remotely.&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%2Fzacox58rc6htsitxl9k7.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%2Fzacox58rc6htsitxl9k7.png" alt="CC Pocket overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes it useful
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Approve tool calls without opening a session
&lt;/h3&gt;

&lt;p&gt;The #1 thing you do when monitoring Claude Code from your phone is tap "approve." CC Pocket puts the approval UI right on the session list — no need to open individual sessions. Running 3 agents in parallel? Just scroll and tap.&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%2Ffbl6asymtw96xk5zc5n7.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%2Ffbl6asymtw96xk5zc5n7.png" alt="Approval UI on session list"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Spin up new sessions from your phone
&lt;/h3&gt;

&lt;p&gt;You're not limited to resuming sessions from your Mac. Pick a project, choose a permission mode and model, and go. You can even create a &lt;strong&gt;git worktree&lt;/strong&gt; at session start — branch, worktree, and session, all without touching your laptop.&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%2F54ti17z1wz2jbknt8bo7.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%2F54ti17z1wz2jbknt8bo7.png" alt="New session screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Prompt input that doesn't suck on mobile
&lt;/h3&gt;

&lt;p&gt;I spent a lot of time on this because phone keyboards + long prompts = pain. Here's what I built:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/&lt;/code&gt; command completion&lt;/strong&gt; — Tap &lt;code&gt;/&lt;/code&gt; to get an overlay of all available slash commands&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;@&lt;/code&gt; file mentions&lt;/strong&gt; — Browse and insert file paths instead of typing them&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bullet list mode&lt;/strong&gt; — Auto-inserts &lt;code&gt;-&lt;/code&gt; on newline with indent/dedent buttons. Handy for markdown-style prompts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt history&lt;/strong&gt; — Saved to SQLite, searchable by frequency or favorites. Stop retyping the same instructions&lt;/li&gt;
&lt;/ul&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%2Fs2fn51vj1f463l2uy4m5.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%2Fs2fn51vj1f463l2uy4m5.png" alt="Rich prompt input"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Name your sessions
&lt;/h3&gt;

&lt;p&gt;Claude Code's session list shows IDs, which are useless for finding anything later. CC Pocket hooks into the CLI's &lt;code&gt;/rename&lt;/code&gt; command so you can name sessions. Filter by named sessions only to quickly find the ones that matter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Diff viewer (with image diffs!)
&lt;/h3&gt;

&lt;p&gt;Review what the agent changed, right on your phone. Text diffs show in unified format with add/delete highlighting. Image diffs get three modes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Side by side&lt;/strong&gt; — Before and after, next to each other&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Slider&lt;/strong&gt; — Drag a divider across the image&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Overlay&lt;/strong&gt; — Adjust opacity to layer before/after&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also select specific hunks and attach them to the chat — great for saying "change &lt;em&gt;this part&lt;/em&gt; like so."&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%2Fjr72h9oat9zcygrmfhlp.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%2Fjr72h9oat9zcygrmfhlp.png" alt="Diff viewer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Built with itself
&lt;/h3&gt;

&lt;p&gt;Once CC Pocket could control Claude Code, I started developing CC Pocket &lt;em&gt;through&lt;/em&gt; CC Pocket. The feedback loop is tight — I hit a UX annoyance, fix it through the app, and the fix ships in the same session. Dogfooding at its finest.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Phone (CC Pocket) ←WebSocket→ Bridge Server (Mac) ←stdio→ Claude Code / Codex CLI
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;CC Pocket talks to a lightweight &lt;strong&gt;bridge server&lt;/strong&gt; on your Mac that manages agent processes via the Claude Code SDK and Codex CLI.&lt;/p&gt;
&lt;h3&gt;
  
  
  Setup (&amp;lt; 5 min)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Network:&lt;/strong&gt; Your Mac and phone need to be reachable. Same Wi-Fi works. For anywhere-access, &lt;a href="https://tailscale.com/" rel="noopener noreferrer"&gt;Tailscale&lt;/a&gt; is the easiest option — one-click mesh VPN, no port forwarding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Bridge server:&lt;/strong&gt; One command:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @ccpocket/bridge@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It shows a QR code with connection details.&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%2F6sm4cijcjl2l0qinnpdq.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%2F6sm4cijcjl2l0qinnpdq.png" alt="Bridge startup"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Set &lt;code&gt;BRIDGE_DEMO_MODE=true&lt;/code&gt; to strip sensitive info from the QR code — useful for screenshots and demos.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;3. Connect:&lt;/strong&gt; Scan the QR code from CC Pocket's launch screen. Then either tap &lt;strong&gt;+&lt;/strong&gt; for a new session or pick one from your Mac's session history.&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%2Fd6xnrzns5id7c7toyckz.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%2Fd6xnrzns5id7c7toyckz.png" alt="Launch and first connection"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;Available on both stores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://apps.apple.com/us/app/cc-pocket-dev-agent-remote/id6759188790" rel="noopener noreferrer"&gt;App Store (iOS)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://play.google.com/store/apps/details?id=com.k9i.ccpocket" rel="noopener noreferrer"&gt;Google Play (Android)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/K9i-0" rel="noopener noreferrer"&gt;
        K9i-0
      &lt;/a&gt; / &lt;a href="https://github.com/K9i-0/ccpocket" rel="noopener noreferrer"&gt;
        ccpocket
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Mobile client for Claude Code and Codex — control coding agents from your phone via WebSocket bridge
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;CC Pocket&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;CC Pocket lets you start and run Codex and Claude Code sessions entirely from your phone. No laptop needed — just open the app, pick a project, and code from anywhere.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/K9i-0/ccpocket/README.ja.md" rel="noopener noreferrer"&gt;日本語版 README&lt;/a&gt; | &lt;a href="https://github.com/K9i-0/ccpocket/README.zh-CN.md" rel="noopener noreferrer"&gt;简体中文版 README&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/K9i-0/ccpocket/docs/images/screenshots.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FK9i-0%2Fccpocket%2Fdocs%2Fimages%2Fscreenshots.png" alt="CC Pocket screenshots" width="800"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;CC Pocket is not affiliated with, endorsed by, or associated with Anthropic or OpenAI.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why CC Pocket?&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;AI coding agents are getting autonomous enough to write entire features on their own. Your role shifts from writing code to making decisions — approve this tool, answer that question, review the diff.&lt;/p&gt;

&lt;p&gt;Decisions don't need a keyboard. They need a screen and a thumb.&lt;/p&gt;

&lt;p&gt;CC Pocket is built for this workflow: start a session from your phone, let your machine's Codex or Claude Code do the heavy lifting, and make decisions from wherever you are.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Who It's For&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;CC Pocket is for people who already rely on coding agents and want an easier way…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/K9i-0/ccpocket" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Tech&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mobile app&lt;/td&gt;
&lt;td&gt;Flutter (Dart), BLoC, SQLite, FCM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bridge server&lt;/td&gt;
&lt;td&gt;TypeScript, Node.js, WebSocket, &lt;code&gt;@anthropic-ai/claude-agent-sdk&lt;/code&gt;, &lt;code&gt;@openai/codex-sdk&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Networking&lt;/td&gt;
&lt;td&gt;Tailscale / local Wi-Fi, mDNS auto-discovery&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Try it out
&lt;/h2&gt;

&lt;p&gt;If you use Claude Code or Codex for side projects, give it a spin. Approve tool calls from bed, start sessions from a coffee shop, review diffs on the train. Your Mac doesn't need you sitting in front of it.&lt;/p&gt;

&lt;p&gt;Feedback, issues, and PRs are welcome on &lt;a href="https://github.com/K9i-0/ccpocket" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. And if you find it useful, a star goes a long way.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Now if only Apple would make an iPhone Fold so I could see more code on this screen...&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>opensource</category>
      <category>flutter</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
