SSH Client - Secure ShellFish
Terminal, Files & Finder
Free · In-App Purchases
Lightning fast SSH terminal with remote file access. No other app fuses your SSH servers and iOS devices as well as Secure ShellFish. Tap Get and see for yourself.
Terminal supports standard text editing gestures for selection, scrolling and copy/paste as well as custom gestures to send arrow keys and tabulator making shell entry and full screen editing with vim or emacs delightful. Bar above the keyboard makes it easy to type special keys and insert snippets.
Select and drag filenames out of the terminal as actual files and drag files from other apps into the terminal to upload. Use built-in tmux support to persist terminal sessions if you lose Internet access, pick existing sessions with thumbnails and Handoff sessions between devices.
Server file system is available in the Files app and recently accessed files and directories are cached to make them available when offline. Use apps like Textastic and iA Writer for a native editing experience working on your remote server files.
Upload files or entire directories from the share sheet with minimal friction as the last destination directory for each kind of file is remembered or automate file transfers in the Shortcuts app.
Connect to your Mac, Synology NAS and any other SSH server or create new Digital Ocean droplets right from the app.
Secure ShellFish is useful as a free app and paying pro users can disable ads in the terminal, upload through the Files app and configure unlimited number of servers.
more Password insertion change from last update has been reverted as it was still essential for some users.
Fixes crash that could happen when showing tmux session picker.
2026.13 11 Apr
Improved how right-to-left text is rendered in terminal.
Password insertion from paste button is simplified to show biometrics and then confirm.
Useful control combinations added to snippet gallery and put as defaults on right keyboard bar. Remember that you can customize these button assignments by long-tapping them.
2026.12 9 Apr
ShellFish has supported YubiKeys over NFC for a while, and now USB keys work too. Generate, export, and import them like any other keys - they just require the physical key to authenticate. Due to sandboxing restrictions, USB YubiKeys are accessed from a browser context, so your server needs to support webauthn-sk-ecdsa and the key application field must be localhost rather than ssh:
The context menu when starting terminals from the server list now has a submenu for picking an existing tmux session or creating a new one, instead of always connecting to the default. On iPad, hover the pointer over the session picker for a thumbnail popup.
2026.11 18 Mar
Shift + Return works like Alt + Return to add newline without submitting prompt in Claude Code.
Improvements to Live Activity such that it correctly dismisses when terminal closes.
Control+Backspace will send ascii 8.
Improvements when using floating on-screen keyboard.
Fixes to Multipath TCP network mode.
2026.10 11 Mar
Support for post-quantum key exchange algorithms: mlkem768x25519-sha256, mlkem768nistp256-sha256, mlkem1024nistp384-sha384.
Pro users can enable Live Activity from Settings > Advanced or by long-pressing settings button in terminal to follow the active terminal on the lock screen and in the Dynamic Island on supported devices.
Fixes issue from last update where some custom keys on keyboard bar would have empty keycaps despite being assigned.
2026.9 26 Feb
'notify' and 'widget' commands support image payloads also delivered from shell to app using end-to-end encryption. Update Shell Integration scripts and run the commands without arguments for instructions.
Accept OSC 52 sequences with empty target for copying to clipboard.
Fixed issue where terminal would sometimes lose rightmost characters when resizing window.
Adjustments to background colors on keyboard bar in light mode to make it clearer when keys are pressed.
Fix issue where custom key configured for Paste would capture all keyboard bar touch events to the left of the Paste key.
2026.8 26 Feb
Configure whether to use CoreFoundation, plain BSD or Multipath TCP for connections inside Settings > Advanced.
Fix to allow copying public key to clipboard directly from SSH key list.
2026.7 19 Feb
Last update had improvements to handling of .ts.net hostnames allowing the Tailscale on-demand VPN time to start, but would also sometimes introduce a delay for .ts.net hostname if the VPN was already started. This has been improved to avoid delays.
New setting to allow manual certificate import on SSH keys which was removed when I added support for CAs. This is accessible from the gear menu when adding a new Certificate Authority and enabled by default if the app detects previous manual certificates.
2026.6 16 Feb
Improved handling of .ts.net hostnames for better compatibility with Tailscale VPN.
This is especially useful with multi-address hostnames like
MyMac.local, my-mac.tail2faa9.ts.net
which first attempts a local network connection before falling back to Tailscale.
Context menu for the Paste key in the middle of the keyboard bar includes a Type Sentence mode, where you can compose text using autocomplete and other standard iOS editing features. Nothing is sent to the server until you press Return and leave the mode, making it particularly useful for typing natural language while editing in Emacs or Vim, or when writing instructions for Claude Code.
Running servers listed for Digital Ocean or Hetzner have button to start terminal whether or not a ShellFish configuration exists for each server.
Fixed issue where control sequences like ^X in snippets would be confused with literal caret followed by a letter.
2026.5 30 Jan
Support for synchronized terminal output mode where server can ask for terminal updates to be deferred until all updates have been sent. This makes Claude Code updates nicer.
Certificate Authority feature uses in-app browser for authentication such that no browser tab is left open.
Error message is shown when Hetzner API key is wrong during Sign In.
Quick Terminal feature works correctly for terminal-only windows.
Fix issue where terminal word wrap was disabled when restore-cursor sequence was used before save-cursor which would often happen for Claude Code.
2026.4 16 Jan
Improve Certificate Authority with keyId/principals in signing request and PKCE for OAuth.
Fix Unicode variation selectors taking up terminal cell width causing weirdly wrapped terminal lines.
2026.3 15 Jan
Server groups now display more clearly in the Files app
Fixed an issue where favorite folders could be forgotten in the Files app
Help page now mentions Hetzner alongside Digital Ocean as a supported provider
2026.2 11 Jan
Uploads and downloads are allowed to use additional memory and CPU to increase transfer speeds on fast networks.
2026.1 2 Jan
Hetzner servers can be created and managed from Cloud Servers screen.
Drag enbries in server list to customize their order instead of the default alphabetical sorting. Previously, drag and drop could only move servers between groups.
Initial support for short-lived SSH certificates generated on-demand by a Certificate Authority with authentication through OpenID. Configure your CA from the key-plus button above the list of SSH Keys, enter the URL + root certificate fingerprint and authenticate through the browser.
You will then able to pick this CA instead of a SSH key when configuring the server and during authentication your existing unexpired certificate will be used or a new one will be issued and used requiring you to repeat browser-based approval. This browser-based approval isn't possible for connections coming from Files app that will fail if the current certificate has expired.
Includes changes from 2025.36
When approving the use of agent keys, you can configure the approval to last 5 minutes, 60 minutes, or while the connection is active.
Import of servers from CSV files started from the + button above the server list has been improved. When the ID field is assigned, existing servers are matched and updated rather than duplicated. A confirmation screen shows which servers will be added, updated, or left unchanged, along with which fields will change. There's a toggle to delete previously imported servers missing from the import file.
CSV server import has a field for public key, which can contain either the name of the public key, the full public key with or without comment, or the SHA256 fingerprint.
Improvements to terminal when using emoji and side-by-side sessions in tmux.
2025.38 19/12/2025
Insert delays into snippets.
Fix that tab title would get cleared when leaving vi.
Includes changes from 2025.36
When approving the use of agent keys, you can configure the approval to last 5 minutes, 60 minutes, or while the connection is active.
Import of servers from CSV files started from the + button above the server list has been improved. When the ID field is assigned, existing servers are matched and updated rather than duplicated. A confirmation screen shows which servers will be added, updated, or left unchanged, along with which fields will change. There's a toggle to delete previously imported servers missing from the import file.
CSV server import has a field for public key, which can contain either the name of the public key, the full public key with or without comment, or the SHA256 fingerprint.
Improvements to terminal when using emoji and side-by-side sessions in tmux.
2025.37 11/12/2025
When approving the use of agent keys, you can configure the approval to last 5 minutes, 60 minutes, or while the connection is active.
Import of servers from CSV files started from the + button above the server list has been improved. When the ID field is assigned, existing servers are matched and updated rather than duplicated. A confirmation screen shows which servers will be added, updated, or left unchanged, along with which fields will change. There's a toggle to delete previously imported servers missing from the import file.
CSV server import has a field for public key, which can contain either the name of the public key, the full public key with or without comment, or the SHA256 fingerprint.
Improvements to terminal when using emoji and side-by-side sessions in tmux.
Includes changes from 2025.33
Assign dismiss, paste, fn, esc, tab, ctrl, alt, shift or arrow keys to custom positions on keyboard bar.
Help screen has button to show list of page titles making it easier to find specific topics.
Improved documentation when calling 'widget' command without arguments. This change requires you to update Shell Integration script from Settings.
Fix when pasting from 1Password.
2025.36 02/12/2025
Fixes bug where video Playback from Files app failed for certain filenames.
Includes changes from 2025.33
Assign dismiss, paste, fn, esc, tab, ctrl, alt, shift or arrow keys to custom positions on keyboard bar.
Help screen has button to show list of page titles making it easier to find specific topics.
Improved documentation when calling 'widget' command without arguments. This change requires you to update Shell Integration script from Settings.
Fix when pasting from 1Password.
2025.35 18/11/2025
Playback from other apps resume when iOS 26 dictation stops.
Includes changes from 2025.33
Assign dismiss, paste, fn, esc, tab, ctrl, alt, shift or arrow keys to custom positions on keyboard bar.
Help screen has button to show list of page titles making it easier to find specific topics.
Improved documentation when calling 'widget' command without arguments. This change requires you to update Shell Integration script from Settings.
Fix when pasting from 1Password.
2025.34 10/11/2025
Fix that terminal sometimes wouldn't take up full window height on iPadOS 26
Improved HTTP Proxy configuration in Settings > Port Configuration with support for custom port numbers for SOCKS server.
Includes changes from 2025.33
Assign dismiss, paste, fn, esc, tab, ctrl, alt, shift or arrow keys to custom positions on keyboard bar.
Help screen has button to show list of page titles making it easier to find specific topics.
Improved documentation when calling 'widget' command without arguments. This change requires you to update Shell Integration script from Settings.
Fix when pasting from 1Password.
2025.33 04/11/2025
Assign dismiss, paste, fn, esc, tab, ctrl, alt, shift or arrow keys to custom positions on keyboard bar.
Fix such that keys on Fn keyboard work again.
Help screen has button to show list of page titles making it easier to find specific topics.
Improved documentation when calling 'widget' command without arguments. This change requires you to update Shell Integration script from Settings.
Fix when pasting from 1Password.
Includes improvements from 2025.29
Context menu when long-pressing the paste button on the keyboard bar now features integrated dictation on iOS 26. Speak naturally while the context menu is displayed and select the transcribed text once you're satisfied with the result. When keyboard bar isn't show this feature can be activated from the microphone button in the tab bar, such that you can dictate without the keyboard taking up terminal space.
Dictation language is configured in Settings or via the context menu of the settings button in the terminal tab bar. When using a new language for the first time, you may need to wait briefly for the language model to download, as all transcription occurs on-device.
Similar to dictation from the on-screen keyboard, this feature works best for natural language when editing in Emacs/Vim or composing instructions for Claude Code, and is less suited for issuing shell commands. However, this new context menu dictation delivers faster transcription with higher accuracy compared to the standard keyboard dictation method.
Long tap terminal minimize button and enter picture-in-picture mode without having to open terminal settings fully.
2025.32 31/10/2025
Improvements to iOS 26 dictation that would sometimes only include the last part.
Shell Integration has Fish support used when installing to servers where Fish is the default shell.
DECSLRM horisontal margins are respected which fixes issue when having side-by-side sessions in tmux.
Also includes improvements from 2025.29
Context menu when long-pressing the paste button on the keyboard bar now features integrated dictation on iOS 26. Speak naturally while the context menu is displayed and select the transcribed text once you're satisfied with the result. When keyboard bar isn't show this feature can be activated from the microphone button in the tab bar, such that you can dictate without the keyboard taking up terminal space.
Dictation language is configured in Settings or via the context menu of the settings button in the terminal tab bar. When using a new language for the first time, you may need to wait briefly for the language model to download, as all transcription occurs on-device.
Similar to dictation from the on-screen keyboard, this feature works best for natural language when editing in Emacs/Vim or composing instructions for Claude Code, and is less suited for issuing shell commands. However, this new context menu dictation delivers faster transcription with higher accuracy compared to the standard keyboard dictation method.
Long tap terminal minimize button and enter picture-in-picture mode without having to open terminal settings fully.
2025.31 28/10/2025
Terminal windows without toolbar look nicer on iPadOS 26.
Also includes improvements from 2025.29
Context menu when long-pressing the paste button on the keyboard bar now features integrated dictation on iOS 26. Speak naturally while the context menu is displayed and select the transcribed text once you're satisfied with the result. When keyboard bar isn't show this feature can be activated from the microphone button in the tab bar, such that you can dictate without the keyboard taking up terminal space.
Dictation language is configured in Settings or via the context menu of the settings button in the terminal tab bar. When using a new language for the first time, you may need to wait briefly for the language model to download, as all transcription occurs on-device.
Similar to dictation from the on-screen keyboard, this feature works best for natural language when editing in Emacs/Vim or composing instructions for Claude Code, and is less suited for issuing shell commands. However, this new context menu dictation delivers faster transcription with higher accuracy compared to the standard keyboard dictation method.
Long tap terminal minimize button and enter picture-in-picture mode without having to open terminal settings fully.
2025.30 19/10/2025
Context menu when long-pressing the paste button on the keyboard bar now features integrated dictation on iOS 26. Speak naturally while the context menu is displayed and select the transcribed text once you're satisfied with the result. When keyboard bar isn't show this feature can be activated from the microphone button in the tab bar, such that you can dictate without the keyboard taking up terminal space.
Dictation language is configured in Settings or via the context menu of the settings button in the terminal tab bar. When using a new language for the first time, you may need to wait briefly for the language model to download, as all transcription occurs on-device.
Similar to dictation from the on-screen keyboard, this feature works best for natural language when editing in Emacs/Vim or composing instructions for Claude Code, and is less suited for issuing shell commands. However, this new context menu dictation delivers faster transcription with higher accuracy compared to the standard keyboard dictation method.
Long tap terminal minimize button and enter picture-in-picture mode without having to open terminal settings fully.
2025.29 08/10/2025
Paste button in keyboard bar no longer has clipboard prompt when pasting from other apps.
Fixes issue on iPadOS 26 where the terminal height would not expand properly when resizing the window in certain scenarios.
Improvements to server import from CSV file.
Avoid crash when dismissing Fn keyboard in windowed mode on iPadOS 26.
2025.28 02/10/2025
Fixes bug introduced in last update that could cause crashes on iOS 18.
2025.27 21/09/2025
Password insertion change from last update has been reverted as it was still essential for some users.
Fixes crash that could happen when showing tmux session picker.
more Version 2026.13 11 Apr
Data Not Linked to You The following data may be collected but it is not linked to your identity: