<?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: Dor Lugasi-Gal</title>
    <description>The latest articles on DEV Community by Dor Lugasi-Gal (@dorlugasigal).</description>
    <link>https://dev.to/dorlugasigal</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%2F2871459%2F93e430cf-ea88-44c6-886a-7a9a44470699.png</url>
      <title>DEV Community: Dor Lugasi-Gal</title>
      <link>https://dev.to/dorlugasigal</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dorlugasigal"/>
    <language>en</language>
    <item>
      <title>GitHub Just Proved That Remote Terminal Access Matters - Here's the Mobile IDE I Built for It</title>
      <dc:creator>Dor Lugasi-Gal</dc:creator>
      <pubDate>Tue, 14 Apr 2026 08:54:40 +0000</pubDate>
      <link>https://dev.to/dorlugasigal/github-just-proved-that-remote-terminal-access-matters-heres-the-mobile-ide-i-built-for-it-3ng9</link>
      <guid>https://dev.to/dorlugasigal/github-just-proved-that-remote-terminal-access-matters-heres-the-mobile-ide-i-built-for-it-3ng9</guid>
      <description>&lt;p&gt;GitHub just shipped &lt;a href="https://github.blog/changelog/2026-04-13-remote-control-cli-sessions-on-web-and-mobile-in-public-preview/" rel="noopener noreferrer"&gt;&lt;code&gt;copilot --remote&lt;/code&gt;&lt;/a&gt; - the ability to stream a Copilot CLI session to your phone or browser. Claude Code has had something similar with their &lt;code&gt;--remote&lt;/code&gt; flag. The idea is the same: you should be able to reach your coding session from wherever you are.&lt;/p&gt;

&lt;p&gt;I agree. In fact, I've been building exactly that in the last month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/dorlugasigal/TermBeam" rel="noopener noreferrer"&gt;TermBeam&lt;/a&gt; is an open-source tool that turns your terminal into a mobile IDE. Run &lt;code&gt;npx termbeam&lt;/code&gt;, scan the QR code, and you get a full terminal on your phone — any shell, any command, any folder. It's a PWA, so after the first scan you add it to your home screen and it's just an app. One tap and you're in, works on any device since its just a web page.&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%2Fxaxoswnmje6n8ohjj8qc.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%2Fxaxoswnmje6n8ohjj8qc.png" alt="Copilot SDK session in TermBeam" width="430" height="932"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;TermBeam's built-in Copilot SDK integration — markdown rendering, tool call visibility, and the terminal right there on my phone.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I can be pushing my daughter on the swings at the park, or sitting in a bomb shelter during a missile alert, and still pull out my phone, open TermBeam, and create a new session in whatever folder I need. thinking retrospectively, that kind of access isn't a nice-to-have for work-life balance, it's a necessity.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx termbeam
// or
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; termbeam
termbeam
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That starts a server, prints a QR code, and when you scan it you get a real terminal session in your browser. Full PTY — whatever shell you use, whatever commands you run. It tunnels through Azure DevTunnels by default so it works from anywhere.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You start it in whatever folder you want, with whatever shell you want.&lt;/strong&gt; You're not locked into a specific tool's session model. And you can create new sessions from your phone — pick a folder, pick a shell, go.&lt;/p&gt;

&lt;p&gt;For something permanent, install it as a background service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;termbeam service &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PM2-managed, starts on boot. Your terminal is always one tap away.&lt;/p&gt;

&lt;h2&gt;
  
  
  It Runs AI Agents Too
&lt;/h2&gt;

&lt;p&gt;This is where the &lt;code&gt;copilot --remote&lt;/code&gt; connection gets interesting. TermBeam has a proper &lt;code&gt;@github/copilot-sdk&lt;/code&gt; integration — a dedicated UI pane with markdown rendering, tool call display, and a chat interface, all alongside the terminal. It's built specifically for interacting with Copilot on a small screen.&lt;/p&gt;

&lt;p&gt;On top of that, TermBeam auto-detects AI coding tools in your PATH — Copilot CLI, Claude Code, Aider, Codex, OpenCode — and lets you launch any of them from the new session dialog. One tap.&lt;/p&gt;

&lt;p&gt;So while &lt;code&gt;copilot --remote&lt;/code&gt; gives you remote access to an existing Copilot session, TermBeam gives you the ability to open a full terminal session where Copilot (or any other agent) is just one of the things you can run. Different approach to a similar idea — and they work well together.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes It Usable on a Phone
&lt;/h2&gt;

&lt;p&gt;A terminal on your phone is a gimmick unless the UX is built for touch, like the existing ssh solutions. Here's what makes the difference:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Touch bar.&lt;/strong&gt; Two rows of dedicated buttons: Esc, Copy, Paste, Home, End, ↑, ←, ↓, →, Enter, Ctrl, Shift, Tab, ^C, and a microphone for voice commands. These are the keys phone keyboards either don't have or hide behind long-presses. This makes running a Copilot session — or vim, or anything — actually practical on a phone.&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%2F8nrr44bwbuhdb2klnrr6.jpeg" 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%2F8nrr44bwbuhdb2klnrr6.jpeg" alt="Terminal with touch bar" width="430" height="932"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Multiple tabs at the top, git and folder context info, and the touch bar above your keyboard. This is a real session on my phone.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command palette.&lt;/strong&gt; Tap the Tools button on the top right and you get a panel with six sections: &lt;strong&gt;Session&lt;/strong&gt; (new tab, upload/download files, view markdown, close/rename/split/stop sessions, resume agent sessions), &lt;strong&gt;Search&lt;/strong&gt; (find in terminal), &lt;strong&gt;View&lt;/strong&gt; (font size, themes, port preview, code viewer, git changes), &lt;strong&gt;Share&lt;/strong&gt; (copy shareable link), &lt;strong&gt;Notifications&lt;/strong&gt; (toggle push notifications), and &lt;strong&gt;System&lt;/strong&gt; (refresh, clear terminal, about). Every feature is two taps away.&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%2Ftpzae6nucr1ilq68aoa8.jpeg" 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%2Ftpzae6nucr1ilq68aoa8.jpeg" alt="Command palette" width="430" height="932"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The full command palette. Upload files, view markdown, preview a port, switch themes, check git changes — all from one panel.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sessions hub.&lt;/strong&gt; Each session gets a card showing the working directory, shell, PID, git branch, repo name, and git status — which sessions have staged changes, which are clean, how long ago they were active. The "+ New Session" button lets you create a session in any folder, right from your phone.&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%2Fayjea3rgn3rfbbrdqija.jpeg" 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%2Fayjea3rgn3rfbbrdqija.jpeg" alt="Sessions hub" width="430" height="932"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Three sessions across different projects, each showing git info and status. Tap to connect, "+ New Session" to start one anywhere.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File browser.&lt;/strong&gt; Browse the session's working directory, search files, view code, download files, and see git changes — all in a side panel. The Changes tab shows what's modified and staged.&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%2Feqo8ikrjdlz1ujjnek05.jpeg" 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%2Feqo8ikrjdlz1ujjnek05.jpeg" alt="File browser" width="430" height="932"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The file browser with Files and Changes tabs, browsing a project directory.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And the rest:&lt;/strong&gt; 40 themes (yes, i got carried away lol), push notifications when commands finish, port preview that proxies your local dev server. It's a PWA with iPhone safe-area support, so it feels native.&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%2F9vhko5z3iik0c54dlzgu.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%2F9vhko5z3iik0c54dlzgu.png" alt=" " width="800" height="1700"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Under the Hood
&lt;/h2&gt;

&lt;p&gt;TermBeam spawns a PTY with your shell, serves a React frontend (xterm.js, Zustand, Radix UI) over Express, and bridges them with WebSocket. Azure DevTunnels handles the public URL, or you can choose to work on LAN. Sessions persist when you disconnect.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx termbeam                           &lt;span class="c"&gt;# default: tunnel + auto password&lt;/span&gt;
termbeam &lt;span class="nt"&gt;--password&lt;/span&gt; secret &lt;span class="nt"&gt;--lan&lt;/span&gt;       &lt;span class="c"&gt;# LAN only, custom password&lt;/span&gt;
termbeam &lt;span class="nt"&gt;--persisted-tunnel&lt;/span&gt;            &lt;span class="c"&gt;# stable URL across restarts&lt;/span&gt;
termbeam resume                        &lt;span class="c"&gt;# reconnect from CLI&lt;/span&gt;
termbeam service &lt;span class="nb"&gt;install&lt;/span&gt;               &lt;span class="c"&gt;# always-on background service&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On security — auto-generated passwords, rate-limited login (5 attempts/min/IP), httpOnly cookies, CSP and X-Frame-Options headers, WebSocket origin validation, and single-use QR auth tokens that expire in 5 minutes. Full threat model in &lt;a href="https://github.com/dorlugasigal/TermBeam/blob/main/SECURITY.md" rel="noopener noreferrer"&gt;SECURITY.md&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;1350+ tests across Windows, macOS, and Linux on Node 20, 22, and 24. The less glamorous work was the mobile edge cases — Safari viewport bugs, PTY behavior differences across platforms, WebSocket reconnection after screen locks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;TermBeam is open source, MIT licensed, v1.20.1 on npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx termbeam
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Scan the QR code, add to home screen, and you've got a terminal on your phone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/dorlugasigal/TermBeam" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; · &lt;a href="https://www.npmjs.com/package/termbeam" rel="noopener noreferrer"&gt;npm&lt;/a&gt; · &lt;a href="https://dorlugasigal.github.io/TermBeam/" rel="noopener noreferrer"&gt;Docs&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
