Grass vs SSH Apps: Which Should You Use to Access Coding Agents from Your Phone?

SSH apps give you a raw terminal on your phone. Grass gives you a mobile-native interface built specifically for coding agents. Here's when each makes sense.

TL;DR: There are now three distinct tiers for accessing AI coding agents from your phone — SSH terminal (Tailscale + tmux + Termius), DIY remote desktop (AFK), and purpose-built agent interfaces (Grass, Remote Control). The axis that separates them is where your session runs: a cloud VM that keeps going when your laptop sleeps, your local Mac desktop streamed over WebRTC, or a raw terminal session over SSH. Which is right depends on whether your primary constraint is laptop-independence, tool flexibility, or mobile UX quality.


What problem does every AI coding agent developer run into?

You dispatch a Claude Code session to refactor a module. Two hours later you're in a meeting — and the agent has been waiting on a permission prompt for 90 minutes, burning API quota while you sat in the same building. The fix is remote access, but the right kind depends on what you're actually optimizing for.

As of May 2026, developers who took the SSH-only path on r/ClaudeCode routinely describe it as "miserable" on a phone keyboard. The developer behind AFK (a remote desktop app for coding agents) put it directly: "Tried a bunch of remote desktop apps but none of them felt right for this. Typing prompts on a phone keyboard is painful, and they're all designed for general use, not AI-assisted coding." The Desk Tax — paying for a $20/month Claude Code subscription that sits idle for 13 of your 16 waking hours — is the real cost.

Spring 2026 changed the comparison landscape in two ways. First, Anthropic's Remote Control feature expanded from Claude Max-only to all Claude plans, giving every subscriber a free option. Second, a wave of indie builders shipped purpose-built tools: AFK (remote desktop via WebRTC, January 2026), macky.dev (April 2026), and Armorer Gauntlet (May 2026). The comparison that only covered two tiers six months ago now needs three.


What are the three tiers of remote agent access?

Tier 1 — SSH terminal (Tailscale + tmux + Termius/Blink): You SSH into your laptop or a VPS from your phone, attach to a tmux session, and interact with the agent through the raw terminal. The session runs on whatever machine hosts tmux — your laptop, a VPS, or a Daytona workspace. Termius is the most-recommended client; Blink adds mosh for connection resilience on mobile networks.

Tier 2 — DIY remote desktop (AFK): You stream your actual Mac desktop to your phone via WebRTC. The agent runs locally on your Mac — in Cursor, Claude Code, Windsurf, Xcode, or any other tool. AFK uniquely solves "I want to use Cursor from my phone" because it gives you the actual app, not a terminal window or a purpose-built relay. The tradeoff is the same as SSH: your Mac must stay on.

Tier 3 — Purpose-built agent interfaces (Grass, Anthropic Remote Control): These are built specifically for agent workflows. Remote Control gives you Claude's conversation UI on your phone. Grass gives you an always-on cloud VM where Claude Code, Codex, and Open Code run 24/7 — your phone connects to an agent that keeps working whether your laptop is open or not.

The key axis: SSH and remote desktop require your laptop to stay on. Grass's cloud VM does not.


Is SSH terminal access good enough for AI agent workflows?

Tailscale + tmux + Termius is the most-used DIY approach with strong community advocacy. The setup: install Tailscale on your laptop, create a tmux session before leaving your desk, SSH in from Termius using the Tailscale IP, and reattach. "A much better combination is tailscale + tmux + termius...start a session in mac...continue on the go...get back to mac and continue again...same session," wrote one r/ClaudeAI commenter.

The practical friction points:

  • Keyboard: Typing on a phone keyboard in a raw terminal is painful. No agent-specific abstractions — you're staring at the same terminal output you'd see on a MacBook.
  • Connection resilience: SSH sessions drop on mobile networks. Blink/mosh mitigates this: "I use blink so I can use mosh instead of SSH so the connection doesn't stop all the time when moving around."
  • Laptop dependency: Your Mac must stay awake. This rules out genuinely long-running autonomous tasks when you actually want to close your laptop.
  • No permission forwarding: You won't know a permission prompt is waiting unless you check manually.
  • Security tradeoff: Tailscale keeps the connection on a private network. Port-forwarding directly is a security problem — don't do it.

The upside is real: no third party in the loop, your actual local environment, full terminal access, works with any agent. "No sketchy cloud services, no custom apps, just standard Unix tools that have worked for decades," noted a r/vibecoding Termux guide. For Android, Termux + Tailscale is the equivalent.

For a complete walkthrough, see How to Use Tailscale with Claude Code for Remote Access and How to Keep Claude Code Running After SSH Disconnects.


What is AFK and why do most comparisons miss it?

AFK — shipped by builder TerseCat and posted to r/ClaudeCode in January 2026 — streams your Mac desktop to your phone via WebRTC, with voice input. It's a middle position in the comparison that most existing articles omit entirely: not SSH terminal, not a purpose-built agent relay — your actual Mac, streamed.

The key differentiator is tool breadth. From AFK's own framing: "AFK connects you to your Mac. What runs on it is up to you. Cursor, Claude Code, Codex, Gemini CLI, Windsurf, Amp, Aider, OpenCode, VS Code, Xcode, Terminal." This matters significantly for developers who use Cursor or Windsurf — tools that have almost no mobile options through any other path. "SSH from phone — technically possible but you lose the whole Cursor experience. Just a raw terminal," noted one r/cursor commenter.

TerseCat built AFK after the same frustration: "Tried a bunch of remote desktop apps (Google Remote Desktop, Screens, Jump) but none of them felt right for this." The purpose-built design makes it usable in a way that generic remote desktop apps aren't.

AFK's constraints match SSH's: your Mac must stay on. You're not getting rid of the laptop dependency — you're just getting a better interface to your local machine. The connection is direct P2P (no cloud relay), which addresses the BYOK/security concern some developers have about third-party relays reading session content.

AFK posted to Show HN in March 2026 and is actively maintained. It's the right choice if you need tool flexibility and are comfortable keeping your Mac running.


What can Anthropic Remote Control do — and what can't it?

Remote Control is Anthropic's built-in answer. It gives you Claude's conversation UI on your phone without opening Termius or a raw terminal — "kind of different experiences," as one r/ClaudeCode commenter noted comparing it to SSH.

Spring 2026 expanded it to all Claude plans (not just Max), making it the zero-cost entry point. For basic monitoring — checking what Claude is doing, reading its responses — it works well.

The documented gap: Remote Control cannot start new sessions from mobile. It requires a laptop running with the session already open. As of May 2026, this is the most-requested missing feature, cited in Builder.io analysis and multiple Reddit threads: "The most common request on X isn't make Remote Control better — it's let me start sessions from my phone."

SSH and AFK both allow starting new sessions (because they give full Mac access). Grass's cloud VM approach goes further — the session runs independently of whether any laptop is open at all.

For a detailed breakdown of Remote Control's current capabilities, see Grass vs Claude Code Remote Control: Which Should You Use?.


What does Grass offer that SSH and remote desktop don't?

Grass is a machine built for AI coding agents. One surface. Every agent. Always on. It runs Claude Code, Codex, and Open Code on an always-on cloud VM — so your agent keeps working whether your laptop is open, asleep, or in a bag on a plane. You connect from your phone, your laptop, or an automation. BYOK: your API key never touches Grass's servers.

The key difference from SSH and AFK: the session lives in the cloud, not on your laptop. You can dispatch a long-running task from your phone, close the app, and the agent continues. Permission prompts forward to your phone as native in-app modals with approve/deny. You get a diff viewer, session history, and syntax-highlighted chat — a mobile UX built specifically for what agent oversight requires, without needing a raw terminal on your phone.

The tradeoff is that Grass is purpose-built for agent interfaces. If you want to use Cursor's full IDE experience on your phone, AFK is the right answer. If you want to SSH into your own VPS with full control and zero third-party involvement, the SSH path is right. Grass wins when your priority is laptop-independence, multiple agents on different repos, and mobile UX designed for agents rather than terminals.


Comparison table: SSH vs AFK vs Remote Control vs Grass

SSH (Tailscale + tmux) AFK (remote desktop) Remote Control Grass
Laptop must stay on? Yes Yes Yes No
Start sessions from phone? Yes Yes No Yes
Mobile UX quality Raw terminal Streamed Mac desktop Claude conversation UI Native agent interface
Supports Cursor/Windsurf? Terminal only Yes (full desktop) No No
Supports Claude Code? Yes Yes Yes Yes
Supports Codex / Open Code? Yes Yes No Yes
Permission forwarding? No (manual check) Via desktop view Limited Native in-app modal
Diff viewer? Terminal only Via desktop view No Native mobile view
Security model Private Tailscale network Direct P2P WebRTC Anthropic relay BYOK, cloud VM
Setup complexity Medium (Tailscale + tmux) Low (install AFK) Zero (built into Claude) Zero (pre-configured)
Cost Free (+ Tailscale) Free (beta) Free (all plans) Free tier (10h), then paid
Agent-agnostic? Yes Yes Claude only Yes (Claude Code, Codex, Open Code)

When is SSH the right choice?

SSH (Tailscale + tmux + Termius) wins when:

  • You want zero third parties in the session path — everything stays on your own machines
  • You're already on a VPS or Daytona workspace and SSH is already configured
  • You need full terminal access to your environment, not just agent chat
  • Your sessions are short enough that the laptop-sleep constraint doesn't matter
  • You're on Android, where Termux is the best path

SSH is the wrong choice when you want to close your laptop, need native permission forwarding, or don't want to deal with a phone keyboard for long agent interactions.


When is the DIY remote desktop approach (AFK) the right choice?

AFK wins when:

  • You use Cursor, Windsurf, or another IDE that purpose-built apps don't support
  • You want any tool on your Mac, not just the agents Grass or Remote Control expose
  • You're comfortable keeping your Mac on
  • You want a direct P2P connection with no cloud relay
  • You need voice input on your phone for prompting

AFK is the wrong choice when you want laptop-independence (sessions die when Mac sleeps), or a mobile UX optimized for agent permission gates and diffs rather than a full desktop interface on a small screen.


When is Grass the right choice?

Grass wins when:

  • You want to close your laptop and have the agent keep running
  • You need to start new sessions from your phone without any laptop involvement
  • You're running multiple agents on different repos from one surface
  • You want to dispatch work the moment an idea strikes — without touching your laptop
  • You want native mobile UX built specifically for agent oversight: diffs, permission gates, session status — without raw terminal access

Grass is the wrong choice when you need Cursor or Windsurf (it only supports its specific agent roster), or when you want your session running on your own infrastructure with no cloud involvement.


Which mobile agent access approach will win in 2026?

The category is still moving. AFK (January 2026), macky.dev (April 2026), and Armorer Gauntlet (May 2026) all shipped in the same four-month window, each solving a slightly different sub-problem. The second wave of indie builders shipping mobile-focused agent control tools in 2026 signals the ecosystem is not settled — there's no single winner yet.

What has clarified is the decision axis. As the Grass comparison blog summarized: "The axis that separates them is where your session runs: in an always-on cloud VM, relayed through a server, transmitted directly phone-to-laptop, or mirrored from a terminal." That framing cuts through the feature list noise and lands on the question that actually matters for your workflow.


FAQ

What is the best way to control Claude Code from my phone in 2026?
It depends on whether you need your laptop to stay on. For laptop-independent access where the agent keeps running overnight, Grass's always-on cloud VM is the current best answer. For full Mac desktop access with any tool including Cursor, AFK (remote desktop via WebRTC) is the right choice. For zero-setup with no cost, Anthropic's Remote Control works for monitoring existing sessions but cannot start new ones from mobile. For full terminal control with no third parties, Tailscale + tmux + Termius is the established DIY path.

Can I use Cursor or Windsurf from my phone?
The only practical mobile path to Cursor or Windsurf is a remote desktop approach like AFK. Purpose-built agent apps (Grass, Remote Control) only expose their own agent roster. SSH gives you a terminal into the machine running Cursor, but you lose the actual IDE experience — "just a raw terminal," as r/cursor developers note.

Does Remote Control let me start Claude Code sessions from my phone?
No — as of May 2026, Remote Control requires a laptop running with a session already open. It lets you view and continue existing sessions from mobile but cannot initiate new ones. This is the most-requested missing feature. SSH, AFK, and Grass all allow starting new sessions without a laptop open.

What is the difference between SSH remote access and a purpose-built app like Grass?
SSH gives you a raw terminal on your phone — full control, but a painful keyboard experience and no agent-specific UX. Grass gives you a mobile interface built for what agent oversight actually requires: permission approval gates, diff review, session status, and multi-agent switching — without needing a terminal. The deeper difference is infrastructure: SSH sessions require your laptop or VPS to be running; Grass runs agents on an always-on cloud VM that keeps going when your laptop sleeps.

Is it safe to run Claude Code over SSH on public Wi-Fi?
SSH over Tailscale is safe because the connection stays on your private Tailscale network — no public ports exposed. Don't port-forward SSH directly to the internet. For extra resilience on mobile networks (which drop connections), Blink + mosh is a better choice than standard SSH through Termius.

Which approach is best if I'm already using a VPS or Daytona workspace?
If you're already on a VPS with Claude Code running in tmux, SSH is a natural fit — the infrastructure is already there. For a complete cloud-native setup where the VM is managed for you and agents are pre-configured, Grass is designed for this use case. See How to Set Up Claude Code on Daytona and How to Authenticate Claude Code and Codex on a Headless VPS for the DIY VPS path.


Grass is a machine built for AI coding agents — an always-on cloud VM where Claude Code, Codex, and Open Code run 24/7, accessible from your phone, laptop, or automation. Free tier: 10 hours, no credit card. codeongrass.com