<?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: Edward - dev</title>
    <description>The latest articles on DEV Community by Edward - dev (@support_agentterminal_).</description>
    <link>https://dev.to/support_agentterminal_</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%2F4203764%2F0cb09d10-2a57-466b-82e4-c429eb40a2f8.png</url>
      <title>DEV Community: Edward - dev</title>
      <link>https://dev.to/support_agentterminal_</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/support_agentterminal_"/>
    <language>en</language>
    <item>
      <title>A Moshi alternative where sessions survive without tmux</title>
      <dc:creator>Edward - dev</dc:creator>
      <pubDate>Sat, 24 Oct 2026 03:36:18 +0000</pubDate>
      <link>https://dev.to/support_agentterminal_/a-moshi-alternative-where-sessions-survive-without-tmux-15pk</link>
      <guid>https://dev.to/support_agentterminal_/a-moshi-alternative-where-sessions-survive-without-tmux-15pk</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://4nuva.dev/agent-terminal/blog/moshi-alternative?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=moshi-alternative" rel="noopener noreferrer"&gt;Agent Terminal's blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Keeping an agent running while you check it from your phone should not need a setup guide. With Moshi it takes extra programs on your computer and a VPN such as Tailscale. With Agent Terminal it takes one app.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Art on the original post: a terminal on a PC keeps running tests while the phone's connection drops twice, moving from Wi-Fi to mobile data and back. Each time, the phone reattaches to the same session.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Who should pick which
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Moshi fits better if&lt;/strong&gt; your agents run on Linux servers or a VPS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent Terminal fits better if&lt;/strong&gt; your agents run on a Windows PC or a Mac, and you want it simple, with nothing to set up on a server.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Moshi keeps a session alive
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Moshi&lt;/strong&gt; is an SSH app. To keep a session alive, it needs two more programs on your computer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;mosh&lt;/strong&gt; keeps the connection when your phone changes networks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;tmux&lt;/strong&gt; keeps the shell running when the connection ends.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Moshi's own &lt;a href="https://getmoshi.app/docs/terminal-sessions" rel="noopener noreferrer"&gt;docs&lt;/a&gt; recommend both. You install them, open a firewall range for mosh if yours is strict, and connect through them. The mosh and tmux reattach support is in &lt;a href="https://getmoshi.app/docs/subscription" rel="noopener noreferrer"&gt;Moshi Pro&lt;/a&gt;. To reach a home computer from outside your Wi-Fi, you also need your own route to it, such as Tailscale or another VPN; Moshi's &lt;a href="https://getmoshi.app/docs/install" rel="noopener noreferrer"&gt;install guide&lt;/a&gt; lists these.&lt;/p&gt;

&lt;h3&gt;
  
  
  What goes on the host with Moshi
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;macOS: &lt;code&gt;brew install mosh tmux&lt;/code&gt;, and SSH access to the Mac.&lt;/li&gt;
&lt;li&gt;Debian, Ubuntu or WSL: &lt;code&gt;sudo apt install mosh tmux&lt;/code&gt;, plus &lt;code&gt;openssh-server&lt;/code&gt; in WSL.&lt;/li&gt;
&lt;li&gt;With a strict firewall, open mosh's UDP range (60000 to 61000) on the host.&lt;/li&gt;
&lt;li&gt;Optional: &lt;code&gt;moshi-hook&lt;/code&gt;, for agent notifications and the diff viewer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sources: Moshi's &lt;a href="https://getmoshi.app/docs/install" rel="noopener noreferrer"&gt;install guide&lt;/a&gt; and &lt;a href="https://mosh.org/" rel="noopener noreferrer"&gt;mosh.org&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Agent Terminal keeps a session alive
&lt;/h2&gt;

&lt;p&gt;Agent Terminal puts the session in a &lt;strong&gt;host process&lt;/strong&gt; on your PC. Closing the phone app, losing signal, moving from Wi-Fi to mobile data, closing the desktop app or updating it does not end the shell. When the phone comes back, it reattaches to the same session and catches up on what it missed.&lt;/p&gt;

&lt;p&gt;There is nothing to install on a server: no &lt;code&gt;mosh-server&lt;/code&gt; and no tmux. All of this works without Pro. Free and self-sustained on your own Wi-Fi, no account.&lt;/p&gt;

&lt;p&gt;Away from home, the free plan relies on n0's public relays, a free service run by n0, not by us, with no promise of uptime or speed (&lt;a href="https://4nuva.dev/agent-terminal/blog/what-is-iroh" rel="noopener noreferrer"&gt;what the relay can see&lt;/a&gt;). Expect it to be slow, to drop, or not to connect at all; we have no control of n0's side. With Pro, it is dependable through Agent Terminal's dedicated relays. The catch: it reaches only Windows PCs and Macs that run the desktop app.&lt;/p&gt;

&lt;h2&gt;
  
  
  Compared
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Moshi&lt;/th&gt;
&lt;th&gt;Agent Terminal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Where the session lives&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;tmux, Herdr or Zellij on the host&lt;/td&gt;
&lt;td&gt;A host process on your PC&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;What you install&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;SSH, mosh and tmux on the host, plus Tailscale or a VPN to reach it away from home&lt;/td&gt;
&lt;td&gt;The desktop app&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Away from home&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Your own route: Tailscale, a VPN or a public address&lt;/td&gt;
&lt;td&gt;Best effort through n0's public relays; dependable with Pro&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hosts it reaches&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mac, Linux, VPS, homelab, WSL&lt;/td&gt;
&lt;td&gt;Windows 10 (1809+) and 11, macOS 13+&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Phones&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;iPhone, iPad, Android 10+, Apple Watch&lt;/td&gt;
&lt;td&gt;Android, iPhone, iPad&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Without Pro&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;SSH, 2 saved connections; mosh and tmux reattach are Pro&lt;/td&gt;
&lt;td&gt;Sessions survive; no account&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Notifications&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agent push through &lt;code&gt;moshi-hook&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Terminal and agent notices, also with the app closed; Pro raises the rate limit&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Switching from Moshi on a Mac
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://4nuva.dev/agent-terminal/download?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=moshi-alternative" rel="noopener noreferrer"&gt;Download Agent Terminal&lt;/a&gt; for macOS 13 or later, open it and scan the QR code with the phone app.&lt;/li&gt;
&lt;li&gt;New tabs open in your login shell. Start your agent in one, as you would inside tmux.&lt;/li&gt;
&lt;li&gt;For notices, paste the &lt;strong&gt;Agent Event Notifier&lt;/strong&gt; prompt from Settings into an agent that has hooks. It does the job &lt;code&gt;moshi-hook&lt;/code&gt; did.&lt;/li&gt;
&lt;li&gt;Lock the phone and walk away. The tab is still there when you come back.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can still run tmux in a tab; you just no longer need it. Keep Moshi for your Linux servers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is there a Moshi alternative for Android?
&lt;/h3&gt;

&lt;p&gt;Moshi itself is on Google Play, for Android 10 or later. If your agents run on a Windows PC or a Mac, Agent Terminal for Android keeps the session on that PC.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is there a mosh alternative for Windows?
&lt;/h3&gt;

&lt;p&gt;mosh.org lists no native Windows mosh, and Moshi reaches Windows through WSL. Agent Terminal keeps native PowerShell, Command Prompt, WSL and Git Bash sessions in its host process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need tmux with Agent Terminal?
&lt;/h3&gt;

&lt;p&gt;No. The host process on your PC keeps the session. tmux is optional.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Keep the session on your PC. Reach it from your phone.&lt;/strong&gt; Free and self-sustained on your own Wi-Fi, no account. Windows and macOS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://4nuva.dev/agent-terminal/download?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=moshi-alternative" rel="noopener noreferrer"&gt;Download Agent Terminal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Checked against Moshi's docs and mosh.org on 21 October 2026. Written by Edward, from the team that builds Agent Terminal. Product names are trademarks of their owners. Agent Terminal is not affiliated with or endorsed by any of them.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ssh</category>
      <category>terminal</category>
      <category>windows</category>
      <category>macos</category>
    </item>
    <item>
      <title>Run PowerShell, Command Prompt and Git Bash on your Windows PC from your phone</title>
      <dc:creator>Edward - dev</dc:creator>
      <pubDate>Sat, 24 Oct 2026 03:35:28 +0000</pubDate>
      <link>https://dev.to/support_agentterminal_/run-powershell-command-prompt-and-git-bash-on-your-windows-pc-from-your-phone-1968</link>
      <guid>https://dev.to/support_agentterminal_/run-powershell-command-prompt-and-git-bash-on-your-windows-pc-from-your-phone-1968</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://4nuva.dev/agent-terminal/blog/powershell-from-phone?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=powershell-from-phone" rel="noopener noreferrer"&gt;Agent Terminal's blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There are three ways to do it. Only one keeps your shell running when your phone disconnects.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;th&gt;When the phone disconnects&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;1. OpenSSH Server&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Quick commands on your home Wi-Fi&lt;/td&gt;
&lt;td&gt;Session ends&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;2. OpenSSH + mesh VPN&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The same, from anywhere&lt;/td&gt;
&lt;td&gt;Session still ends&lt;/td&gt;
&lt;td&gt;Free for personal use&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;3. A host app&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Builds, scripts and agents you walk away from&lt;/td&gt;
&lt;td&gt;Session keeps running on the PC&lt;/td&gt;
&lt;td&gt;Free and self-sustained on your own Wi-Fi&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  1. OpenSSH Server
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OpenSSH Server&lt;/strong&gt; is the SSH server built into Windows 10 (build 1809) and later. Turn it on and any SSH app on your phone can open a shell on the PC over your home Wi-Fi: Command Prompt by default, or PowerShell or Git Bash. The catch: the shell belongs to the connection, so when your phone locks or switches network, the shell ends. tmux, the usual fix, has no native Windows version. &lt;a href="https://github.com/tmux/tmux/wiki/Installing" rel="noopener noreferrer"&gt;Its install guide&lt;/a&gt; covers Linux and macOS; on Windows it runs inside WSL, or through MSYS2 or Cygwin.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup steps
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Settings → search &lt;strong&gt;Optional features&lt;/strong&gt; → add &lt;strong&gt;OpenSSH Server&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;In an admin PowerShell: &lt;code&gt;Start-Service sshd&lt;/code&gt; and &lt;code&gt;Set-Service -Name sshd -StartupType 'Automatic'&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Land in PowerShell 7 instead of Command Prompt:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="n"&gt;New-ItemProperty&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Path&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"HKLM:\SOFTWARE\OpenSSH"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;DefaultShell&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Value&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"C:\Program Files\PowerShell\7\pwsh.exe"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-PropertyType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;String&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Force&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Git Bash, use &lt;code&gt;C:\Program Files\Git\bin\bash.exe&lt;/code&gt; as the value.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect from your phone's SSH app to the PC's local IP on port 22. Use a key, not a password.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Source: Microsoft's &lt;a href="https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse" rel="noopener noreferrer"&gt;OpenSSH setup guide&lt;/a&gt; and &lt;a href="https://learn.microsoft.com/en-us/windows-server/administration/openssh/openssh-server-configuration" rel="noopener noreferrer"&gt;server configuration page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Add a mesh VPN
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;mesh VPN&lt;/strong&gt; such as Tailscale puts your PC and phone on one private network, so Option 1 works from anywhere without opening a port to the internet. &lt;a href="https://tailscale.com/pricing" rel="noopener noreferrer"&gt;Tailscale's Personal plan&lt;/a&gt; is free for non-commercial use. The catch: it changes where you can connect from, not what happens when you disconnect.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. A host app
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;host app&lt;/strong&gt; runs the shells on the PC and lets your phone attach and detach. Agent Terminal works this way on Windows and macOS: &lt;a href="https://4nuva.dev/agent-terminal/download?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=powershell-from-phone" rel="noopener noreferrer"&gt;download it&lt;/a&gt;, click the phone icon, scan the QR code.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Diagram on the original post: where the shell session lives. With SSH (Options 1 and 2), the shell belongs to the connection and ends when it drops. With a host app (Option 3), the shell belongs to a host process on the PC, and the phone only attaches to it, so when the phone drops the shell is still running.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Why the session survives in Option 3: the phone attaches to a shell the PC owns.&lt;/p&gt;

&lt;p&gt;Your phone sees every PowerShell, Command Prompt, Git Bash and WSL tab on the PC, and gets a notification when a long command finishes. It is still SSH underneath, with keys only (&lt;a href="https://4nuva.dev/agent-terminal/security" rel="noopener noreferrer"&gt;how to check&lt;/a&gt;). Free and self-sustained on your own Wi-Fi. Away from home, the free plan relies on n0's public relays, best effort and not guaranteed; Pro gives you remote access you can rely on (&lt;a href="https://4nuva.dev/agent-terminal/pricing" rel="noopener noreferrer"&gt;plans&lt;/a&gt;).&lt;/p&gt;

&lt;h2&gt;
  
  
  Compared
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;OpenSSH&lt;/th&gt;
&lt;th&gt;+ mesh VPN&lt;/th&gt;
&lt;th&gt;Host app&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Away from home&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Best effort through n0's public relays; dependable with Pro (&lt;a href="https://4nuva.dev/agent-terminal/pricing" rel="noopener noreferrer"&gt;plans&lt;/a&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Survives a disconnect&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Notifies when done&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pieces to maintain&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can I run tmux on Windows?
&lt;/h3&gt;

&lt;p&gt;Not natively. You can run it inside WSL, or through the MSYS2 and Cygwin packages. WSL’s tmux keeps a Linux shell alive rather than your PowerShell, Command Prompt or Git Bash session.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is it safe to turn on OpenSSH Server?
&lt;/h3&gt;

&lt;p&gt;Windows opens port 22 for it. Behind a home router that is not forwarding the port, only your own network can reach it. Use keys, and never forward port 22 to the internet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need OpenSSH or a VPN for Agent Terminal?
&lt;/h3&gt;

&lt;p&gt;No. The desktop app is the SSH server, and pairing is one QR scan.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Checked against Microsoft, Tailscale and tmux documentation on 20 October 2026. Written by Edward, from the team that builds Agent Terminal.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>powershell</category>
      <category>windows</category>
      <category>ssh</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What is iroh?</title>
      <dc:creator>Edward - dev</dc:creator>
      <pubDate>Sat, 24 Oct 2026 03:24:59 +0000</pubDate>
      <link>https://dev.to/support_agentterminal_/what-is-iroh-36aj</link>
      <guid>https://dev.to/support_agentterminal_/what-is-iroh-36aj</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://4nuva.dev/agent-terminal/blog/what-is-iroh?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=what-is-iroh" rel="noopener noreferrer"&gt;Agent Terminal's blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;iroh is the open-source networking library behind Agent Terminal's remote access. Here is what it does, who runs its relays, and what they can see.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Dial by key.&lt;/strong&gt; Devices are named by a public key, called an endpoint ID, not an IP address.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Try direct.&lt;/strong&gt; iroh tries a direct connection first.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fall back to relay.&lt;/strong&gt; If a network blocks the direct path, traffic goes through a relay.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What a relay sees:&lt;/strong&gt; both devices' IP addresses, and encrypted packets, which it passes along.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it can't see:&lt;/strong&gt; what you type, or what your terminal shows.&lt;/p&gt;

&lt;p&gt;With n0's relays, n0's lookup service also keeps a record of which relay each device is on.&lt;/p&gt;

&lt;h2&gt;
  
  
  What iroh is
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;iroh&lt;/strong&gt; is an open-source networking library that connects one device to another by its public key, called an &lt;strong&gt;endpoint ID&lt;/strong&gt;, instead of its IP address. It tries a direct connection first and falls back to a relay server, and every connection is encrypted end to end with QUIC.&lt;/p&gt;

&lt;p&gt;A library is code inside an app, not something you install. iroh is written in Rust, licensed under MIT or Apache 2.0, and built by a company called n0.&lt;/p&gt;

&lt;h3&gt;
  
  
  The precise version
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;An endpoint ID is the public half of an Ed25519 key pair. The app creates the pair itself; there is no sign-up.&lt;/li&gt;
&lt;li&gt;Connections use QUIC with TLS 1.3, through n0's own QUIC implementation, &lt;code&gt;noq&lt;/code&gt;, which supports multipath: a connection can move between Wi-Fi and mobile data.&lt;/li&gt;
&lt;li&gt;To be found, an endpoint publishes a signed record (Pkarr) with its endpoint ID and its home relay's URL to a DNS server, run by n0 by default. Publishing to the Mainline DHT is opt-in, and devices on the same network can find each other directly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sources: &lt;a href="https://docs.iroh.computer/what-is-iroh" rel="noopener noreferrer"&gt;What is iroh&lt;/a&gt;, &lt;a href="https://docs.iroh.computer/concepts/endpoints" rel="noopener noreferrer"&gt;Endpoints&lt;/a&gt;, &lt;a href="https://docs.iroh.computer/concepts/address-lookup" rel="noopener noreferrer"&gt;Address lookup&lt;/a&gt;, the &lt;a href="https://github.com/n0-computer/iroh" rel="noopener noreferrer"&gt;iroh repository&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why your phone can't just reach your PC
&lt;/h2&gt;

&lt;p&gt;Every device online has an IP address, like a street address. Your PC at home usually does not have its own: the router shares one public address among the whole house. That is &lt;strong&gt;NAT&lt;/strong&gt; (network address translation).&lt;/p&gt;

&lt;p&gt;The router is a one-way door: devices inside can reach out, but its firewall drops any incoming connection that is not a reply. And addresses change, for example when your phone moves from Wi-Fi to mobile data.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Diagram on the original post: a phone away from home sends a connection toward the home router. The router drops it, because it is not a reply to anything the PC sent, so the PC behind the router never sees it. Caption: the router lets replies in, not new connections from outside.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Instead of opening a port to the whole internet, iroh gets both devices to open the door from their own side.&lt;/p&gt;

&lt;h2&gt;
  
  
  How iroh connects
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Find.&lt;/strong&gt; Your phone looks up which relay the PC's endpoint ID is connected to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Go direct.&lt;/strong&gt; Through that relay, the devices swap addresses, then send packets to each other at the same moment. Each router sees what looks like a reply and lets it in: &lt;strong&gt;hole punching&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fall back.&lt;/strong&gt; If some network still blocks it, traffic keeps flowing through the relay instead.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Diagram on the original post, in two parts. 1. Direct, when it works: the phone and the PC connect to each other. 2. Otherwise, via a relay: encrypted traffic goes from the phone to a relay server and on to the PC, and the relay forwards encrypted packets it cannot read. Caption: the relay carries traffic only when a direct path fails.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What the relay can and can't see
&lt;/h3&gt;

&lt;p&gt;The relay passes your traffic along but &lt;strong&gt;cannot read it&lt;/strong&gt;: it is encrypted for the other device's key. It does see both devices' &lt;strong&gt;IP addresses&lt;/strong&gt;. And with n0's relays, n0's lookup service keeps a record of which relay each device is on.&lt;/p&gt;

&lt;h3&gt;
  
  
  More detail on the direct path
&lt;/h3&gt;

&lt;p&gt;iroh runs NAT traversal inside the QUIC connection itself, through an extension (&lt;code&gt;n0_nat_traversal&lt;/code&gt;) modelled on a QUIC NAT traversal draft, so the connection details stay encrypted. Both sides send UDP datagrams to each other's public addresses at the same time. The relay is the meeting point; it does not take part in the punch. Devices reach relays over WebSockets.&lt;/p&gt;

&lt;p&gt;Sources: &lt;a href="https://docs.iroh.computer/concepts/nat-traversal" rel="noopener noreferrer"&gt;NAT traversal&lt;/a&gt;, &lt;a href="https://docs.iroh.computer/concepts/relays" rel="noopener noreferrer"&gt;Relays&lt;/a&gt;, &lt;a href="https://iroh.computer/blog/v1" rel="noopener noreferrer"&gt;Iroh 1.0&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who n0 is, and what the public relays are
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;n0&lt;/strong&gt; (n0, inc.) is the company that builds iroh, in the open on GitHub. It also runs a set of &lt;strong&gt;public relays&lt;/strong&gt; that iroh uses unless an app sets its own. According to n0 and our in-app notice, these relays are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free&lt;/strong&gt;, and shared by every app built on iroh.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not guaranteed&lt;/strong&gt;: no uptime promise, and speed limits n0 does not publish, so a relayed connection can be slow, drop, or not connect at all when they are busy or down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For recent versions only&lt;/strong&gt;: n0 supports only recent iroh releases on them, so an out-of-date app may stop connecting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;n0's docs call them suitable for development and testing, and offer paid relays for production.&lt;/p&gt;

&lt;h2&gt;
  
  
  For Tailscale users
&lt;/h2&gt;

&lt;p&gt;The ideas are familiar: go direct, hole-punch through NAT, fall back to a relay (Tailscale's are called DERP) that cannot decrypt what it forwards. The difference is scope. Tailscale puts a whole device on a private network every app can use; iroh connects one app to its peers.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;iroh&lt;/th&gt;
&lt;th&gt;Tailscale&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;What it is&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A library inside one app&lt;/td&gt;
&lt;td&gt;A client that joins the device to your tailnet (&lt;a href="https://tailscale.com/kb/1244/tsnet" rel="noopener noreferrer"&gt;tsnet&lt;/a&gt; embeds it in a Go program)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Encryption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;QUIC with TLS 1.3&lt;/td&gt;
&lt;td&gt;WireGuard&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Identity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;A key the app creates; no account&lt;/td&gt;
&lt;td&gt;An account; a coordination server shares devices' public keys&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Relays&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;iroh relays: n0's public set, paid, or your own&lt;/td&gt;
&lt;td&gt;DERP: Tailscale's, or your own&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Neither is better in general: Tailscale for one private network with access rules, iroh for an app that reaches its own other half with no setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Agent Terminal uses it
&lt;/h2&gt;

&lt;p&gt;The desktop app on your Windows PC or Mac runs an iroh endpoint; the phone dials its endpoint ID once you pair by scanning a QR code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Same Wi-Fi, or a direct path:&lt;/strong&gt; no relay is used.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Free plan, away from home:&lt;/strong&gt; the free plan relies on n0's public relays, with no account: a free service run by n0, not by us, with no promise of uptime or speed. Expect it to be slow, to drop, or not to connect at all; we have no control of n0's side.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro:&lt;/strong&gt; remote access you can rely on, through Agent Terminal's dedicated relays (&lt;a href="https://4nuva.dev/agent-terminal/pricing" rel="noopener noreferrer"&gt;plans&lt;/a&gt;). If Pro ends, it falls back to the public relays.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your own relay:&lt;/strong&gt; run one and set it on the desktop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Inside the iroh connection it is still SSH, end to end between your phone and your PC, and the desktop accepts public keys only (&lt;a href="https://4nuva.dev/agent-terminal/security" rel="noopener noreferrer"&gt;how to check&lt;/a&gt;). Reaching the PC lets nobody in without a paired key.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is it safe?
&lt;/h3&gt;

&lt;p&gt;A relay cannot read your session: it is iroh's encryption on the outside and SSH on the inside, and the desktop checks every key itself. What a relay does learn is both devices' IP addresses. Any relay sees them, so the choice is whose: n0's on the free plan, ours with Pro, or your own.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need an account?
&lt;/h3&gt;

&lt;p&gt;No, not for the free plan. An account is only for Pro.&lt;/p&gt;

&lt;h3&gt;
  
  
  What if n0's relays are down or slow?
&lt;/h3&gt;

&lt;p&gt;On the same Wi-Fi, or wherever the devices connect directly, nothing changes. On the free plan a relayed connection can be slow, drop, or not connect at all until they recover, and we have no control of that; Pro uses Agent Terminal's dedicated relays instead. Keep Agent Terminal up to date, since n0 supports only recent iroh versions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I run my own relay?
&lt;/h3&gt;

&lt;p&gt;Yes. n0 publishes the relay as open source (&lt;a href="https://docs.iroh.computer/concepts/relays" rel="noopener noreferrer"&gt;how&lt;/a&gt;). Run it on a server you control, then set it on the desktop.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Your PC's terminals, on your phone.&lt;/strong&gt; Free and self-sustained on your own Wi-Fi, no account. Windows and macOS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://4nuva.dev/agent-terminal/download?utm_source=devto&amp;amp;utm_medium=syndication&amp;amp;utm_campaign=what-is-iroh" rel="noopener noreferrer"&gt;Download Agent Terminal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Checked against iroh's documentation, n0's blog and Tailscale's documentation on 20 October 2026. Written by Edward, from the team that builds Agent Terminal, which uses iroh.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>networking</category>
      <category>p2p</category>
      <category>quic</category>
    </item>
  </channel>
</rss>
