{
  "path": "/3mkwkob4f2s2z",
  "site": "at://did:plc:by3jhwdqgbtrcc7q4tkkv3cf/site.standard.publication/3lpqyl2axis2y",
  "tags": [],
  "$type": "site.standard.document",
  "title": "I Tried Every iOS Terminal Emulator So You Don't Have To",
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "id": "019dec8d-cb56-7223-942b-2f0130356d64",
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "textSize": "small",
              "plaintext": "(that support Mosh because otherwise what are we even doing)"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.image",
              "image": {
                "$type": "blob",
                "ref": {
                  "$link": "bafkreidnvg3cwvr5mrq75wboekx5myhkhehxaik7tjoakypbps4jdkilgi"
                },
                "mimeType": "image/png",
                "size": 1350683
              },
              "aspectRatio": {
                "width": 1206,
                "height": 641
              }
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 87,
                    "byteStart": 83
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 150,
                    "byteStart": 146
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 210,
                    "byteStart": 205
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ]
                }
              ],
              "plaintext": "I’m a simple girl. All I wanted was a terminal emulator on iOS that:\n- supports mosh for persistence and to handle latency\n- works well with tmux\n- and most importantly, tap to scrollback with touch works"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Several apps already lost on the first criteria. Those that passed the muster were:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "Thanks for reading alice’s Substack! Subscribe for free to receive new posts and support my work."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "plaintext": "1. rootshell"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 30,
                    "byteStart": 21
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/rootshell-local-terminal-ssh/id6755794662",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 293,
                    "byteStart": 283
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 392,
                    "byteStart": 382
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 432,
                    "byteStart": 428
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 439,
                    "byteStart": 435
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 450,
                    "byteStart": 446
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 491,
                    "byteStart": 462
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#italic"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 700,
                    "byteStart": 691
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/rootshell-local-terminal-ssh/id6755794662",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 835,
                    "byteStart": 826
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/rootshell-local-terminal-ssh/id6755794662",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "You should just use rootshell. Tap the link, install it on your phone, be happy this problem has been solved now.\n\n”But what about Blink?” you ask. We’ll get to that. If you’re still here that means you need convincing, so. rootshell is the only one I’ve found that uses libghostty which alone makes it better than literally anything else. And even after that, it has everything. Non-garbled tap to scrollback in tmux. mosh and tssh support. It’s entirely free somehow. It has 6 good built-in fonts and can use custom ones. It has one billion custom themes bundled. Custom keyboard toolbar though that’s table stakes these days. I could go on but seriously. Go use rootshell. I’m not getting paid for saying this. I should be. Again it is not even a contest how much it wipes the competition. Use rootshell."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "plaintext": "You can stop reading now unless you care about 6 other terminal emulators I don’t recommend."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [
                {
                  "index": {
                    "byteEnd": 9,
                    "byteStart": 4
                  },
                  "features": [
                    {
                      "uri": "http://itunes.apple.com/app/id1594898306",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "2. Blink"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 92,
                    "byteStart": 75
                  },
                  "features": [
                    {
                      "uri": "https://community.blink.sh/",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 187,
                    "byteStart": 178
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/rootshell-local-terminal-ssh/id6755794662",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 215,
                    "byteStart": 205
                  },
                  "features": [
                    {
                      "uri": "https://ghostty.org/docs/about#libghostty",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 245,
                    "byteStart": 236
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/rootshell-local-terminal-ssh/id6755794662",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "The classic power user choice. It’s fine, but $20/year. You can get the Community Edition for free in exchange for actively participating in testing and feedback. I’d use rootshell anyway because libghostty and nicer UX. Use rootshell."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [
                {
                  "index": {
                    "byteEnd": 12,
                    "byteStart": 4
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/prompt-3/id1594420480",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "3. Prompt 3"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 46,
                    "byteStart": 37
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/rootshell-local-terminal-ssh/id6755794662",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 98,
                    "byteStart": 93
                  },
                  "features": [
                    {
                      "uri": "https://panic.com/prompt/",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 168,
                    "byteStart": 164
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 230,
                    "byteStart": 226
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 246,
                    "byteStart": 237
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/rootshell-local-terminal-ssh/id6755794662",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "It’s $20 which would be fine, but rootshell exists. Also looks surprisingly janky for a Panic app. It warns you on connection that it’s “not an official mosh project”. Tap to scrollback doesn’t work at all in tmux. Use rootshell."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [
                {
                  "index": {
                    "byteEnd": 15,
                    "byteStart": 4
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/la-terminal-mosh-ssh-client/id1629902861",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "4. La Terminal"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 98,
                    "byteStart": 89
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/rootshell-local-terminal-ssh/id6755794662",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "Tap to scrollback is a pain and gets garbled sometimes. Support seems non-existent. Use rootshell."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [
                {
                  "index": {
                    "byteEnd": 9,
                    "byteStart": 4
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/moshi-ssh-mosh-terminal/id6757859949",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "5. Moshi"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 73,
                    "byteStart": 69
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 104,
                    "byteStart": 95
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/rootshell-local-terminal-ssh/id6755794662",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 169,
                    "byteStart": 160
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/rootshell-local-terminal-ssh/id6755794662",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "This seems to not garble scrollback and even lets me switch between tmux tabs on tap, which rootshell can’t do. But it’s $5 a month or $30 a year. Use rootshell."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [
                {
                  "index": {
                    "byteEnd": 11,
                    "byteStart": 4
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/termius-modern-ssh-client/id549039908",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "6. Termius"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 1,
                    "byteStart": 0
                  },
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#code"
                    }
                  ]
                },
                {
                  "index": {
                    "byteEnd": 54,
                    "byteStart": 45
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/rootshell-local-terminal-ssh/id6755794662",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "Tap to scrollback does not work at all. Use rootshell."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 2,
              "facets": [
                {
                  "index": {
                    "byteEnd": 9,
                    "byteStart": 4
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/es/app/mterm-ssh-terminal/id6758785074",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "7. MTerm"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 180,
                    "byteStart": 171
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/rootshell-local-terminal-ssh/id6755794662",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "This mysteriously stopped connecting to my server for some reason?? I never had this issue with the other six. Lifetime license $15 which is better than many, still. Use rootshell."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "level": 1,
              "plaintext": "Conclusion"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "index": {
                    "byteEnd": 38,
                    "byteStart": 29
                  },
                  "features": [
                    {
                      "uri": "https://apps.apple.com/us/app/rootshell-local-terminal-ssh/id6755794662",
                      "$type": "pub.leaflet.richtext.facet#link"
                    }
                  ]
                }
              ],
              "plaintext": "Why are you still here? Use rootshell."
            }
          }
        ]
      }
    ]
  },
  "bskyPostRef": {
    "cid": "bafyreicftzcyuyx5ujhjt2uferhyckexrewueing5ffjq4vnz7l6d5cjqy",
    "uri": "at://did:plc:by3jhwdqgbtrcc7q4tkkv3cf/app.bsky.feed.post/3mkwkoh542k2d",
    "commit": {
      "cid": "bafyreibfg2qs4lovmquph3fchtbd5vqgws2trpi55srioplq7xamwy2pru",
      "rev": "3mkwkohatky24"
    },
    "validationStatus": "valid"
  },
  "description": "(that support Mosh because otherwise what are we even doing)",
  "publishedAt": "2026-05-03T06:45:18.067Z"
}