<?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: chen zong</title>
    <description>The latest articles on DEV Community by chen zong (@chen_zong_43c81f1a65b1a54).</description>
    <link>https://dev.to/chen_zong_43c81f1a65b1a54</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%2F4080717%2F04f31364-806a-461b-8f39-e952910f8ba7.png</url>
      <title>DEV Community: chen zong</title>
      <link>https://dev.to/chen_zong_43c81f1a65b1a54</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/chen_zong_43c81f1a65b1a54"/>
    <language>en</language>
    <item>
      <title>Fixing SSH "Too many authentication failures" (and why it happens)</title>
      <dc:creator>chen zong</dc:creator>
      <pubDate>Wed, 19 Aug 2026 15:06:41 +0000</pubDate>
      <link>https://dev.to/chen_zong_43c81f1a65b1a54/fixing-ssh-too-many-authentication-failures-and-why-it-happens-4n9f</link>
      <guid>https://dev.to/chen_zong_43c81f1a65b1a54/fixing-ssh-too-many-authentication-failures-and-why-it-happens-4n9f</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://termai.sh/blog/ssh-too-many-authentication-failures/" rel="noopener noreferrer"&gt;termai.sh&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What the error actually means
&lt;/h2&gt;

&lt;p&gt;The server cut you off because your client made too many auth attempts in one connection — by default OpenSSH allows 6 (&lt;code&gt;MaxAuthTries&lt;/code&gt;). The counterintuitive part: you usually see this &lt;strong&gt;without doing anything wrong&lt;/strong&gt;. The cause is almost always a client with many keys loaded: it offers key 1, key 2, key 3… each rejection counts as a failure, and you're disconnected before the right key ever gets a turn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why your client offers every key it has
&lt;/h2&gt;

&lt;p&gt;SSH agents accumulate keys: everything in &lt;code&gt;~/.ssh&lt;/code&gt;, everything added to &lt;code&gt;ssh-agent&lt;/code&gt;, keys from other servers. By default the client tries them all, in order. Five wrong keys = five failures = one attempt left. People with 6+ keys get rejected by every &lt;em&gt;new&lt;/em&gt; server, which looks baffling until you know the mechanism.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fix 1 — Offer only the right key (desktop)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# one-off: force a single key, ignore the agent's pile&lt;/span&gt;
ssh &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="nv"&gt;IdentitiesOnly&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;yes&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; ~/.ssh/the_right_key user@host
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make it permanent per-host in &lt;code&gt;~/.ssh/config&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;Host&lt;/span&gt; myserver
    &lt;span class="k"&gt;HostName&lt;/span&gt; &lt;span class="m"&gt;203&lt;/span&gt;.0.113.7
    &lt;span class="k"&gt;User&lt;/span&gt; deploy
    &lt;span class="k"&gt;IdentityFile&lt;/span&gt; ~/.ssh/the_right_key
    &lt;span class="k"&gt;IdentitiesOnly&lt;/span&gt; &lt;span class="no"&gt;yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;IdentitiesOnly yes&lt;/code&gt; is the key directive: it stops the client from parading every agent key past the server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fix 2 — On mobile, pin the key to the connection
&lt;/h2&gt;

&lt;p&gt;Mobile clients are naturally less prone to this — but only if the connection is configured with one specific key. Attach the key that belongs to &lt;em&gt;this&lt;/em&gt; server to the connection, and the client offers exactly that one, so the failure counter never piles up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fix 3 — Server-side (use sparingly)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;MaxAuthTries&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;
&lt;span class="c1"&gt;# then: sudo systemctl restart ssh&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Treat this as a workaround, not the fix — a higher limit also gives brute-forcers more swings per connection (fail2ban mitigates that). The real fix is clients offering the right key first. With password auth, repeatedly mistyping also trips the limit — that one is just retyping carefully or switching to keys.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Meaning:&lt;/strong&gt; too many auth attempts in one connection (default cap 6, &lt;code&gt;MaxAuthTries&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real cause:&lt;/strong&gt; the client/agent offering its whole key pile, wrong ones first&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix:&lt;/strong&gt; &lt;code&gt;IdentitiesOnly yes&lt;/code&gt; + the one right &lt;code&gt;IdentityFile&lt;/code&gt;; on mobile, pin the key per connection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoid:&lt;/strong&gt; raising &lt;code&gt;MaxAuthTries&lt;/code&gt; as a workaround — it widens the brute-force window&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full version with the FAQ:&lt;/strong&gt; &lt;a href="https://termai.sh/blog/ssh-too-many-authentication-failures/" rel="noopener noreferrer"&gt;SSH "Too many authentication failures"&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ssh</category>
      <category>tutorial</category>
      <category>linux</category>
    </item>
    <item>
      <title>Termius alternatives in 2026 (and the Termius vs Terminus mix-up)</title>
      <dc:creator>chen zong</dc:creator>
      <pubDate>Wed, 19 Aug 2026 08:45:31 +0000</pubDate>
      <link>https://dev.to/chen_zong_43c81f1a65b1a54/termius-alternatives-in-2026-and-the-termius-vs-terminus-mix-up-1hf9</link>
      <guid>https://dev.to/chen_zong_43c81f1a65b1a54/termius-alternatives-in-2026-and-the-termius-vs-terminus-mix-up-1hf9</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://termai.sh/blog/termius-alternatives/" rel="noopener noreferrer"&gt;termai.sh&lt;/a&gt;. Prices checked August 2026 — treat each vendor's own page as authoritative. Disclosure: TermAI is our app.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why people look for a Termius alternative
&lt;/h2&gt;

&lt;p&gt;Termius is a solid, mature SSH client, and most people searching for an alternative aren't unhappy with its quality. They're reacting to one of four things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Price.&lt;/strong&gt; Termius Pro is &lt;strong&gt;$10 per user per month billed annually&lt;/strong&gt; (~$120/year); month-to-month costs more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sync is the paywall.&lt;/strong&gt; The free Starter plan is generous — unlimited hosts, SFTP, port forwarding, AI autocomplete, commercial use allowed — but &lt;strong&gt;sync doesn't work on it&lt;/strong&gt;. Your hosts and keys live on one device.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desktop-first feel on a phone.&lt;/strong&gt; Termius is one product stretched across five platforms; some people want something designed for a 6-inch screen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing pieces.&lt;/strong&gt; No built-in Tailscale, and the conversational AI Agent is still behind a beta.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  First, a disambiguation: Terminus or Termius?
&lt;/h2&gt;

&lt;p&gt;These get searched interchangeably and are &lt;strong&gt;not the same product&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Termius&lt;/strong&gt; — the commercial cross-platform SSH client (formerly Server Auditor). This is what most people mean.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminus&lt;/strong&gt; — the old name of &lt;strong&gt;Tabby&lt;/strong&gt;, the open-source terminal by Eugeny. It renamed itself precisely because "Terminus" was too close to "Termius."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminus&lt;/strong&gt; is also an unrelated B2B marketing platform and a Drupal/Pantheon CLI tool — if you see five-figure monthly pricing, that's the marketing company, not a terminal.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The 2026 comparison at a glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Client&lt;/th&gt;
&lt;th&gt;iOS&lt;/th&gt;
&lt;th&gt;Android&lt;/th&gt;
&lt;th&gt;Desktop&lt;/th&gt;
&lt;th&gt;AI&lt;/th&gt;
&lt;th&gt;Tailscale&lt;/th&gt;
&lt;th&gt;Price (Aug 2026)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TermAI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes, native&lt;/td&gt;
&lt;td&gt;Yes, built-in&lt;/td&gt;
&lt;td&gt;Free tier; $2.99/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Termius&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes, autocomplete (free)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Free tier; $10/mo annual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Blink Shell&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;$19.99/yr&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prompt 3&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (macOS)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;$19.99/yr or $99 once&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Termux&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;via package&lt;/td&gt;
&lt;td&gt;Free, open source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ConnectBot&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Free, open source&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tabby (ex-Terminus)&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;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Free, open source&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Short version: for the closest like-for-like at a lower price with AI and Tailscale built in on &lt;strong&gt;both&lt;/strong&gt; iPhone and Android, TermAI is the most direct swap. Live entirely on one platform? A native-only app like Blink (iOS) may suit you better. Want desktop and open source? Tabby.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The full breakdown&lt;/strong&gt; — Termius pricing math, the free-vs-paid tiers, and each alternative in detail — is in the complete guide: &lt;strong&gt;&lt;a href="https://termai.sh/blog/termius-alternatives/" rel="noopener noreferrer"&gt;Termius alternatives in 2026&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>ssh</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What is an "AI terminal", really? The 4 steps every one shares</title>
      <dc:creator>chen zong</dc:creator>
      <pubDate>Wed, 19 Aug 2026 01:41:59 +0000</pubDate>
      <link>https://dev.to/chen_zong_43c81f1a65b1a54/what-is-an-ai-terminal-really-the-4-steps-every-one-shares-4pom</link>
      <guid>https://dev.to/chen_zong_43c81f1a65b1a54/what-is-an-ai-terminal-really-the-4-steps-every-one-shares-4pom</guid>
      <description>&lt;h2&gt;
  
  
  What is an AI terminal?
&lt;/h2&gt;

&lt;p&gt;An &lt;strong&gt;AI terminal&lt;/strong&gt; is a command line with a language model built in: you describe what you want in plain English and it writes the command, explains the error you just hit, or suggests the next step — instead of you remembering exact flag syntax. Some go further and &lt;em&gt;run&lt;/em&gt; the steps for you.&lt;/p&gt;

&lt;p&gt;The short version for 2026: on a &lt;strong&gt;desktop&lt;/strong&gt;, &lt;strong&gt;Warp&lt;/strong&gt; is the leading AI terminal (free tier, paid plans from $20/mo). For AI that actually &lt;strong&gt;does the work&lt;/strong&gt; in a repo, use an agentic CLI — &lt;strong&gt;Claude Code&lt;/strong&gt;, &lt;strong&gt;OpenAI Codex CLI&lt;/strong&gt;, &lt;strong&gt;aider&lt;/strong&gt;, &lt;strong&gt;OpenCode&lt;/strong&gt; or &lt;strong&gt;Goose&lt;/strong&gt; — inside whatever terminal you already like. For &lt;strong&gt;private/offline&lt;/strong&gt; use, run a local model with &lt;strong&gt;Ollama&lt;/strong&gt;. And on a &lt;strong&gt;phone&lt;/strong&gt;, where none of the above ship an app, &lt;strong&gt;TermAI&lt;/strong&gt; puts an AI assistant in a mobile SSH terminal on iOS and Android.&lt;/p&gt;

&lt;p&gt;The rest of this page is the map: what each kind is, what it costs today, what changed in 2026, and how to choose. Prices and limits below were checked in &lt;strong&gt;August 2026&lt;/strong&gt; — this category moves fast, so confirm on the vendor's own pricing page before you commit.&lt;/p&gt;

&lt;h2&gt;
  
  
  How an AI terminal actually works
&lt;/h2&gt;

&lt;p&gt;Whatever the branding, nearly all of them are the same four steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;You describe the goal&lt;/strong&gt; in plain language — "find what's eating the disk", "why did nginx fail to reload".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The tool gathers context.&lt;/strong&gt; This is the part that separates good from useless: the OS and shell, your recent commands and their output, sometimes the repo's file tree. A tool with no context guesses; a tool with context answers about &lt;em&gt;your&lt;/em&gt; machine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A model returns a command&lt;/strong&gt; (or a patch, or a plan), usually with a one-line explanation of what it does.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You run it&lt;/strong&gt; — by pressing enter, tapping Run, or approving an agent's proposed step. Whether that approval is required is the single biggest design difference between tools.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Two consequences worth knowing before you install anything. First, &lt;strong&gt;your terminal content becomes model input&lt;/strong&gt;: whatever is on screen when you ask — hostnames, paths, sometimes secrets in a config you just cat'd — is what gets sent, unless you run the model locally. Second, &lt;strong&gt;a confident wrong command looks exactly like a right one&lt;/strong&gt;. We wrote up how to tell them apart in &lt;a href="https://termai.sh/blog/trusting-ai-shell-suggestions/" rel="noopener noreferrer"&gt;can you trust AI shell suggestions?&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The five kinds of AI terminal
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Kind&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;th&gt;Runs on&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Desktop AI terminal&lt;/td&gt;
&lt;td&gt;Warp, Wave Terminal, iTerm2 + AI plugin&lt;/td&gt;
&lt;td&gt;Mac/Linux/Win&lt;/td&gt;
&lt;td&gt;A modern daily-driver terminal with AI built in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agentic CLI&lt;/td&gt;
&lt;td&gt;Claude Code, Codex CLI, aider, OpenCode, Goose, Antigravity CLI&lt;/td&gt;
&lt;td&gt;Mac/Linux/Win&lt;/td&gt;
&lt;td&gt;Letting AI run multi-step tasks and edit code in a repo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Editor terminal + AI&lt;/td&gt;
&lt;td&gt;Cursor, VS Code + Copilot&lt;/td&gt;
&lt;td&gt;Desktop&lt;/td&gt;
&lt;td&gt;AI beside your code, in the same window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local-AI shell&lt;/td&gt;
&lt;td&gt;Ollama + a shell helper&lt;/td&gt;
&lt;td&gt;Mac/Linux/Win&lt;/td&gt;
&lt;td&gt;Offline or privacy-sensitive work; nothing leaves the box&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mobile AI SSH client&lt;/td&gt;
&lt;td&gt;TermAI&lt;/td&gt;
&lt;td&gt;iOS / Android&lt;/td&gt;
&lt;td&gt;AI in the terminal on a phone, over SSH&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Most "best AI terminal" lists collapse the first two into one row, which is why their advice reads oddly — a terminal emulator with AI and an autonomous coding agent are not competitors. They stack: many people run Claude Code &lt;em&gt;inside&lt;/em&gt; Warp. And none of the first four exist on a phone at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI terminal comparison (August 2026)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Platforms&lt;/th&gt;
&lt;th&gt;Open source&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;th&gt;Bring your own key&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Warp&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Desktop terminal + agents&lt;/td&gt;
&lt;td&gt;macOS, Linux, Windows&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Free tier; Build $20/mo, Max $200/mo, Business $50/user/mo&lt;/td&gt;
&lt;td&gt;✅ (all plans, incl. Free)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Wave Terminal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Desktop terminal + AI&lt;/td&gt;
&lt;td&gt;macOS, Linux&lt;/td&gt;
&lt;td&gt;✅ Apache-2.0&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;iTerm2 + AI plugin&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Desktop terminal + AI&lt;/td&gt;
&lt;td&gt;macOS&lt;/td&gt;
&lt;td&gt;✅ terminal&lt;/td&gt;
&lt;td&gt;Free (you pay the model)&lt;/td&gt;
&lt;td&gt;✅ required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude Code&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agentic CLI&lt;/td&gt;
&lt;td&gt;macOS, Linux, Windows&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Claude Pro $20/mo, Max $100/$200/mo, or API usage&lt;/td&gt;
&lt;td&gt;✅ API billing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Codex CLI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agentic CLI&lt;/td&gt;
&lt;td&gt;macOS, Linux, Windows&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Included with ChatGPT plans, or API usage&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;aider&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agentic CLI (git-native)&lt;/td&gt;
&lt;td&gt;macOS, Linux, Windows&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Free tool; you pay model usage&lt;/td&gt;
&lt;td&gt;✅ required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OpenCode / Goose&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agentic CLI&lt;/td&gt;
&lt;td&gt;macOS, Linux, Windows&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Free tool; you pay model usage&lt;/td&gt;
&lt;td&gt;✅ required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Antigravity CLI (&lt;code&gt;agy&lt;/code&gt;)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agentic CLI&lt;/td&gt;
&lt;td&gt;macOS, Linux, Windows&lt;/td&gt;
&lt;td&gt;❌ (was open source as Gemini CLI)&lt;/td&gt;
&lt;td&gt;Small free allowance; Google AI Pro/Ultra for real use&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ollama + shell helper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Local-AI shell&lt;/td&gt;
&lt;td&gt;macOS, Linux, Windows&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;Free (your hardware)&lt;/td&gt;
&lt;td&gt;n/a — model is local&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TermAI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mobile AI SSH client&lt;/td&gt;
&lt;td&gt;iOS, Android&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Free tier includes AI (5 AI calls/day)&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Desktop AI terminals (Warp, Wave, iTerm2)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Warp&lt;/strong&gt; is the best-known AI terminal: a fast, modern terminal with block-based output, command suggestions, error explanations, and agent management in tabs. In 2026 it has grown into an agent platform — it can drive other CLI agents (Claude Code, Codex, and others) with vertical tabs, notifications and native code review. Pricing as of August 2026: a Free tier (core terminal features stay free on all three desktop platforms; AI is metered in credits — 150/mo for a new account's first two months, then 75/mo), &lt;strong&gt;Build at $20/mo&lt;/strong&gt;, &lt;strong&gt;Max at $200/mo&lt;/strong&gt;, &lt;strong&gt;Business at $50/user/mo&lt;/strong&gt;, and Enterprise. Since May 2026 you can bring your own API key on every plan including Free, which effectively removes the credit ceiling if you already pay a model provider.&lt;/p&gt;

&lt;p&gt;Two things people ask about Warp that lists usually skip. It &lt;strong&gt;requires an account&lt;/strong&gt; to sign in. And it has &lt;strong&gt;no iOS or Android app&lt;/strong&gt; — the closest thing is Warp's Remote Control, which publishes a running agent session to a link you can open in a phone browser to watch it and approve steps. That's monitoring a desktop session remotely, not a terminal on your phone: you can't open a fresh SSH connection to an arbitrary server from it. See &lt;a href="https://termai.sh/blog/warp-alternative/" rel="noopener noreferrer"&gt;Warp alternatives&lt;/a&gt; and &lt;a href="https://termai.sh/blog/termius-vs-warp/" rel="noopener noreferrer"&gt;Termius vs Warp&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wave Terminal&lt;/strong&gt; is the closest open-source answer to Warp: Apache-2.0 licensed, modern UI, inline rendering, persistent sessions, AI built in with your own key and no forced sign-in. &lt;strong&gt;iTerm2&lt;/strong&gt; takes the opposite approach on macOS — AI ships as a &lt;em&gt;separate&lt;/em&gt; optional plugin, precisely so a stock install can't send terminal contents over the network. It's provider-agnostic (OpenAI, Anthropic, Gemini, DeepSeek) and can point at a self-hosted model with no API key at all; the features are a command generator and "Codecierge" step-by-step guidance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Agentic CLIs (Claude Code, Codex, aider, OpenCode, Goose)
&lt;/h2&gt;

&lt;p&gt;These don't replace your terminal — they run inside it. You give a goal, and the tool runs a sequence of commands and edits to accomplish it, checking in as it goes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Claude Code&lt;/strong&gt; — the deepest at multi-file work and long plans in a repo. It's not sold standalone: it draws on your Claude plan (Pro $20/mo, Max $100/mo or $200/mo) or on API pay-as-you-go. Best when you want one strong model doing sustained work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenAI Codex CLI&lt;/strong&gt; — open source, with the strongest &lt;strong&gt;sandboxing&lt;/strong&gt; story of the group and the easiest CI/CD integration. Included with ChatGPT plans or billed via API. Pick it if "what exactly is this thing allowed to touch" is your first question.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;aider&lt;/strong&gt; — open source, git-native: every edit becomes a commit, and it builds a repo map for context. The oldest and most predictable of the bunch; you bring your own API key and can point it at almost any model.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenCode&lt;/strong&gt; and &lt;strong&gt;Goose&lt;/strong&gt; — open source, model-agnostic agents. Goose (from Block) runs on-machine and leans on extensions/MCP for tools. Both are good fits if you want no vendor lock-in on the model.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Antigravity CLI (&lt;code&gt;agy&lt;/code&gt;)&lt;/strong&gt; — Google &lt;strong&gt;retired Gemini CLI on June 18, 2026&lt;/strong&gt; and replaced it with Antigravity CLI, a closed-source Go binary with async multi-agent workflows. If you're following a tutorial that promises Gemini CLI's old 1,000-requests-a-day free tier, that's gone; the current free allowance is a small shared pool and serious use expects a Google AI Pro/Ultra subscription. Check Google's live quota page before planning around it.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The trade-off with all of them is autonomy: handing a loop of shell commands to a model is exactly as powerful and as risky as it sounds. Use sandboxes or approval modes, and prefer a repo under version control. More on this in &lt;a href="https://termai.sh/blog/ai-agent-terminal/" rel="noopener noreferrer"&gt;AI agents in the terminal&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local-AI shells (Ollama, private and offline)
&lt;/h2&gt;

&lt;p&gt;If the content of your terminal can't leave the machine — regulated environments, client servers, air-gapped boxes, or just personal preference — run the model locally. &lt;strong&gt;Ollama&lt;/strong&gt; pulls an open-weights model and serves it on &lt;code&gt;localhost&lt;/code&gt;; a small shell helper turns "what's using port 8080" into a command against it. Nothing is sent anywhere.&lt;/p&gt;

&lt;p&gt;Honest costs: local models are meaningfully weaker than hosted frontier models at shell reasoning, a useful model wants real RAM/VRAM, and you own the setup. But for sensitive work the trade is often worth it, and iTerm2's plugin plus several agentic CLIs will happily point at a local endpoint. Walkthrough: &lt;a href="https://termai.sh/blog/ollama-shell/" rel="noopener noreferrer"&gt;running an AI shell with Ollama&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free and open-source AI terminals
&lt;/h2&gt;

&lt;p&gt;"Free" splits into three different things, and it's worth knowing which one you're getting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Free tool, you pay the model&lt;/strong&gt; — aider, OpenCode, Goose, iTerm2's plugin. No subscription, but you need an API key and the meter runs per token. This is the cheapest option for light use and the most expensive for heavy use.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Free tier of a paid product&lt;/strong&gt; — Warp's Free plan (metered AI credits, or unlimited-ish with your own key), TermAI's free tier (5 AI calls a day on iOS and Android). Fine for occasional use; the ceiling is the point.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Free and local&lt;/strong&gt; — Ollama plus a shell helper. No account, no key, no meter, no network. You pay in setup time and model quality.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fully open-source stack, if that's the requirement: &lt;strong&gt;Wave Terminal&lt;/strong&gt; (terminal) + &lt;strong&gt;aider&lt;/strong&gt; or &lt;strong&gt;OpenCode&lt;/strong&gt; (agent) + &lt;strong&gt;Ollama&lt;/strong&gt; (model). Nothing proprietary anywhere in the chain.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mobile gap: an AI terminal on a phone
&lt;/h2&gt;

&lt;p&gt;Every option above assumes a desktop. Warp, Wave, iTerm2, Claude Code, Codex CLI, aider — none of them ship a phone app. Yet a phone is arguably where an AI terminal helps &lt;em&gt;most&lt;/em&gt;: you're away from your desk, typing is painful, a flag you use twice a year is impossible to recall, and something is down now.&lt;/p&gt;

&lt;p&gt;That's the gap &lt;strong&gt;TermAI&lt;/strong&gt; fills: an SSH client for iOS and Android with an AI assistant built into the terminal. Describe the task and it suggests the command, grounded in the live server — it reads the OS, current disk/memory/CPU, and recent output — then you tap Run, with a confirmation before anything destructive executes. AI is included on the free tier (5 calls a day). See &lt;a href="https://termai.sh/blog/ai-ssh-client/" rel="noopener noreferrer"&gt;AI SSH clients explained&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The practical pattern is not "replace my desktop terminal" — it's &lt;strong&gt;reach the desktop from the phone&lt;/strong&gt;. SSH from TermAI into the same Mac or Linux box where you'd normally open Warp, and let the AI help you there. TermAI has Tailscale built in, so the target machine doesn't need to be exposed to the public internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Safety: what to check before you let one run commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Does it require approval?&lt;/strong&gt; Assistant-style tools (Warp's suggestions, TermAI, iTerm2's generator) propose and wait. Agentic tools run loops — check the default approval mode before pointing one at a production box.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What gets sent?&lt;/strong&gt; Terminal scrollback often contains hostnames, IPs, tokens from a config you displayed. If that's unacceptable, that's the argument for a local model.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Destructive-command guardrails.&lt;/strong&gt; &lt;code&gt;rm -rf&lt;/code&gt;, &lt;code&gt;dd&lt;/code&gt;, &lt;code&gt;mkfs&lt;/code&gt;, &lt;code&gt;chmod -R&lt;/code&gt;, force-pushes and &lt;code&gt;DROP TABLE&lt;/code&gt; deserve an explicit confirm step. Tools differ a lot here.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sandbox and blast radius.&lt;/strong&gt; Codex CLI's sandboxing, containers, or simply a repo under git are what make a bad step recoverable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Read before you run.&lt;/strong&gt; A model that doesn't know your fstab will still write a confident &lt;code&gt;mount&lt;/code&gt; command. Details in &lt;a href="https://termai.sh/blog/trusting-ai-shell-suggestions/" rel="noopener noreferrer"&gt;can you trust AI shell suggestions?&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to pick
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Desktop daily driver with AI built in&lt;/strong&gt; → Warp (Wave Terminal if you need open source and no account)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI that runs multi-step coding tasks&lt;/strong&gt; → Claude Code for depth, Codex CLI for sandboxing, aider for git discipline&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No vendor lock-in on the model&lt;/strong&gt; → aider, OpenCode or Goose with your own key&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Private, offline, or regulated&lt;/strong&gt; → Ollama + a shell helper (or iTerm2 pointed at a local model)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;macOS, and you don't want AI in the binary by default&lt;/strong&gt; → iTerm2, plugin installed only if you want it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Server admin work, not coding&lt;/strong&gt; → an assistant that explains and confirms beats an agent that acts — see &lt;a href="https://termai.sh/blog/ai-for-sysadmin/" rel="noopener noreferrer"&gt;AI for sysadmins&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI in the terminal on a phone, over SSH&lt;/strong&gt; → TermAI (nothing else on this list has a mobile app)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is the best AI terminal in 2026?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
On a desktop, Warp is the leading AI terminal. For autonomous coding work, an agentic CLI — Claude Code for depth, Codex CLI for sandboxing, aider for git-native edits. For private/offline use, Ollama with a shell helper. On a phone over SSH, TermAI. They serve different places you work, and many people use two of them together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there an AI terminal for mobile?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes — TermAI is a mobile SSH client with an AI assistant built into the terminal, on iOS and Android, with AI included on the free tier. Warp, Wave, iTerm2, Claude Code and Codex CLI are all desktop-only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Warp have a phone app?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
No. Warp runs on macOS, Linux and Windows. Its Remote Control feature publishes a running agent session to a link you can open in a mobile browser to watch and approve steps, but that monitors a desktop session — it isn't a terminal you can SSH from.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a free AI terminal?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Several. Warp has a free tier with metered AI credits (150/mo for the first two months of a new account, then 75/mo) and supports your own API key on the free plan. Wave Terminal, aider, OpenCode, Goose and Codex CLI are free/open-source tools where you pay only for model usage. Ollama is free and local. TermAI's free tier includes 5 AI calls a day on mobile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the best open-source AI terminal?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Wave Terminal (Apache-2.0) is the closest open-source equivalent to Warp. For agents, aider, OpenCode and Goose are open source, and Codex CLI is too. A fully open stack: Wave + aider + Ollama.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can an AI terminal run commands by itself?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Agentic tools can, by design — that's the product. Assistant-style terminals like TermAI suggest a command and require you to tap Run, with an extra confirmation before destructive ones. Check the default approval mode of any agent before running it on a machine that matters.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happened to Gemini CLI?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Google retired it on June 18, 2026 and replaced it with Antigravity CLI (the &lt;code&gt;agy&lt;/code&gt; binary), a closed-source Go rewrite. The generous old free tier of 1,000 requests a day is gone; real use now expects a Google AI Pro/Ultra subscription, so verify current quotas before building anything around it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is an AI terminal the same as an AI SSH client?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
No. An AI terminal is a local shell with a model attached. An AI SSH client manages saved hosts and keys, connects to remote servers, and puts the AI in &lt;em&gt;that&lt;/em&gt; session — so its answers are grounded in the remote machine's state, not your laptop's. Warp is the former; TermAI is the latter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does an AI terminal work offline?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Only the local-model kind. Ollama-based setups (and iTerm2 or aider pointed at a local endpoint) work with no network. Everything hosted — Warp's AI, Claude Code, Codex CLI, Antigravity — needs a connection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is it safe to use an AI terminal on a production server?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
With care. Prefer a tool that requires approval per command over one that runs autonomously, keep destructive-command confirmations on, assume whatever is on screen is sent to the model unless it's running locally, and read the command before you approve it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which AI terminal is best for sysadmins rather than developers?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Sysadmin work is usually one careful command at a time on a remote box, not a repo refactor — so an assistant that explains and confirms fits better than an autonomous agent. Warp on the desktop, TermAI on a phone, or a local Ollama helper where the output can't leave the machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Facts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI terminal&lt;/strong&gt; = a command line with an LLM that turns plain language into commands&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Desktop&lt;/strong&gt;: Warp (free tier; Build $20/mo, Max $200/mo) · open-source: Wave Terminal&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agentic coding&lt;/strong&gt;: Claude Code (via Claude Pro $20 / Max $100–$200) · Codex CLI · aider · OpenCode · Goose&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Gemini CLI&lt;/strong&gt; was retired June 18, 2026 → Antigravity CLI (&lt;code&gt;agy&lt;/code&gt;), closed source, much smaller free tier&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Local/private&lt;/strong&gt;: Ollama + a shell helper — offline, nothing sent anywhere&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mobile (over SSH)&lt;/strong&gt;: TermAI on iOS + Android — AI on the free tier, grounded in the live server, confirm before destructive&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pick by&lt;/strong&gt; where you work: desktop, editor, remote server, or phone. Prices checked August 2026.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>terminal</category>
      <category>cli</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Warp terminal alternatives in 2026 (and 2 outdated reasons to switch)</title>
      <dc:creator>chen zong</dc:creator>
      <pubDate>Wed, 19 Aug 2026 01:37:20 +0000</pubDate>
      <link>https://dev.to/chen_zong_43c81f1a65b1a54/warp-terminal-alternatives-in-2026-and-2-outdated-reasons-to-switch-1ll5</link>
      <guid>https://dev.to/chen_zong_43c81f1a65b1a54/warp-terminal-alternatives-in-2026-and-2-outdated-reasons-to-switch-1ll5</guid>
      <description>&lt;h2&gt;
  
  
  The short answer
&lt;/h2&gt;

&lt;p&gt;Warp is an excellent AI terminal — and in 2026 it's a different product than most "Warp alternative" articles describe. Two of the old complaints are gone: Warp &lt;strong&gt;no longer forces you to log in&lt;/strong&gt; (that changed in November 2024) and the terminal client &lt;strong&gt;is now open source&lt;/strong&gt; (AGPL-3.0, since April 2026). So pick your alternative for a reason that's still true today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You want an AI terminal on your phone&lt;/strong&gt; → &lt;strong&gt;TermAI&lt;/strong&gt;. This is the one gap Warp still doesn't fill — there is no Warp app for iOS or Android.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You want a free, open-source terminal with AI and your own API key&lt;/strong&gt; → &lt;strong&gt;Wave Terminal&lt;/strong&gt; (Apache-2.0, no credits, bring your own model).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You just want a fast, lean terminal on a Mac&lt;/strong&gt; → &lt;strong&gt;Ghostty&lt;/strong&gt; (MIT, native, no telemetry) or &lt;strong&gt;iTerm2&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You want AI that does the work, not just suggests it&lt;/strong&gt; → an agentic CLI like &lt;strong&gt;Claude Code&lt;/strong&gt; or &lt;strong&gt;aider&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You want SSH with saved hosts and keys&lt;/strong&gt; → a real SSH client, not a terminal emulator. Warp isn't one.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The rest of this page covers each of those in detail, including what's free, what's open source, what runs on a Mac, and what's genuinely "Warp-like."&lt;/p&gt;

&lt;h2&gt;
  
  
  What changed in 2026 (most articles get this wrong)
&lt;/h2&gt;

&lt;p&gt;If you're reading a Warp comparison written before mid-2026, two of its main arguments are out of date. Worth knowing before you switch off Warp for a reason that no longer applies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Warp is open source now.&lt;/strong&gt; On April 28, 2026, Warp open-sourced its terminal client under &lt;strong&gt;AGPL-3.0&lt;/strong&gt; (its UI framework is MIT), and rebranded itself an "agentic development environment." OpenAI signed on as a founding sponsor. So "Warp is closed source" is no longer a reason to leave.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Warp doesn't require an account.&lt;/strong&gt; Warp lifted the login requirement on November 22, 2024. You can download it and use the core terminal without signing up — though some cloud and AI features are still gated behind an account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What's still proprietary:&lt;/strong&gt; the client is open, but Warp's cloud side — &lt;strong&gt;Oz&lt;/strong&gt;, its agent-orchestration platform — remains closed. If your objection is "my sessions and prompts shouldn't touch a vendor's cloud," that objection survives; open-sourcing the client didn't change it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;What still doesn't exist:&lt;/strong&gt; a Warp mobile app. See the mobile section — this remains the single largest hole in Warp's coverage.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note also that AGPL-3.0 is strong copyleft. For most individuals that's irrelevant, but if you plan to fork and redistribute Warp — or offer it over a network — you inherit obligations that MIT-licensed options like Ghostty or Apache-2.0 options like Wave Terminal don't impose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Warp alternatives at a glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;AI&lt;/th&gt;
&lt;th&gt;License&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TermAI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;iOS + Android&lt;/td&gt;
&lt;td&gt;✅ in terminal&lt;/td&gt;
&lt;td&gt;Proprietary&lt;/td&gt;
&lt;td&gt;Free tier; Pro $2.99/mo&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wave Terminal&lt;/td&gt;
&lt;td&gt;Mac/Linux/Win&lt;/td&gt;
&lt;td&gt;✅ bring your own key&lt;/td&gt;
&lt;td&gt;Apache-2.0&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ghostty&lt;/td&gt;
&lt;td&gt;Mac/Linux&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;MIT&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kitty&lt;/td&gt;
&lt;td&gt;Mac/Linux/BSD&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;GPLv3&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WezTerm&lt;/td&gt;
&lt;td&gt;Mac/Linux/Win&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;MIT&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alacritty&lt;/td&gt;
&lt;td&gt;Mac/Linux/Win&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Apache-2.0&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tabby&lt;/td&gt;
&lt;td&gt;Mac/Linux/Win&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;MIT&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;iTerm2&lt;/td&gt;
&lt;td&gt;macOS only&lt;/td&gt;
&lt;td&gt;❌ (plugin)&lt;/td&gt;
&lt;td&gt;GPLv2&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Warp&lt;/td&gt;
&lt;td&gt;Mac/Linux/Win&lt;/td&gt;
&lt;td&gt;✅ built-in&lt;/td&gt;
&lt;td&gt;AGPL-3.0 (client)&lt;/td&gt;
&lt;td&gt;Free tier; paid plans&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The thing people most often want that Warp still doesn't offer is &lt;strong&gt;a mobile version&lt;/strong&gt; — none exists. TermAI covers that. For everything else, the open-source desktop field is unusually strong in 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why people look for a Warp alternative
&lt;/h2&gt;

&lt;p&gt;Filtering out the reasons that are no longer true, here's what actually drives the search in 2026:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No mobile app.&lt;/strong&gt; Warp runs on macOS, Linux, and Windows — there's nothing for iOS or Android. This is the most common reason, and the one with no workaround inside Warp itself.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI usage is metered.&lt;/strong&gt; Warp's AI runs on a credit system, and the free allowance is modest. If you use AI heavily, you either pay or you pick a tool where you bring your own API key and pay the model provider directly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The cloud side is still closed.&lt;/strong&gt; Open-sourcing the client didn't open Oz. Privacy-sensitive users who don't want prompts or session data leaving the machine still want a local-AI or no-AI option.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You want SSH, not a terminal emulator.&lt;/strong&gt; Warp has no saved-host list and no key manager. See below.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You just want a fast terminal.&lt;/strong&gt; Sometimes you don't need AI at all — you want a lean, instant-start terminal. Ghostty and Alacritty start faster and use less memory than a feature-heavy AI terminal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Copyleft.&lt;/strong&gt; AGPL-3.0 is fine to use, but it's a constraint if you intend to fork and ship.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What makes a terminal "Warp-like"?
&lt;/h2&gt;

&lt;p&gt;People searching for a "terminal like Warp" usually aren't asking for a terminal emulator in general — they want a specific set of modern features that Warp popularized. Those are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Blocks.&lt;/strong&gt; Each command and its output grouped into a discrete, selectable, shareable unit instead of one endless scrollback.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A real text editor at the prompt.&lt;/strong&gt; Cursor movement, selection, and multi-line editing that behave like a normal input box rather than readline.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI in the terminal.&lt;/strong&gt; Describe what you want, get a command back — without alt-tabbing to a browser.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A command palette and modern UI.&lt;/strong&gt; Searchable actions, themes, and a GUI that doesn't feel like 1995.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Which alternatives are genuinely Warp-like by that definition:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wave Terminal&lt;/strong&gt; — the closest match on the desktop. Command blocks, built-in AI, modern UI, open source. If "terminal like Warp" is your search, start here.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TermAI&lt;/strong&gt; — the closest match on a phone: AI in the terminal with tap-to-run commands, which no desktop terminal gives you on mobile.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ghostty / Kitty / WezTerm&lt;/strong&gt; — modern and fast, but deliberately &lt;em&gt;not&lt;/em&gt; Warp-like: no blocks, no AI, no GUI chrome. Great terminals, different philosophy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tabby&lt;/strong&gt; — modern GUI and very customizable, but no blocks and no built-in AI.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If blocks specifically are what you're after and you don't want to leave your current terminal, note that they're a UI feature, not a shell feature — no plugin retrofits them onto Alacritty or Ghostty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free Warp alternatives
&lt;/h2&gt;

&lt;p&gt;Warp itself has a free tier, but the AI on it is credit-limited. If "free" is the priority, these cost nothing at all and don't meter your usage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wave Terminal&lt;/strong&gt; — completely free and open source. AI included, but you supply an API key (OpenAI, Claude, or Gemini) or point it at a local model via Ollama or LM Studio. That means no credit limits: you pay the model provider directly, or nothing at all if you run local.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ghostty, Kitty, WezTerm, Alacritty, Tabby&lt;/strong&gt; — all free, all open source, no accounts, no metering. No built-in AI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;iTerm2&lt;/strong&gt; — free on macOS, and the long-standing default for Mac users who want more than Terminal.app.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TermAI&lt;/strong&gt; — has a free tier on mobile; Pro is $2.99/mo.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The catch to watch for:&lt;/strong&gt; "free terminal with AI" almost always means one of two things — free client with metered AI credits (Warp), or free client where you bring and pay for your own model (Wave, and most agentic CLIs). Genuinely free AI usually means running a local model, which is private and unmetered but noticeably weaker than a frontier model.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open-source Warp alternatives
&lt;/h2&gt;

&lt;p&gt;This is the section that changed most in 2026. Warp's terminal client is &lt;em&gt;itself&lt;/em&gt; open source now (AGPL-3.0, April 2026), so if open source was your only objection, you may not need an alternative at all. If you still want one — because you want a permissive license, or because you don't want the proprietary cloud side — these are fully open:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wave Terminal&lt;/strong&gt; (Apache-2.0) — the closest open-source equivalent to what Warp does: modern terminal, command blocks, built-in AI with your own key, and no proprietary cloud in the middle. Version 0.14 added durable SSH sessions that survive network drops and reconnect automatically, plus a graphical editor for remote files. Actively developed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ghostty&lt;/strong&gt; (MIT) — GPU-accelerated, written in Zig, no VC money, no ads, no telemetry. Since December 2025 it's under Hack Club's 501(c)(3) as fiscal sponsor, which is a real signal about its long-term independence.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WezTerm&lt;/strong&gt; (MIT) — configured in Lua, with built-in multiplexing (panes, tabs, remote domains). The most capable option if you want one tool that does everything, everywhere.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Alacritty&lt;/strong&gt; (Apache-2.0) — the minimalist. No tabs, no splits, no multiplexing by design; pair it with tmux.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Kitty&lt;/strong&gt; (GPLv3) — GPU-accelerated and feature-rich, with its own graphics and kitten plugin protocols.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tabby&lt;/strong&gt; (MIT) — the most customizable GUI terminal, with a plugin ecosystem. It's Electron-based, so it uses more memory and has more input latency than the native options above.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;License note if it matters to you:&lt;/strong&gt; Warp's client is AGPL-3.0 (strong copyleft — network use triggers source obligations), Kitty is GPLv3, iTerm2 is GPLv2, while Ghostty, WezTerm, and Tabby are MIT and Wave and Alacritty are Apache-2.0. For personal use any of these is fine; the distinction only bites if you fork and redistribute.&lt;/p&gt;

&lt;h2&gt;
  
  
  Warp alternatives for Mac
&lt;/h2&gt;

&lt;p&gt;Warp started as a Mac-first app, so most people searching for a Mac alternative want the same polish without the AI metering or the cloud. On macOS specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ghostty&lt;/strong&gt; — the strongest default for most Mac users in 2026. Native macOS UI, GPU-accelerated, near-instant startup, sensible defaults so it works well before you configure anything. MIT-licensed and telemetry-free.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;iTerm2&lt;/strong&gt; — the veteran. Split panes, search, triggers, profiles, and a decade of accumulated features. Heavier than Ghostty and the UI shows its age, but nothing beats it on sheer feature depth.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Kitty&lt;/strong&gt; — if you want GPU speed plus scriptability and don't mind configuring a text file.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WezTerm&lt;/strong&gt; — best pick if you also use Linux or Windows and want one identical config across all three.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Alacritty&lt;/strong&gt; — if you already live in tmux and want the fastest, most boring possible window around it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wave Terminal&lt;/strong&gt; — if you want to keep an AI assistant in the terminal on your Mac without the credit system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Terminal.app&lt;/strong&gt; — worth remembering that macOS ships a perfectly usable terminal. If Warp felt like too much, the built-in one may be enough.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that Apple Silicon builds are standard across all of these now — none of them require Rosetta.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Warp an SSH client?
&lt;/h2&gt;

&lt;p&gt;Not really — and this trips up a lot of "warp ssh client" searches. Warp is a terminal &lt;em&gt;emulator&lt;/em&gt;: you can type &lt;code&gt;ssh user@host&lt;/code&gt; inside it just like any terminal, but it has no saved-host list, no key manager, and no tap-to-connect. It's built for working on your local machine, not for managing a set of remote servers. If SSH is the main thing you want — especially from a phone — you want a purpose-built SSH client. On mobile that's &lt;strong&gt;TermAI&lt;/strong&gt; (saved hosts, on-device keys, built-in Tailscale, plus the same in-terminal AI); on the desktop, pair a terminal like Ghostty or Tabby with OpenSSH and an &lt;code&gt;~/.ssh/config&lt;/code&gt;, or use a dedicated &lt;a href="https://termai.sh/blog/best-ssh-client/" rel="noopener noreferrer"&gt;SSH client&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One genuinely useful middle ground: &lt;strong&gt;Wave Terminal&lt;/strong&gt;'s durable SSH sessions reconnect automatically after a network drop, which is the closest a desktop terminal gets to SSH-client behavior without being one.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you want AI in a terminal on your phone → TermAI
&lt;/h2&gt;

&lt;p&gt;This is the gap Warp doesn't fill at all. &lt;strong&gt;TermAI&lt;/strong&gt; is a mobile SSH client with an AI assistant built into the terminal: describe a task and it suggests the command, grounded in the live server (it reads the OS, the current disk/memory/CPU, and recent output), with a confirmation before anything destructive runs. It also has built-in Tailscale, and it's on both iOS and Android. If "Warp alternative" really means "I want the Warp experience on my phone," this is it.&lt;/p&gt;

&lt;p&gt;The workflow that replaces desktop Warp on the go: SSH from TermAI into the same Mac or Linux box where you'd normally open Warp, and let the AI help you there — from your phone, over the network. With built-in Tailscale you can reach that machine even when it's not on the public internet. New to it? The &lt;a href="https://termai.sh/blog/getting-started/" rel="noopener noreferrer"&gt;visual getting-started guide&lt;/a&gt; walks through the first connection.&lt;/p&gt;

&lt;h3&gt;
  
  
  What about Warp on the web?
&lt;/h3&gt;

&lt;p&gt;To be fair to Warp, there is a partial mobile story, and it's worth understanding before you decide. Warp's &lt;code&gt;/remote control&lt;/code&gt; feature publishes a running agent session to Warp's cloud, and Warp on the web renders in mobile browsers (iOS Safari 15+, Android Chrome 58+, Samsung Internet 7.2+) with touch gestures for scrolling, selection, and context menus. So you can monitor and steer an agent from your phone.&lt;/p&gt;

&lt;p&gt;What that is &lt;em&gt;not&lt;/em&gt;: a mobile terminal. It requires a desktop Warp session already running somewhere, it routes through Warp's proprietary cloud, and it gives you no saved hosts, no on-device SSH keys, and no way to open a fresh connection to an arbitrary server from your phone. If you want to start a session &lt;em&gt;from&lt;/em&gt; the phone — to a VPS, a home server, a Raspberry Pi — you need an actual mobile SSH client.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you want a free/open-source desktop terminal
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Wave Terminal&lt;/strong&gt; — the closest open-source Warp equivalent: a modern terminal with built-in AI, free, Apache-2.0, no metering (you bring your own API key, or run Ollama/LM Studio locally). If you like Warp's idea but not the credits, start here.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ghostty&lt;/strong&gt; — fast, native, MIT-licensed, works well out of the box. The best "just give me a great terminal" pick in 2026. See &lt;a href="https://termai.sh/blog/termius-vs-ghostty/" rel="noopener noreferrer"&gt;Termius vs Ghostty&lt;/a&gt; for how a terminal emulator compares to an SSH client.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WezTerm&lt;/strong&gt; — cross-platform, Lua-configured, with built-in multiplexing so you may not need tmux.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Alacritty&lt;/strong&gt; — fast and minimal by design: no tabs, no splits, pair with tmux.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Kitty&lt;/strong&gt; — GPU-accelerated with a rich feature set and its own plugin ("kitten") system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tabby&lt;/strong&gt; — free, open-source, highly customizable, cross-platform. No built-in AI, and being Electron-based it's heavier than the native options. See &lt;a href="https://termai.sh/blog/termius-vs-tabby/" rel="noopener noreferrer"&gt;Termius vs Tabby&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;iTerm2&lt;/strong&gt; (macOS) — the long-standing free Mac terminal: split panes, search, triggers, and profiles, rock-solid and no AI.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Warp alternatives with AI
&lt;/h2&gt;

&lt;p&gt;If the AI is the specific thing you want to keep, there are three different shapes it comes in — and picking the right shape matters more than picking the right brand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI inside the terminal UI&lt;/strong&gt; (Warp, &lt;strong&gt;Wave Terminal&lt;/strong&gt;, &lt;strong&gt;TermAI&lt;/strong&gt;) — you describe a task, it suggests a command, you review and run. Best when you want to stay in control and learn the commands. Wave is the desktop open-source version of this; TermAI is the mobile version.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agentic CLI&lt;/strong&gt; (&lt;strong&gt;Claude Code&lt;/strong&gt;, &lt;strong&gt;aider&lt;/strong&gt;) — instead of suggesting commands, these &lt;em&gt;run&lt;/em&gt; multi-step tasks in your project: reading files, editing code, running tests, iterating. Better when you want the AI to do the work rather than advise. They're just programs, so they run inside any terminal — Ghostty, Alacritty, iTerm2, whatever you like. This is the combination a lot of people land on: a fast, boring terminal plus a strong agent in it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Local AI&lt;/strong&gt; (&lt;strong&gt;Ollama&lt;/strong&gt; or LM Studio, plus a shell helper or Wave's local-model support) — everything stays on your machine, offline and private, with no credits and no account. The trade-off is a weaker model than a frontier one.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A useful thing to realize: because agentic CLIs are ordinary command-line programs, "an AI terminal" and "a terminal plus AI" are nearly interchangeable on the desktop. The place that &lt;em&gt;isn't&lt;/em&gt; true is mobile, where you can't just install a CLI — which is why an app with AI built in matters more there. For the full landscape, see &lt;a href="https://termai.sh/blog/ai-terminal/" rel="noopener noreferrer"&gt;the best AI terminal tools in 2026&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to pick
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI terminal on a phone&lt;/strong&gt; → TermAI (Warp has no mobile app)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Open-source terminal with AI, no metering&lt;/strong&gt; → Wave Terminal&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best all-round Mac terminal&lt;/strong&gt; → Ghostty (or iTerm2 for maximum features)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;One config across Mac, Linux, and Windows&lt;/strong&gt; → WezTerm&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fast &amp;amp; minimal, you already use tmux&lt;/strong&gt; → Alacritty&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Maximum customization / plugins&lt;/strong&gt; → Tabby or Kitty&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI that runs tasks&lt;/strong&gt; → Claude Code / aider, inside any terminal you like&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Private / offline AI&lt;/strong&gt; → Ollama or LM Studio, with Wave or a shell helper&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Saved hosts and SSH keys&lt;/strong&gt; → a real SSH client, not a terminal emulator&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is the best Warp terminal alternative?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
It depends on what you're replacing. For the same modern-terminal-with-AI experience, free and open source, it's Wave Terminal. For a fast, lean Mac terminal, it's Ghostty. For an AI terminal on a phone — the one thing Warp doesn't do at all — it's TermAI. For AI that does the work rather than suggesting it, an agentic CLI like Claude Code inside any terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there an open-source Warp alternative?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes, several — though note that Warp itself became open source in April 2026, with its terminal client under AGPL-3.0 and its UI framework under MIT. If you still want an alternative, Wave Terminal (Apache-2.0) is the closest in features, and Ghostty (MIT), WezTerm (MIT), Alacritty (Apache-2.0), Kitty (GPLv3), and Tabby (MIT) are fully open terminals without built-in AI. The one part of Warp that remains proprietary is Oz, its cloud agent-orchestration platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Warp terminal open source?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The client is, as of April 28, 2026, under AGPL-3.0 (with the UI framework under MIT). The cloud side — Oz — is not. So "Warp is open source" is true of the app on your machine and not true of the service behind it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's a free alternative to Warp?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Wave Terminal is free and open source with AI included (you supply an API key, or run a local model via Ollama). Ghostty, Kitty, WezTerm, Alacritty, and Tabby are free with no AI. iTerm2 is free on macOS. TermAI has a free tier on mobile. Warp also has its own free tier, but its AI is limited by a monthly credit allowance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a terminal like Warp?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Wave Terminal is the closest on the desktop: it has command blocks, a modern UI, and built-in AI, and it's open source. On a phone, TermAI is the closest equivalent. Ghostty, Kitty, and WezTerm are excellent modern terminals but deliberately skip blocks and AI, so they feel quite different from Warp.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a Warp alternative with AI?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes. Wave Terminal has AI built in and works with OpenAI, Claude, Gemini, or local models through Ollama and LM Studio. TermAI has AI built into a mobile terminal. And any agentic CLI — Claude Code, aider — brings AI into whatever terminal you already use, which is how many people get AI without switching terminals at all.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the best Warp alternative for Mac?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Ghostty for most people: native macOS feel, GPU-accelerated, fast startup, good defaults, MIT-licensed and telemetry-free. iTerm2 if you want maximum features and don't mind a heavier, older-looking app. Wave Terminal if you want to keep AI in the terminal. And macOS's built-in Terminal.app is genuinely fine if Warp felt like overkill.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Warp have a mobile app?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
No. Warp is desktop-only (macOS, Linux, Windows) — there is no iOS or Android app. You can view and steer a running desktop agent session from a mobile browser via Warp's remote-control feature and Warp on the web, but you can't start a terminal session from your phone that way. For that, use a mobile SSH client such as TermAI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I get Warp on my phone?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Not as an app. The closest is mirroring a desktop session into a mobile browser, which requires a desktop Warp already running and routes through Warp's cloud. To actually open a shell from your phone to a server, use TermAI and SSH into the machine where you'd otherwise run Warp.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Warp require an account?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Not anymore. Warp removed the login requirement on November 22, 2024 — you can install it and use the core terminal without signing up, choosing "Skip for now" at the prompt. Some AI and cloud features still require an account. If you want a terminal with no account prompt at all, Ghostty, Alacritty, WezTerm, Kitty, and Tabby never ask.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Warp free?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
There's a free tier that includes the terminal plus a limited monthly allowance of AI credits, with paid plans above it for heavier AI use. Pricing and credit allowances have been revised more than once — check &lt;a href="https://www.warp.dev/pricing" rel="noopener noreferrer"&gt;warp.dev/pricing&lt;/a&gt; for current numbers before deciding. If you want to avoid metering entirely, use a tool where you bring your own API key, such as Wave Terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Warp an SSH client?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
No. Warp is a terminal emulator — you can run the &lt;code&gt;ssh&lt;/code&gt; command inside it, but it has no saved-host list or key manager. For a real SSH client, use a dedicated app: TermAI on mobile, or a desktop client paired with OpenSSH.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the difference between Warp and a normal terminal?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Warp adds blocks (each command and its output as a discrete unit), a modern text-editor-style input, a command palette, and built-in AI. A classic terminal emulator like Alacritty or Ghostty gives you one continuous scrollback and a readline prompt, and leaves everything else to your shell and tmux. Neither is better in the abstract — Warp trades speed and simplicity for features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is Warp slow / heavy compared to other terminals?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Warp does much more per frame than a minimal terminal: block tracking, a rich input editor, and AI integration all cost memory and startup time. Native GPU terminals like Ghostty, Kitty, and Alacritty do far less by design, which is exactly why they start instantly. If raw responsiveness is what you're after, that's the trade you're making.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Facts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Warp in 2026&lt;/strong&gt;: client open source (AGPL-3.0, April 2026), no login required (since Nov 2024), cloud/Oz still proprietary&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Warp's remaining gap&lt;/strong&gt;: no iOS or Android app — mobile browser mirroring only&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;On a phone&lt;/strong&gt;: TermAI (AI terminal over SSH, saved hosts, on-device keys)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Closest open-source equal&lt;/strong&gt;: Wave Terminal (Apache-2.0, bring your own AI key)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best on a Mac&lt;/strong&gt;: Ghostty (MIT) · &lt;strong&gt;Most features&lt;/strong&gt;: iTerm2 · &lt;strong&gt;Minimal&lt;/strong&gt;: Alacritty&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI that acts&lt;/strong&gt;: Claude Code / aider, in any terminal · &lt;strong&gt;Local/private&lt;/strong&gt;: Ollama, LM Studio&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>terminal</category>
      <category>ai</category>
      <category>cli</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The best Android SSH client in 2026, honestly compared</title>
      <dc:creator>chen zong</dc:creator>
      <pubDate>Wed, 19 Aug 2026 01:19:37 +0000</pubDate>
      <link>https://dev.to/chen_zong_43c81f1a65b1a54/the-best-android-ssh-client-in-2026-honestly-compared-4p5b</link>
      <guid>https://dev.to/chen_zong_43c81f1a65b1a54/the-best-android-ssh-client-in-2026-honestly-compared-4p5b</guid>
      <description>&lt;h2&gt;
  
  
  The short answer
&lt;/h2&gt;

&lt;p&gt;The best SSH client for Android in 2026 is &lt;strong&gt;TermAI&lt;/strong&gt; for most people — it's phone-first, has an AI assistant that suggests commands you confirm before running, and includes Tailscale so you can reach servers behind a home router without a second VPN app. &lt;strong&gt;Termius&lt;/strong&gt; is the pick if you need the same host list on a desktop. &lt;strong&gt;ConnectBot&lt;/strong&gt; is the pick if you want free, open source, and no account. &lt;strong&gt;Termux&lt;/strong&gt; isn't an SSH client at all — it's a Linux environment on the phone. And &lt;strong&gt;JuiceSSH&lt;/strong&gt;, the app that used to win this list, is no longer an option: it was &lt;a href="https://termai.sh/blog/juicessh-removed-play-store/" rel="noopener noreferrer"&gt;unpublished from Google Play in December 2025&lt;/a&gt; and can't be installed by new users.&lt;/p&gt;

&lt;p&gt;Pick in one line:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best Android SSH client overall&lt;/strong&gt; — TermAI (free tier; AI + built-in Tailscale)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best free SSH app for Android&lt;/strong&gt; — ConnectBot (open source, no account) or TermAI's free tier if you want SFTP and AI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best for desktop + phone sync&lt;/strong&gt; — Termius (sync is the paid feature)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best Android terminal (not an SSH client)&lt;/strong&gt; — Termux, from F-Droid or GitHub&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Came from Windows looking for PuTTY&lt;/strong&gt; — there is no Android PuTTY; use TermAI or ConnectBot&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;"Android SSH client", "SSH client for Android", "Android SSH app", and "Android SSH terminal" are the same search with different wording — this page covers them all. Disclosure: TermAI is our own app; prices and status for every app below were re-checked against store listings and release history for 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  Android SSH apps at a glance (2026)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;App&lt;/th&gt;
&lt;th&gt;Price (2026)&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Stands out for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TermAI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Free tier; Pro $2.99/mo; Team $7.99/seat/mo&lt;/td&gt;
&lt;td&gt;SSH + SFTP client&lt;/td&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;td&gt;AI assistant, built-in Tailscale, same app on iOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Termius&lt;/td&gt;
&lt;td&gt;Free Starter; Pro $10/user/mo billed annually&lt;/td&gt;
&lt;td&gt;SSH + SFTP client&lt;/td&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;td&gt;Cross-platform sync with desktop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ConnectBot&lt;/td&gt;
&lt;td&gt;Free, open source&lt;/td&gt;
&lt;td&gt;SSH client&lt;/td&gt;
&lt;td&gt;Active (1.10.x shipped in 2026)&lt;/td&gt;
&lt;td&gt;No account, no cloud, minimal surface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Termux&lt;/td&gt;
&lt;td&gt;Free, open source&lt;/td&gt;
&lt;td&gt;Local Linux environment&lt;/td&gt;
&lt;td&gt;Active (F-Droid/GitHub; Play build deprecated)&lt;/td&gt;
&lt;td&gt;Running Linux tools on the phone itself&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JuiceSSH&lt;/td&gt;
&lt;td&gt;n/a — delisted&lt;/td&gt;
&lt;td&gt;SSH client&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Removed from Google Play, Dec 2025&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Nothing anymore — don't start here&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Termius Pro's $10/user/month is the annual-billing rate (~$120/year); month-to-month is meaningfully more. See &lt;a href="https://termai.sh/blog/termius-free-vs-paid/" rel="noopener noreferrer"&gt;Termius free vs paid&lt;/a&gt; for the full tier breakdown.&lt;/p&gt;

&lt;h2&gt;
  
  
  "Android SSH" means three different things — pick the right one
&lt;/h2&gt;

&lt;p&gt;Most of the confusion in this category comes from three unrelated tools sharing one search term. Before comparing apps, work out which one you actually want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;An SSH client&lt;/strong&gt; — connects &lt;em&gt;out&lt;/em&gt; from your phone to a remote server (a VPS, a Raspberry Pi, a NAS). This is what 90% of people mean, and it's what TermAI, Termius, ConnectBot, and JuiceSSH were.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A terminal emulator / local shell&lt;/strong&gt; — gives you a Linux shell running &lt;em&gt;on the phone&lt;/em&gt;, with no server involved. That's Termux. You can type &lt;code&gt;ssh&lt;/code&gt; inside it, but you get no host list, no key manager, no tap-to-connect.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;An SSH server&lt;/strong&gt; — lets another machine connect &lt;em&gt;into&lt;/em&gt; your Android device. That's a separate setup, covered further down.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to restart a service on a server from your phone, you want an SSH client. Everything in the next five sections is judged on that job.&lt;/p&gt;

&lt;h2&gt;
  
  
  TermAI — best overall in 2026
&lt;/h2&gt;

&lt;p&gt;TermAI is an AI-native SSH client: describe what you want in plain English and it writes the command onto your input line, explains errors, and stays grounded in your session — you read and confirm before anything runs, and destructive commands take an extra confirmation. It also has built-in Tailscale (reach private servers with no separate VPN app and no port forwarding) and the same app on iOS, which matters if you carry both.&lt;/p&gt;

&lt;p&gt;The free tier is unlimited SSH and SFTP plus 5 AI requests a day; Pro is $2.99/month and Team is $7.99/seat/month. The design choice worth knowing about is that the assistant is &lt;strong&gt;suggest-and-confirm by default&lt;/strong&gt;, not an agent that executes on your behalf — on a 6-inch screen against a production box, that's the right default, and we argued it out in &lt;a href="https://termai.sh/blog/trusting-ai-shell-suggestions/" rel="noopener noreferrer"&gt;letting AI run shell commands on mobile, safely&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; anyone who wants command help, SFTP, and a modern, actively-developed Android app.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Trade-off:&lt;/strong&gt; mobile-only — there's no desktop client, so if you want one host list shared with a laptop, that's Termius's job.&lt;/p&gt;

&lt;h2&gt;
  
  
  Termius — best cross-platform sync
&lt;/h2&gt;

&lt;p&gt;Termius is polished and syncs hosts, keys, and snippets across Android, iOS, and desktop. If you bounce between a phone and a laptop, that's the appeal — and it's the one thing no phone-first client can match.&lt;/p&gt;

&lt;p&gt;The 2026 pricing picture is better than its reputation suggests: the free &lt;strong&gt;Starter&lt;/strong&gt; plan includes SSH, SFTP, port forwarding, AI autocomplete, and a local vault, and Termius explicitly permits commercial use on it. What Starter withholds is &lt;strong&gt;synchronization&lt;/strong&gt; — on the free plan your hosts and keys live on one device only. Paid tiers are Pro at $10/user/month billed annually (~$120/year), Team at $20, and Business at $30, with monthly billing priced higher. So on Android alone, free Termius is a capable client; you're paying for the laptop half.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; people who want one client and one host list across phone and desktop.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Trade-off:&lt;/strong&gt; sync requires an account and a subscription; the mobile app carries the weight of a desktop-first product. Weighing it against TermAI specifically? See &lt;a href="https://termai.sh/compare" rel="noopener noreferrer"&gt;TermAI vs Termius&lt;/a&gt; and &lt;a href="https://termai.sh/blog/termius-free-vs-paid/" rel="noopener noreferrer"&gt;Termius free vs paid&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  ConnectBot — best free &amp;amp; open source Android SSH client
&lt;/h2&gt;

&lt;p&gt;ConnectBot is the original Android SSH client and still the answer when the requirement is "free, open source, no account, no cloud." It's plain — a dated UI, no SFTP, no sync, no AI — but it's genuinely free with no tiers, it asks nothing of you, and it's still being released: the 1.10.x line shipped through 2026, which is more than most apps in this category can say.&lt;/p&gt;

&lt;p&gt;The honest limitation is file transfer. ConnectBot does SSH sessions and tunnels, not SFTP, so "edit a config file from my phone" means &lt;code&gt;nano&lt;/code&gt; over the session rather than pulling the file down. If that's a dealbreaker, TermAI's free tier includes SFTP and Termius Starter does too. Deciding between it and Termius? See &lt;a href="https://termai.sh/blog/termius-vs-connectbot/" rel="noopener noreferrer"&gt;Termius vs ConnectBot&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; minimalists, privacy-first users, and anyone who wants zero accounts.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Trade-off:&lt;/strong&gt; no SFTP, no sync, no modern conveniences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Termux — a Linux terminal, not an SSH client
&lt;/h2&gt;

&lt;p&gt;Termux comes up in every "best SSH app for Android" search, so it's worth being precise: it's a &lt;strong&gt;local Linux environment&lt;/strong&gt; on your phone, not an SSH connection manager. You &lt;em&gt;can&lt;/em&gt; &lt;code&gt;pkg install openssh&lt;/code&gt; and run &lt;code&gt;ssh user@host&lt;/code&gt; inside it, but there's no saved-host list, no key manager, no tap-to-connect, and no touch-friendly key row for the things a phone keyboard lacks. It's a package manager and a shell, and that's genuinely excellent when that's what you want — &lt;code&gt;rsync&lt;/code&gt;, &lt;code&gt;tmux&lt;/code&gt;, &lt;code&gt;git&lt;/code&gt;, Python, all on-device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install it from the right place.&lt;/strong&gt; This trips people up constantly: the official release channels are &lt;strong&gt;F-Droid and GitHub&lt;/strong&gt;, and the Google Play build is deprecated — it exists, but with missing functionality compared to the F-Droid build. Because the two are signed with different keys, you can't update across them; switching means uninstalling Termux and all its plugin apps first. If you installed Termux from Play years ago and it feels broken, that's usually why.&lt;/p&gt;

&lt;p&gt;More in &lt;a href="https://termai.sh/blog/termius-vs-termux/" rel="noopener noreferrer"&gt;Termius vs Termux&lt;/a&gt;, &lt;a href="https://termai.sh/blog/connectbot-vs-termux/" rel="noopener noreferrer"&gt;ConnectBot vs Termux&lt;/a&gt;, and &lt;a href="https://termai.sh/blog/run-linux-on-android/" rel="noopener noreferrer"&gt;running Linux on Android&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  JuiceSSH — removed from the Play Store, don't start here
&lt;/h2&gt;

&lt;p&gt;This is the biggest change to the Android SSH landscape since we first wrote this page, and most comparison articles still haven't caught up. &lt;strong&gt;JuiceSSH was unpublished from Google Play in December 2025&lt;/strong&gt; (11 December, per AppBrain's tracking — neither Sonelli nor Google issued a statement). It wasn't removed for anything it did; it was removed for what it stopped doing. Its last release was &lt;strong&gt;v3.2.2 on 4 February 2021&lt;/strong&gt;, and Google Play requires apps to keep targeting a recent Android API level to stay listed. Four years of silence made that impossible.&lt;/p&gt;

&lt;p&gt;Two consequences matter if you're reading this list to choose an app:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;You can't install it.&lt;/strong&gt; The listing is gone, so it won't appear in Play search. Users who had it before removal may still find it under "My apps," but that isn't something to build on.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Pro licence check broke.&lt;/strong&gt; Users have reported since December 2025 that Pro purchases made before that date stopped being recognised, with support unresponsive. The likeliest explanation discussed publicly is infrastructure rot rather than anything deliberate — the effect on you is the same.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sideloading the APK from a mirror is a bad trade specifically because of what this app is: a 2021 binary with 2021 crypto, from an unverified source, holding the private keys to your servers. If you're still on it, the migration order matters — add your new key to &lt;code&gt;authorized_keys&lt;/code&gt; &lt;em&gt;before&lt;/em&gt; revoking the old one, or you'll lock yourself out of a box you can only reach from your phone. Full walkthrough in &lt;a href="https://termai.sh/blog/juicessh-removed-play-store/" rel="noopener noreferrer"&gt;JuiceSSH was removed from the Play Store&lt;/a&gt;, with the alternatives compared in &lt;a href="https://termai.sh/blog/juicessh-alternatives/" rel="noopener noreferrer"&gt;Is JuiceSSH dead?&lt;/a&gt; and &lt;a href="https://termai.sh/blog/termius-vs-juicessh/" rel="noopener noreferrer"&gt;Termius vs JuiceSSH&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; nobody, in 2026.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Trade-off:&lt;/strong&gt; not installable, not maintained, not patched.&lt;/p&gt;

&lt;h2&gt;
  
  
  What about PuTTY for Android?
&lt;/h2&gt;

&lt;p&gt;A lot of people arrive from Windows searching for "PuTTY for Android" — but &lt;strong&gt;there is no official PuTTY for Android&lt;/strong&gt;. PuTTY is a Windows desktop program; the third-party "PuTTY" apps in the Play Store are unrelated repackages by other developers, and an SSH client is a bad place to trust an unknown publisher. On Android you want a purpose-built mobile client instead: TermAI, ConnectBot, or Termius all do what you came for, with a proper host list and touch-friendly keys.&lt;/p&gt;

&lt;p&gt;The habits transfer more than you'd expect — saved sessions become saved hosts, and your &lt;code&gt;.ppk&lt;/code&gt; key can be converted to OpenSSH format before importing. We go deeper in &lt;a href="https://termai.sh/blog/putty-for-android/" rel="noopener noreferrer"&gt;PuTTY for Android &amp;amp; iPhone&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apps you'll see recommended that aren't Android options
&lt;/h2&gt;

&lt;p&gt;Roundups mix platforms constantly. To save you a Play Store search that goes nowhere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Blink Shell&lt;/strong&gt; — iOS and iPadOS only. No Android build. (&lt;a href="https://termai.sh/blog/blink-shell-vs-termius/" rel="noopener noreferrer"&gt;Blink vs Termius&lt;/a&gt;.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Prompt&lt;/strong&gt; — iOS and iPadOS only, from Panic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PuTTY, MobaXterm, Tabby, Warp&lt;/strong&gt; — desktop programs. None has an Android client.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;"Server Auditor"&lt;/strong&gt; — this is just Termius's old name; you'll still see it in older articles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;"Terminus"&lt;/strong&gt; — a common misspelling of Termius, and also the former name of the Tabby desktop terminal. Different things.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to SSH from Android, step by step
&lt;/h2&gt;

&lt;p&gt;Whichever client you pick, the first connection is the same five steps and takes about five minutes. You need three things: the server's address, a username, and either a password or an SSH key.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Install a client&lt;/strong&gt; and open it. With TermAI you don't need an account to make your first connection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add the connection&lt;/strong&gt; — a label, the host (an IP like &lt;code&gt;192.0.2.10&lt;/code&gt; or a name like &lt;code&gt;pi.local&lt;/code&gt;), the port (22 unless you changed it), and your username (&lt;code&gt;root&lt;/code&gt;, &lt;code&gt;ubuntu&lt;/code&gt;, &lt;code&gt;pi&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Choose password or key.&lt;/strong&gt; Password is quickest to test with; a key is the right long-term answer. Generate one in the app and add its public half to the server's &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt;, or import an existing private key — it stays in the phone's secure keystore.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect and trust the host key.&lt;/strong&gt; The first time, you'll be asked to accept the server's fingerprint. That's normal — it's how SSH pins the server's identity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learn the shortcut key row.&lt;/strong&gt; Esc, Tab, Ctrl, and arrows are what make &lt;code&gt;Ctrl+C&lt;/code&gt;, tab-completion, and &lt;code&gt;vim&lt;/code&gt; usable on a touchscreen.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The full walkthrough with screenshots — including SSH from Android to a &lt;a href="https://termai.sh/blog/ssh-from-android-to-raspberry-pi/" rel="noopener noreferrer"&gt;Raspberry Pi&lt;/a&gt;, to Windows via OpenSSH Server, and to a Mac — is in &lt;a href="https://termai.sh/blog/ssh-from-android/" rel="noopener noreferrer"&gt;how to SSH from Android&lt;/a&gt;. If the connection won't go through, &lt;a href="https://termai.sh/blog/ssh-connection-refused/" rel="noopener noreferrer"&gt;connection refused&lt;/a&gt; and the &lt;a href="https://termai.sh/blog/ssh-troubleshooting/" rel="noopener noreferrer"&gt;troubleshooting guide&lt;/a&gt; cover the usual causes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes an Android SSH terminal actually usable
&lt;/h2&gt;

&lt;p&gt;Feature lists don't tell you which app you'll still be using in a month. These are the things that decide it on a phone:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;A dedicated key row.&lt;/strong&gt; Esc, Tab, Ctrl, Alt, and arrows aren't on a stock Android keyboard. Without a persistent row, &lt;code&gt;Ctrl+C&lt;/code&gt; and &lt;code&gt;vim&lt;/code&gt; are effectively unavailable — this is the single biggest usability gap between clients.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Correct terminal emulation.&lt;/strong&gt; You want real xterm-256color behaviour so &lt;code&gt;htop&lt;/code&gt;, &lt;code&gt;nano&lt;/code&gt;, &lt;code&gt;tmux&lt;/code&gt;, and colour output render properly rather than smearing escape codes across the screen.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Selection and copy/paste that works with a finger.&lt;/strong&gt; Long-press to select a block of error output, then copy it — or, in TermAI, hand that exact text to the assistant with &lt;strong&gt;Ask AI&lt;/strong&gt; instead of retyping a stack trace into a search box.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Font size and pinch-to-zoom.&lt;/strong&gt; 80 columns on a 6-inch screen is a real constraint; being able to zoom out for &lt;code&gt;htop&lt;/code&gt; and back in to type matters more than it sounds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hardware keyboard support.&lt;/strong&gt; If you ever pair a Bluetooth keyboard or dock the phone, the client should pass through Ctrl and Alt properly.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Android-specific things that actually matter
&lt;/h2&gt;

&lt;p&gt;The "best" app on Android isn't only about features — it's about the things that break on a phone specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Surviving backgrounding.&lt;/strong&gt; This is the number-one Android SSH complaint, and it's a platform behaviour, not a bug in your app: Doze and App Standby defer background network activity, and Android 16 added a harsher &lt;em&gt;Restricted&lt;/em&gt; bucket for apps you haven't opened in days. A good client keeps the session alive or reconnects cleanly when you switch away and back — TermAI auto-reconnects with retries rather than dropping you at a dead prompt. If sessions still die on your device, set the app's &lt;strong&gt;Battery usage → Unrestricted&lt;/strong&gt; in Android's app settings; aggressive OEM battery managers (Xiaomi, Samsung, Huawei, OnePlus) are usually the real culprit.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Key import, not just key generation.&lt;/strong&gt; You should be able to import or paste an existing &lt;code&gt;ed25519&lt;/code&gt; or RSA private key, not only create a new one. See &lt;a href="https://termai.sh/blog/ed25519-vs-rsa/" rel="noopener noreferrer"&gt;Ed25519 vs RSA&lt;/a&gt; if you're choosing a key type, and &lt;a href="https://termai.sh/blog/ssh-copy-id/" rel="noopener noreferrer"&gt;copying a key to a server&lt;/a&gt; for the other half.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Where the private key is stored.&lt;/strong&gt; Prefer a client that keeps keys in the Android keystore behind biometric unlock over one that keeps a plaintext file. Your phone is the device most likely to be lost.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reaching private servers.&lt;/strong&gt; Home-lab and work boxes usually aren't on the public internet, and port-forwarding 22 to the world is the wrong fix. TermAI has built-in Tailscale so you reach them directly with no second VPN app running in the background — or see &lt;a href="https://termai.sh/blog/access-home-server-from-anywhere/" rel="noopener noreferrer"&gt;accessing a home server from anywhere&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Agent forwarding &amp;amp; jump hosts.&lt;/strong&gt; If you hop through a bastion to an internal server, check your pick supports the multi-hop flow (ProxyJump / agent forwarding) you need. If reaching internal boxes is the whole reason for the bastion, a mesh VPN removes the jump host in many setups.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Mobile networks drop.&lt;/strong&gt; Switching Wi-Fi to LTE kills a plain TCP session. Auto-reconnect covers most of it; if you live on flaky connections, &lt;a href="https://termai.sh/blog/mosh-vs-ssh/" rel="noopener noreferrer"&gt;Mosh vs SSH&lt;/a&gt; explains the roaming-session alternative, and &lt;a href="https://termai.sh/blog/keep-process-running-after-ssh/" rel="noopener noreferrer"&gt;keeping a process running after disconnect&lt;/a&gt; is the fix for long jobs.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Running an SSH server &lt;em&gt;on&lt;/em&gt; Android (connecting into your phone)
&lt;/h2&gt;

&lt;p&gt;The reverse direction — SSH from a laptop &lt;em&gt;into&lt;/em&gt; the phone — is a different job, and no SSH client does it. The standard route is Termux:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;pkg update &amp;amp;&amp;amp; pkg install openssh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sshd&lt;/code&gt; to start the server. It listens on &lt;strong&gt;port 8022&lt;/strong&gt;, not 22, because Termux runs as a normal unprivileged user and can't claim a low port.&lt;/li&gt;
&lt;li&gt;Get your username with &lt;code&gt;whoami&lt;/code&gt;, then connect from the other machine with &lt;code&gt;ssh -p 8022 user@phone-ip&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Key auth is the intended path — put your laptop's public key in &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt; on the phone. (&lt;code&gt;passwd&lt;/code&gt; sets a password, but keys are the better answer for a device on a shared network.)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;termux-wake-lock&lt;/code&gt; keeps it running when the screen sleeps.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is genuinely useful for pulling files off the phone or scripting against it — and it's a good reminder that "Android SSH" splits into two completely different setups depending on which way the connection goes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best mobile SSH client (Android and iPhone)
&lt;/h2&gt;

&lt;p&gt;If you carry both, the shortlist collapses fast, because most of this category is single-platform. &lt;strong&gt;TermAI&lt;/strong&gt; and &lt;strong&gt;Termius&lt;/strong&gt; are the two that ship the same client on Android and iOS — TermAI as a phone-first app with AI and Tailscale on a $2.99/month Pro tier, Termius as the mobile end of a desktop product with sync as the paid feature. &lt;strong&gt;Blink Shell&lt;/strong&gt; and &lt;strong&gt;Prompt&lt;/strong&gt; are iOS-only; &lt;strong&gt;ConnectBot&lt;/strong&gt; and &lt;strong&gt;Termux&lt;/strong&gt; are Android-only. For the iPhone-side view see &lt;a href="https://termai.sh/blog/best-ssh-client-iphone/" rel="noopener noreferrer"&gt;the best SSH client for iPhone&lt;/a&gt; and the &lt;a href="https://termai.sh/blog/best-ssh-client-ipad/" rel="noopener noreferrer"&gt;iPad roundup&lt;/a&gt;; for the cross-platform-including-desktop view, &lt;a href="https://termai.sh/blog/best-ssh-client/" rel="noopener noreferrer"&gt;the best SSH client in 2026&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to pick
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Want AI help + SFTP + a modern app&lt;/strong&gt; → TermAI&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Need the same host list on a desktop&lt;/strong&gt; → Termius&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Free, open source, no account&lt;/strong&gt; → ConnectBot&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Free but you also want SFTP&lt;/strong&gt; → TermAI free tier or Termius Starter&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run Linux on the phone itself&lt;/strong&gt; → Termux, from F-Droid or GitHub (not an SSH client)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SSH &lt;em&gt;into&lt;/em&gt; your phone&lt;/strong&gt; → Termux's &lt;code&gt;sshd&lt;/code&gt; on port 8022&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reaching a home server or a box behind NAT&lt;/strong&gt; → a client with Tailscale built in&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Came looking for PuTTY&lt;/strong&gt; → there's no Android PuTTY; use TermAI or ConnectBot&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Still on JuiceSSH&lt;/strong&gt; → migrate now, rotating keys as you go&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What is the best SSH client for Android?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
TermAI for most people in 2026 — it's built for the phone, has an AI assistant that suggests commands you confirm before running, includes SFTP on the free tier, and has Tailscale built in for servers behind a router. Choose Termius instead if you need desktop sync, or ConnectBot if you want free and open source with no account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's the best free SSH app for Android?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
ConnectBot is fully free and open source with no tiers at all. TermAI's free tier adds SFTP and 5 AI requests a day, and Termius's free Starter plan includes SSH, SFTP, and port forwarding — with sync as the paid feature. All three are legitimate free options; the difference is what you get beyond a plain terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is JuiceSSH still available?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
No. JuiceSSH was unpublished from Google Play in December 2025 after its last release in February 2021, and new users can't install it. Pro licence validation has also broken for many existing users. Migrate to TermAI, Termius, or ConnectBot — and rotate your keys while you do.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a PuTTY for Android?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
No official one — PuTTY is a Windows program, and the "PuTTY" apps on Play are unrelated third-party repackages. Use a native Android SSH client like TermAI or ConnectBot instead; you can convert a &lt;code&gt;.ppk&lt;/code&gt; key to OpenSSH format and import it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which Android SSH app has AI?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
TermAI is AI-native and includes the assistant on its free tier (5 requests/day). Termius includes AI autocomplete/command generation in its free Starter plan, with a separate conversational agent on a beta track. The design difference matters: TermAI suggests and waits for your confirmation rather than executing on your behalf.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I SSH from Android?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Install an SSH client, add a connection with the host, port 22, and your username, pick password or key authentication, then accept the server's host key on first connect. It takes about five minutes — the &lt;a href="https://termai.sh/blog/ssh-from-android/" rel="noopener noreferrer"&gt;step-by-step guide&lt;/a&gt; has screenshots.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Termux an SSH client?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Not really. Termux is a Linux terminal environment on the phone; &lt;code&gt;ssh&lt;/code&gt; is one command you can install inside it. There's no saved-host list, key manager, or tap-to-connect. Use Termux when you want Linux tools on-device, and an SSH client when you want to manage remote servers. Install it from F-Droid or GitHub — the Play Store build is deprecated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I SSH into my Android phone?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes, but that's the reverse direction and needs a server, not a client. Install OpenSSH in Termux and run &lt;code&gt;sshd&lt;/code&gt;; it listens on port 8022 because Termux can't bind a privileged port. Connect with &lt;code&gt;ssh -p 8022 user@phone-ip&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does my SSH session disconnect when I switch apps?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Android's Doze and App Standby suspend background network activity, and Android 16 added a stricter Restricted bucket for apps you haven't opened recently; OEM battery managers are often more aggressive still. Set the app's battery usage to Unrestricted, and prefer a client that auto-reconnects. For long-running jobs, run them under &lt;code&gt;tmux&lt;/code&gt; or &lt;code&gt;screen&lt;/code&gt; so the work survives the disconnect entirely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does any Android SSH client support SFTP?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
TermAI and Termius both include SFTP file transfer, on their free tiers. ConnectBot does not — it's sessions and tunnels only. If you need to move files rather than just run commands, that's the deciding factor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need root on my phone to use SSH?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
No. Android SSH clients are ordinary apps and don't require root. Even running an SSH server via Termux doesn't need root — that's exactly why it uses port 8022 instead of 22.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What should I look for in an Android SSH client?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Saved hosts with private-key import, keys stored in the Android keystore behind biometric unlock, a special-keys row (Esc/Ctrl/Tab/arrows), sessions that survive backgrounding, SFTP, and — increasingly — an AI assistant and a way to reach machines behind NAT.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is SSH on Android safe?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes, with the usual conditions: install only from official stores (an SSH client is the worst possible app to sideload), use keys rather than passwords, keep the key behind the device's biometric lock, and use a maintained app — an unpatched client is the actual risk, which is the whole lesson of the JuiceSSH story. More in &lt;a href="https://termai.sh/blog/ssh-key-vs-password/" rel="noopener noreferrer"&gt;SSH keys vs passwords&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick Facts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Topic&lt;/strong&gt;: best SSH app / SSH client for Android in 2026&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best overall / AI-native&lt;/strong&gt;: TermAI (free tier with SSH + SFTP and 5 AI requests/day, Pro $2.99/mo, built-in Tailscale, iOS too)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best desktop sync&lt;/strong&gt;: Termius (free Starter includes SSH/SFTP; Pro $10/user/mo annual, sync is the paywall)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Free &amp;amp; open source&lt;/strong&gt;: ConnectBot (no SFTP; 1.10.x releases shipped in 2026)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No longer an option&lt;/strong&gt;: JuiceSSH — unpublished from Google Play in December 2025, last release February 2021&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Not an SSH client&lt;/strong&gt;: Termux (local Linux environment; install from F-Droid or GitHub, Play build deprecated)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SSH into Android&lt;/strong&gt;: Termux &lt;code&gt;sshd&lt;/code&gt;, port 8022&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PuTTY for Android&lt;/strong&gt;: doesn't exist; use a native SSH client&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ssh</category>
      <category>android</category>
      <category>linux</category>
      <category>devops</category>
    </item>
    <item>
      <title>SSH agent forwarding is a footgun. Use ProxyJump instead.</title>
      <dc:creator>chen zong</dc:creator>
      <pubDate>Tue, 18 Aug 2026 14:50:55 +0000</pubDate>
      <link>https://dev.to/chen_zong_43c81f1a65b1a54/ssh-agent-forwarding-is-a-footgun-use-proxyjump-instead-15hn</link>
      <guid>https://dev.to/chen_zong_43c81f1a65b1a54/ssh-agent-forwarding-is-a-footgun-use-proxyjump-instead-15hn</guid>
      <description>&lt;p&gt;You need to &lt;code&gt;git pull&lt;/code&gt; on a server, or hop from a bastion to a box behind it, and your key only lives on your laptop. The advice you'll find is &lt;code&gt;ssh -A&lt;/code&gt; — &lt;strong&gt;agent forwarding&lt;/strong&gt;. It works, it feels clever, and it quietly hands every server you land on the ability to use your key as you. There's a better default that costs you nothing: &lt;code&gt;ProxyJump&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Here's why forwarding is riskier than it looks, and the one-line replacement.&lt;/p&gt;

&lt;h2&gt;
  
  
  What agent forwarding actually does
&lt;/h2&gt;

&lt;p&gt;Your SSH agent holds your private key and answers "sign this" challenges so the key never leaves your machine. Agent forwarding (&lt;code&gt;-A&lt;/code&gt;) exposes that agent's socket &lt;strong&gt;on the remote server&lt;/strong&gt; so the server can ask your agent to sign things — e.g. to authenticate you onward to a third box.&lt;/p&gt;

&lt;p&gt;The catch: while you're connected, &lt;strong&gt;anyone with root on that server can use your agent too.&lt;/strong&gt; They can't copy your key, but they don't need to — they can ask your agent to sign logins to every machine your key opens, as you, for as long as your session is up. On a shared or less-trusted box, that's your entire key's reach handed to whoever controls it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Don't reach for this by reflex:&lt;/span&gt;
ssh &lt;span class="nt"&gt;-A&lt;/span&gt; bastion
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The better default: ProxyJump
&lt;/h2&gt;

&lt;p&gt;Almost every reason people use &lt;code&gt;-A&lt;/code&gt; is really "I need to reach box B through box A." &lt;code&gt;ProxyJump&lt;/code&gt; does exactly that — but the connection to B is tunneled through A and &lt;strong&gt;authenticated from your laptop&lt;/strong&gt;, so A never sees or touches your agent.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh &lt;span class="nt"&gt;-J&lt;/span&gt; bastion db-internal
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or make it permanent in &lt;code&gt;~/.ssh/config&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;Host&lt;/span&gt; db-internal
    &lt;span class="k"&gt;HostName&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;.0.0.5
    &lt;span class="k"&gt;ProxyJump&lt;/span&gt; bastion
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now &lt;code&gt;ssh db-internal&lt;/code&gt; transparently hops through the bastion. Your key stays on your device, the bastion is just a pipe, and a compromised bastion can't impersonate you onward. Same convenience, none of the exposure.&lt;/p&gt;

&lt;h2&gt;
  
  
  "But I need git on the server"
&lt;/h2&gt;

&lt;p&gt;The other big use of &lt;code&gt;-A&lt;/code&gt; is running &lt;code&gt;git pull&lt;/code&gt; (over SSH) on a remote host. Two safer options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deploy keys&lt;/strong&gt;: a per-repo, read-only key that lives on the server. Scoped to one repo, revocable, and it can't be used to log in anywhere else.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clone over HTTPS with a scoped token&lt;/strong&gt; instead of SSH.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both keep your personal key off the server entirely.&lt;/p&gt;

&lt;h2&gt;
  
  
  When forwarding is defensible
&lt;/h2&gt;

&lt;p&gt;Forwarding isn't evil — it's just over-recommended. It's reasonable when &lt;strong&gt;you fully trust and control the intermediate host&lt;/strong&gt; (your own hardened bastion, no other users) and only for the moment you need it. If you must, scope it hard:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;ssh-add -c&lt;/code&gt; so the agent asks for confirmation on every use — you'll see it if a server tries to sign something behind your back.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;ssh-add -t 300&lt;/code&gt; to auto-expire keys from the agent.&lt;/li&gt;
&lt;li&gt;Never forward to a shared, managed, or third-party server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But "trusted, controlled, momentary" describes very few of the servers people forward to.&lt;/p&gt;

&lt;h2&gt;
  
  
  Doing this from a phone
&lt;/h2&gt;

&lt;p&gt;On mobile the stakes are higher, not lower: the key should sit in the device's &lt;strong&gt;secure enclave&lt;/strong&gt;, and you don't want a tapped-out &lt;code&gt;-A&lt;/code&gt; reflex exposing it through some box you SSH'd into from a coffee shop. A good mobile client makes the &lt;em&gt;safe&lt;/em&gt; path the easy one — saved &lt;code&gt;ProxyJump&lt;/code&gt; hops per host, key in the enclave, biometric confirmation on use. That's the model I build into &lt;a href="https://termai.sh" rel="noopener noreferrer"&gt;TermAI&lt;/a&gt;: the jump is a saved property of the host, so the safe hop is one tap and the footgun is never the default.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;ssh -A&lt;/code&gt; forwards your agent, and any root on the remote can use your key as you while you're connected. You almost never need it — &lt;code&gt;ssh -J bastion target&lt;/code&gt; (ProxyJump) reaches the same box while keeping your key on your laptop. For git on a server, use a scoped deploy key, not your personal key. Only forward to hosts you fully control, and if you do, add &lt;code&gt;ssh-add -c&lt;/code&gt; and a timeout. On a phone, keep the key in the secure enclave and let saved jumps do the hopping.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Do you still use &lt;code&gt;-A&lt;/code&gt; anywhere — and is the box on the other end really one you'd trust with your whole keyring?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>ssh</category>
      <category>devops</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>SSH hardening: 3 changes do 90% of the work, the rest is theater</title>
      <dc:creator>chen zong</dc:creator>
      <pubDate>Tue, 18 Aug 2026 13:49:23 +0000</pubDate>
      <link>https://dev.to/chen_zong_43c81f1a65b1a54/ssh-hardening-3-changes-do-90-of-the-work-the-rest-is-theater-5553</link>
      <guid>https://dev.to/chen_zong_43c81f1a65b1a54/ssh-hardening-3-changes-do-90-of-the-work-the-rest-is-theater-5553</guid>
      <description>&lt;p&gt;Search "SSH hardening" and you get a 20-item checklist: change the port, disable protocol 1, set a login banner, tweak ciphers, install fail2ban, rate-limit, add 2FA, port-knock… Most of it is &lt;strong&gt;security theater&lt;/strong&gt; — it feels productive and moves almost no risk. Three changes do the real work. Here they are, and why the popular ones don't matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 3 that actually move risk
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Keys only — turn off password auth
&lt;/h3&gt;

&lt;p&gt;This is the whole ballgame. Password auth means your servers are exposed to credential-stuffing and brute force 24/7. Keys make that class of attack impossible.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="c1"&gt;# /etc/ssh/sshd_config&lt;/span&gt;
&lt;span class="k"&gt;PasswordAuthentication&lt;/span&gt; &lt;span class="no"&gt;no&lt;/span&gt;
&lt;span class="k"&gt;PubkeyAuthentication&lt;/span&gt; &lt;span class="no"&gt;yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add your public key to &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt; first, test a new session, &lt;em&gt;then&lt;/em&gt; reload &lt;code&gt;sshd&lt;/code&gt;. Do this one thing and you've closed the door most attacks come through.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. No direct root login
&lt;/h3&gt;

&lt;p&gt;Even with keys, don't let anyone log in straight as &lt;code&gt;root&lt;/code&gt;. Log in as a normal user, &lt;code&gt;sudo&lt;/code&gt; when needed — so every privileged action is attributable and a single leaked key isn't instant root.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;PermitRootLogin&lt;/span&gt; &lt;span class="no"&gt;no&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Limit who can log in
&lt;/h3&gt;

&lt;p&gt;Most boxes have one or two humans who should ever SSH in. Say so explicitly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;AllowUsers&lt;/span&gt; alice bob
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now an attacker needs a &lt;em&gt;valid username&lt;/em&gt; too, and a forgotten service account can't be used as a door.&lt;/p&gt;

&lt;p&gt;That's it. Keys-only + no-root + an allow-list closes the paths real attacks use. Reload and you're done:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl reload sshd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The theater (and why)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Changing the port (22 → 2222).&lt;/strong&gt; Doesn't stop anyone — a scanner finds the new port in seconds. Its &lt;em&gt;only&lt;/em&gt; effect is a quieter &lt;code&gt;auth.log&lt;/code&gt;. That's a nice-to-have, not security. If you've done keys-only, the noise was already harmless.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;fail2ban / rate-limiting.&lt;/strong&gt; Great for log noise and password auth. But if you turned passwords off (#1), there's no password to brute-force — you're banning bots from a door that's already sealed. Defense in depth, not a load-bearing wall.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fancy cipher/MAC tuning.&lt;/strong&gt; Modern OpenSSH defaults are already strong. Hand-tweaking the cipher list mostly risks locking out a client while adding no real protection.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Login banners, protocol 1 disable.&lt;/strong&gt; Protocol 1 has been dead for years; banners are legal cover, not defense.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these are &lt;em&gt;wrong&lt;/em&gt; — they're just not where the risk is. Do them after the three that matter, if you like, not instead of.&lt;/p&gt;

&lt;h2&gt;
  
  
  Don't undo it all on your phone
&lt;/h2&gt;

&lt;p&gt;The one place hardening quietly leaks: how you connect from mobile. A keys-only server is pointless if the private key is sitting in a synced note or a screenshot. On a phone the key should live in the &lt;strong&gt;secure enclave and unlock with biometrics&lt;/strong&gt; — which is exactly how I built key handling into &lt;a href="https://termai.sh" rel="noopener noreferrer"&gt;TermAI&lt;/a&gt; — but the rule holds for any client: &lt;strong&gt;the hardening on the server is only as good as where the key lives on the device.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Skip the 20-item checklist. Do three things: &lt;code&gt;PasswordAuthentication no&lt;/code&gt;, &lt;code&gt;PermitRootLogin no&lt;/code&gt;, &lt;code&gt;AllowUsers &amp;lt;you&amp;gt;&lt;/code&gt;. That closes the paths attacks actually use. The port change and fail2ban are for a tidy log, not for security — do them last, or not at all. And keep your private key in your phone's secure enclave so none of it is wasted.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What's on your SSH hardening list that you'd defend as more than theater?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>ssh</category>
      <category>devops</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>SSH keys on your phone: generate, import, and use them without leaking the private key</title>
      <dc:creator>chen zong</dc:creator>
      <pubDate>Tue, 18 Aug 2026 08:05:41 +0000</pubDate>
      <link>https://dev.to/chen_zong_43c81f1a65b1a54/ssh-keys-on-your-phone-generate-import-and-use-them-without-leaking-the-private-key-5d89</link>
      <guid>https://dev.to/chen_zong_43c81f1a65b1a54/ssh-keys-on-your-phone-generate-import-and-use-them-without-leaking-the-private-key-5d89</guid>
      <description>&lt;p&gt;Password SSH from a phone is a bad habit waiting to bite you: it's phishable, brute-forceable, and painful to type on a touch keyboard. Keys fix all three — but "just use keys" glosses over the part that actually trips people up on mobile: &lt;strong&gt;where the private key lives, and how it gets onto the phone without ever leaking.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's the practical version.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one rule: the private key never travels as plaintext
&lt;/h2&gt;

&lt;p&gt;A keypair is two halves. The &lt;strong&gt;public&lt;/strong&gt; key is safe to hand out — you copy it to every server. The &lt;strong&gt;private&lt;/strong&gt; key is the secret; if it leaks, anyone can log in as you. The whole game is keeping the private half from ever sitting somewhere insecure — a chat message, an email attachment, a synced Notes app, a screenshot.&lt;/p&gt;

&lt;p&gt;That leads to two clean approaches on a phone. Pick one; don't mix.&lt;/p&gt;

&lt;h2&gt;
  
  
  Approach A — generate the key &lt;em&gt;on the phone&lt;/em&gt; (best)
&lt;/h2&gt;

&lt;p&gt;The private key is created on the device and never leaves it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Generate a new &lt;strong&gt;Ed25519&lt;/strong&gt; key (&lt;code&gt;ssh-keygen -t ed25519&lt;/code&gt; is the desktop equivalent; a good mobile client does this in-app). Ed25519 over RSA: shorter, faster, modern.&lt;/li&gt;
&lt;li&gt;Protect it with a &lt;strong&gt;passphrase&lt;/strong&gt;. On a phone this is the difference between "lost phone = lost servers" and "lost phone = shrug."&lt;/li&gt;
&lt;li&gt;Copy the &lt;strong&gt;public&lt;/strong&gt; key to each server's &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt; (paste it, or use &lt;code&gt;ssh-copy-id&lt;/code&gt; from a machine that already has access).&lt;/li&gt;
&lt;li&gt;Store the private key in the phone's &lt;strong&gt;secure enclave / Keychain&lt;/strong&gt;, not a plain file. A well-built client keeps it there and gates use behind Face ID / Touch ID.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now the secret was born on the device, is encrypted at rest, and requires biometrics to use. That's the setup you want.&lt;/p&gt;

&lt;h2&gt;
  
  
  Approach B — import an existing key (only if you must)
&lt;/h2&gt;

&lt;p&gt;If you already have a key on your laptop and genuinely need the same one on the phone, move it &lt;strong&gt;out of band and encrypted&lt;/strong&gt;, never through a chat app or email:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prefer an encrypted transfer your client supports (some import via QR from a paired desktop, or over an encrypted local channel).&lt;/li&gt;
&lt;li&gt;If you must move a file, make sure it's a &lt;strong&gt;passphrase-protected&lt;/strong&gt; private key, delete the intermediate copy afterward, and rotate it later if you're unsure where it went.&lt;/li&gt;
&lt;li&gt;Honestly, generating a &lt;em&gt;new&lt;/em&gt; per-device key (Approach A) and adding its public half to your servers is usually less risky than shuttling one private key around.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Two mistakes that quietly undo all of this
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A key with no passphrase, synced to the cloud.&lt;/strong&gt; iCloud/Google backups of an unprotected private key mean your servers are one account compromise away. Passphrase + secure-enclave storage avoids it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reusing one key everywhere with no way to revoke.&lt;/strong&gt; Use a per-device key (laptop, phone, tablet each their own). Then losing one device = remove &lt;em&gt;one&lt;/em&gt; public key line from &lt;code&gt;authorized_keys&lt;/code&gt;, not re-key everything.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lock the door behind you
&lt;/h2&gt;

&lt;p&gt;Once keys work, turn passwords off on the server so a stolen/weak password can't bypass all this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="c1"&gt;# /etc/ssh/sshd_config&lt;/span&gt;
&lt;span class="k"&gt;PasswordAuthentication&lt;/span&gt; &lt;span class="no"&gt;no&lt;/span&gt;
&lt;span class="k"&gt;PubkeyAuthentication&lt;/span&gt; &lt;span class="no"&gt;yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then &lt;code&gt;sudo systemctl reload sshd&lt;/code&gt;. Test a new key-based login in a second session &lt;em&gt;before&lt;/em&gt; closing your current one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The mobile-specific bit
&lt;/h2&gt;

&lt;p&gt;Everything above is standard SSH hygiene — the phone twist is storage and unlock. On a phone your private key should live in the &lt;strong&gt;secure enclave and unlock with biometrics&lt;/strong&gt;, so a shoulder-surfer or a grabbed-and-unlocked phone still can't export it. That's a core thing I build into &lt;a href="https://termai.sh" rel="noopener noreferrer"&gt;TermAI&lt;/a&gt; (keys in the Keychain, Face ID to use them, generate-on-device by default), but the principle holds for any client you pick: &lt;strong&gt;generate on device, passphrase-protect, store in the enclave, one key per device.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Do that and SSH from a phone stops being the scary option and becomes the safe one.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;How do you handle keys across devices — one key synced, or a separate key per device with public keys fanned out?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ssh</category>
      <category>security</category>
      <category>mobile</category>
      <category>devops</category>
    </item>
    <item>
      <title>SSH into a home server behind CGNAT — from your phone, no port forwarding</title>
      <dc:creator>chen zong</dc:creator>
      <pubDate>Mon, 17 Aug 2026 16:07:02 +0000</pubDate>
      <link>https://dev.to/chen_zong_43c81f1a65b1a54/ssh-into-a-home-server-behind-cgnat-from-your-phone-no-port-forwarding-2bj2</link>
      <guid>https://dev.to/chen_zong_43c81f1a65b1a54/ssh-into-a-home-server-behind-cgnat-from-your-phone-no-port-forwarding-2bj2</guid>
      <description>&lt;p&gt;If your home server sits behind &lt;strong&gt;CGNAT&lt;/strong&gt; (carrier-grade NAT), the classic "forward port 22 on the router" trick just doesn't work — your ISP shares one public IP across many customers, so there's no port to forward. Add a phone as your only device (on-call, traveling, laptop dead) and reaching that box feels impossible.&lt;/p&gt;

&lt;p&gt;It isn't. Here's the approach that actually holds up, and how to do the whole thing from a phone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why port forwarding fails on CGNAT
&lt;/h2&gt;

&lt;p&gt;Port forwarding assumes &lt;em&gt;you&lt;/em&gt; own the public IP on your router's WAN side. Under CGNAT you don't — the ISP NATs you again upstream. So even a perfect router config forwards a port that the outside internet can never route to. Dynamic DNS doesn't help either; it points at an address that isn't really yours.&lt;/p&gt;

&lt;p&gt;The usual workarounds each have a cost:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rent a VPS + reverse SSH tunnel&lt;/strong&gt; — works, but you're paying for and hardening another public box, and exposing SSH on it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask the ISP for a static/public IP&lt;/strong&gt; — sometimes possible, often paid, sometimes flatly refused.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare Tunnel / ngrok&lt;/strong&gt; — great for HTTP, awkward-to-paid for raw SSH.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The approach that scales down to a phone: a mesh VPN
&lt;/h2&gt;

&lt;p&gt;Instead of poking a hole &lt;em&gt;inward&lt;/em&gt;, put the server and your phone on the &lt;strong&gt;same private overlay network&lt;/strong&gt; and let them find each other. A WireGuard-based mesh — &lt;strong&gt;Tailscale&lt;/strong&gt;, or the self-hosted &lt;strong&gt;Headscale&lt;/strong&gt; control server — does exactly this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install the mesh client on the home server; it dials &lt;em&gt;out&lt;/em&gt; to the coordination server, so CGNAT is irrelevant (outbound connections always work).&lt;/li&gt;
&lt;li&gt;Install the same mesh on your phone.&lt;/li&gt;
&lt;li&gt;Both get stable private IPs (e.g. &lt;code&gt;100.x.y.z&lt;/code&gt;). Now your phone can &lt;code&gt;ssh user@100.x.y.z&lt;/code&gt; as if you were on the LAN — encrypted, no ports exposed to the public internet.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No inbound firewall rules. Nothing listening on a public IP. SSH is only reachable to devices you've explicitly added to the tailnet, which is a real security win on its own.&lt;/p&gt;

&lt;h3&gt;
  
  
  Self-hosted vs hosted control plane
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tailscale&lt;/strong&gt; (hosted): fastest to set up, generous free tier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Headscale&lt;/strong&gt; (self-hosted): you run the coordination server yourself — appealing if you want zero third-party dependency for your homelab. It speaks the same client protocol.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Either way the client side is identical, which matters for the phone step below.&lt;/p&gt;

&lt;h2&gt;
  
  
  Doing it from the phone
&lt;/h2&gt;

&lt;p&gt;This is where most guides stop, because the phone side is genuinely fiddly: you end up juggling a separate VPN app, a keys app, and an SSH app, tabbing between them every time a connection drops.&lt;/p&gt;

&lt;p&gt;A cleaner setup is a mobile SSH client with the mesh &lt;strong&gt;built in&lt;/strong&gt;, so the tunnel comes up with the connection instead of as a separate step. I build one — &lt;a href="https://termai.sh" rel="noopener noreferrer"&gt;&lt;strong&gt;TermAI&lt;/strong&gt;&lt;/a&gt; — with Tailscale integrated, plus SFTP and an AI helper that &lt;em&gt;suggests&lt;/em&gt; commands and waits for you to confirm before anything runs (on a production box, "read before you run" matters). But the pattern is what counts: keep the overlay network and the terminal in one place so a dropped mobile connection re-establishes both.&lt;/p&gt;

&lt;p&gt;Checklist for the phone:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mesh client connected, phone shows a &lt;code&gt;100.x&lt;/code&gt; address&lt;/li&gt;
&lt;li&gt;SSH &lt;strong&gt;key&lt;/strong&gt; imported to the phone (not a password) — generate on the phone, copy the public half to the server's &lt;code&gt;authorized_keys&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Test &lt;code&gt;ssh user@100.x.y.z&lt;/code&gt; on Wi-Fi, then again on cellular to confirm CGNAT is truly bypassed&lt;/li&gt;
&lt;li&gt;Optional: &lt;code&gt;tmux&lt;/code&gt; on the server so a flaky mobile link doesn't kill a long job&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Hardening once it works
&lt;/h2&gt;

&lt;p&gt;Because SSH is now only reachable over the tailnet, you can safely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;PasswordAuthentication no&lt;/code&gt; and rely on keys.&lt;/li&gt;
&lt;li&gt;Restrict &lt;code&gt;sshd&lt;/code&gt; to listen on the mesh interface only.&lt;/li&gt;
&lt;li&gt;Drop any public port-forward rules you were fighting with.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;CGNAT breaks port forwarding because you don't own the public IP. A WireGuard mesh (Tailscale or self-hosted Headscale) sidesteps it entirely with outbound connections, gives your phone a stable private IP to the server, and removes SSH from the public internet in the process. Put the mesh and the terminal in the same mobile app and the whole thing works from a phone without app-juggling.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What's your CGNAT workaround — reverse tunnel, mesh VPN, or did you get a static IP out of your ISP?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ssh</category>
      <category>selfhosted</category>
      <category>tailscale</category>
      <category>homelab</category>
    </item>
    <item>
      <title>SSH into your servers from your phone: keys, Tailscale, and an AI safety net</title>
      <dc:creator>chen zong</dc:creator>
      <pubDate>Mon, 17 Aug 2026 01:48:50 +0000</pubDate>
      <link>https://dev.to/chen_zong_43c81f1a65b1a54/ssh-into-your-servers-from-your-phone-keys-tailscale-and-an-ai-safety-net-271h</link>
      <guid>https://dev.to/chen_zong_43c81f1a65b1a54/ssh-into-your-servers-from-your-phone-keys-tailscale-and-an-ai-safety-net-271h</guid>
      <description>&lt;p&gt;Every on-call engineer has lived this: an alert fires, you're not at your desk, and all you have is your phone. The laptop-and-VPN scramble takes ten minutes you don't have. Here's a setup that lets you actually fix things from a phone — safely.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Use a real terminal, not a toy
&lt;/h2&gt;

&lt;p&gt;You want an SSH/SFTP client that behaves like a terminal. On iOS/Android the usual names are &lt;strong&gt;Termius&lt;/strong&gt;, &lt;strong&gt;Blink Shell&lt;/strong&gt;, &lt;strong&gt;Termux&lt;/strong&gt;, and &lt;strong&gt;TermAI&lt;/strong&gt;. Whichever you pick, make sure it supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SSH &lt;strong&gt;keys&lt;/strong&gt;, not just passwords&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SFTP&lt;/strong&gt; for pulling and editing configs/logs&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;key-agent&lt;/strong&gt; so you're not retyping a passphrase on every reconnect&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Keys, stored right
&lt;/h2&gt;

&lt;p&gt;Password auth on an internet-facing box is asking for trouble. Generate an ed25519 key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; ed25519 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"phone"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Put the public key in the server's &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt;, import the &lt;strong&gt;private&lt;/strong&gt; key into your mobile client's key store, then turn password auth off in &lt;code&gt;sshd_config&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ssh"&gt;&lt;code&gt;&lt;span class="k"&gt;PasswordAuthentication&lt;/span&gt; &lt;span class="no"&gt;no&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Reach private servers without opening ports
&lt;/h2&gt;

&lt;p&gt;Most of your boxes shouldn't expose SSH to the internet at all. Instead of port-forwarding, put them on a mesh VPN like &lt;strong&gt;Tailscale&lt;/strong&gt; — your phone joins the tailnet and you SSH straight to the private IP. Some mobile clients ship Tailscale built in, which saves you juggling two apps and a login.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The part that matters at 3 a.m.: don't fat-finger prod
&lt;/h2&gt;

&lt;p&gt;Typing &lt;code&gt;systemctl restart&lt;/code&gt; against the wrong host, on a phone keyboard, half-awake, is a real failure mode. This is where an AI &lt;strong&gt;assistant&lt;/strong&gt; earns its keep — but the &lt;em&gt;mode&lt;/em&gt; is everything. You want &lt;strong&gt;suggest-then-confirm&lt;/strong&gt; (the tool proposes a command, you read it, then you run it), not an autonomous agent that executes on its own. On a production box, "read before you run" is the whole game.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap-up
&lt;/h2&gt;

&lt;p&gt;Phone-based ops isn't about replacing your laptop. It's about the five minutes that stop a small incident from becoming a big one. &lt;strong&gt;Keys + a mesh VPN + a suggest-then-confirm assistant&lt;/strong&gt; is a setup you can actually trust while you're on call.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I build &lt;a href="https://termai.sh" rel="noopener noreferrer"&gt;TermAI&lt;/a&gt;, a mobile SSH terminal that bundles SFTP, built-in Tailscale, and a suggest-then-confirm AI assistant — but the setup above works with whatever client you prefer.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ssh</category>
      <category>devops</category>
      <category>mobile</category>
    </item>
  </channel>
</rss>
