package icon

Shellwave: SSH Client & SFTP

Open-source SSH client and terminal with SFTP, port forwarding and jump hosts
New in version 1.9.1
New:
- Group, colour and reorder saved hosts
- Manage SSH keys independently of hosts
- Forward the SSH agent with per-host keys and connect-time consent
- Edit remote text files in the SFTP browser

Fixed:
- Keep the keyboard and nav bar off the remote text editor
Shellwave is an open-source SSH client and terminal for Android phones, tablets and foldables. Connect to your Linux servers, Raspberry Pi or homelab with SFTP, port forwarding and sessions that survive a dropped connection.

It exists because every mobile SSH client makes you choose between convenient and trustworthy — and that's a stupid choice.

Sessions that survive
Your train goes into a tunnel and the connection drops. When the signal comes back, your session is still there — reconnected without re-typing a password, and with optional tmux-backed sessions, reattached with scrollback intact. You don't do anything. Hosts can also keep a persistent session running, so you can close the app and come back to exactly where you left off.

Nothing is trusted for you
Host keys are checked the first time you connect and remembered after that, with the fingerprint shown so you can check it yourself. If a host key ever changes, Shellwave stops you before you go any further. There is no accept-all mode, and a script running from a widget or a tile never answers a prompt on your behalf.

Your keys stay on your device
Password, an imported private key, a key generated on your device (Ed25519, ECDSA or RSA), OpenSSH certificates, or keyboard-interactive/2FA — whatever you already use. Everything is encrypted on-device, with hardware-backed protection on phones that support it, and an optional biometric lock. You can generate a key on the device and install it in a host's authorized_keys without the private key ever leaving the phone.

Save yourself the typing
Save commands or scripts against a host, with parameters you fill in when you run them. Watch them run live, run them in the background and check back later, or fire them into a session you already have open. You can launch a script from the app itself, a home-screen widget, an app shortcut, or a Quick Settings tile. The same widget and tile can wake a sleeping machine with Wake-on-LAN.

Networking, done properly
- Local and remote port forwarding
- A SOCKS5 proxy
- Jump host/bastion chaining through multiple hops
- Import your existing ~/.ssh/config as-is — hosts, ports, users, keys, jump hosts, Match blocks
Forwarded ports and the proxy bind to loopback unless you say otherwise.

File transfer
Browse a host's files over SFTP from inside a session: upload, download, rename and delete without switching apps.

A real terminal
256 colours, wide character support, correct cursor and scroll handling. If you use vim, tmux, or htop, they will look and behave the way you expect. No weird redraws, no broken keys, no compromises. Search the scrollback, log a session to a file, and the visible screen is readable by TalkBack.

Built with foldables in mind
On unfolded or wide screens you get a two-pane layout, host list next to the terminal. Tabletop mode keeps the terminal above the hinge and the keyboard below it. Fold or unfold mid-session and nothing drops.

Make it look like yours
A handful of bundled monospace fonts, or bring your own. Colour schemes like Solarized, Gruvbox, Nord, Dracula, Tango and Campbell, plus a full editor if you want to build your own. A key bar you can customise per host with macros and layouts. Material You colour throughout.

Privacy
No usage data, no analytics, no crash reporting. Shellwave only connects to the hosts you tell it to — nothing else.

The Play Store build has an optional one-time tip for the developer. It does not unlock anything, and the F-Droid build leaves it out entirely.

Open source, GNU GPLv3.

Versions

Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.

Download F-Droid
  • Version 1.9.1 (10901) suggested Added on Oct 27, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 12 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • android.permission.ACCESS_LOCAL_NETWORK
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "specialUse"
      Allows the app to make use of foreground services with the type "specialUse"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • show notifications
      Allows the app to show notifications
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • use biometric hardware
      Allows the app to use biometric hardware for authentication
    • use fingerprint hardware
      Allows the app to use fingerprint hardware for authentication
    • control vibration
      Allows the app to control the vibrator.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • io.github.lordofpolls.shellwave.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 14 MiB PGP Signature | Build Log

  • New in version 1.8.0
    New:
    - Add a Nothing colour theme with the Doto display face
    - Wake a host from a quick settings tile or home screen widget

    Fixed:
    - Give the host key dialog three minutes and drop unused BouncyCastle picnic tables
    - Make FakeSharedPreferences.remove actually delete on commit
    - Keyboard text suggestions are disabled in terminal view (#1)
  • Version 1.8.0 (10800) - Added on Oct 22, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 12 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • android.permission.ACCESS_LOCAL_NETWORK
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "specialUse"
      Allows the app to make use of foreground services with the type "specialUse"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • show notifications
      Allows the app to show notifications
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • use biometric hardware
      Allows the app to use biometric hardware for authentication
    • use fingerprint hardware
      Allows the app to use fingerprint hardware for authentication
    • control vibration
      Allows the app to control the vibrator.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • io.github.lordofpolls.shellwave.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 12 MiB PGP Signature | Build Log

  • New in version 1.7.1
    New:
    - Add PgUp and PgDn to the arrow cluster on the key bar
    - Scroll mouse-aware apps with a drag instead of a button drag
  • Version 1.7.1 (10701) - Added on Sep 20, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 12 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • android.permission.ACCESS_LOCAL_NETWORK
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "specialUse"
      Allows the app to make use of foreground services with the type "specialUse"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • show notifications
      Allows the app to show notifications
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • use biometric hardware
      Allows the app to use biometric hardware for authentication
    • use fingerprint hardware
      Allows the app to use fingerprint hardware for authentication
    • control vibration
      Allows the app to control the vibrator.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • io.github.lordofpolls.shellwave.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 13 MiB PGP Signature | Build Log