ShellSage
ShellSage mobile SSH client — getting started
Help Center

Getting Started

Your first five minutes — sign in, save a server, and open your first connected terminal, straight from your phone.

Browse Getting StartedFull FAQ

Getting Started

Your first five minutes — sign in, save a server, connect.

First 5 minutes

Getting started

From install to your first connected terminal.

  1. Sign in with your email and password. New here? Tap Create Account; forgot it? Tap Forgot Login for a 6-digit reset code by email.
  2. After your first sign-in you can Unlock with biometrics — a fingerprint or Face ID gets you straight in, no retyping.
  3. Land on the Home screen — your dashboard for hosts, AI usage, and updates.
  4. Tap Hosts and add your first SSH host with the + button (paste its private key).
  5. Tap the saved host — the terminal opens and connects. Done.

Save your server once

Adding a host

The fields that make up a saved server.

  • Label — anything memorable (“prod-api”, “home NAS”, “client X jumpbox”).
  • Hostname or IP — just the host part (e.g. 165.22.231.98), not user@host. Port is 22 unless you changed it.
  • Username — root, ubuntu, ec2-user, etc.
  • Private key — paste the OpenSSH PEM contents, starting with -----BEGIN OPENSSH PRIVATE KEY-----.
  • Toggle Require biometric for Face ID / fingerprint each tap, and Prod-tagged to lock AI assist off so it never auto-runs.
  • Tip: an Ed25519 key works best (some servers reject older RSA keys). Long-press a saved host → Duplicate to clone it and its key.

Tap and you're in

Connecting to a host

What happens between tap and prompt.

  • Tap a host card — a biometric prompt fires if required — and a CONNECTING pill shows while the SSH handshake runs.
  • The terminal renders: type commands, backspace, arrow keys, and tab completion all work. Pull down to disconnect cleanly.
  • On Android, sessions stay connected when you switch apps (a foreground service keeps them alive) and only drop after ~10 minutes idle, with a warning first.
  • On iOS, the system forbids long-running background SSH, so a backgrounded session drops and reconnects when you reopen it — run tmux or screen for long tasks.

No laptop needed

Generate an SSH key on your phone

Key-based login, created on-device.

  • Creates a secure ed25519 SSH key right on your phone, so you can log in with a key instead of a password — no desktop terminal required.
  • Find it under the terminal menu → Generate SSH key, or tap Generate new key while adding/editing a host.
  • Copy the public key into your server's ~/.ssh/authorized_keys, or if you're already connected tap Install on <host> to add it in one tap.
  • Best for setting up a fresh server, moving off password sign-in, or switching to keys while already connected. The private key is kept in encrypted secure storage on the device; once you save the host, it is also stored on our servers encrypted at rest (AES-256) so the host syncs to your other devices — encryption at rest, not end-to-end.

Files & Transfers

Real SFTP — browse, multi-select, move, download, and import servers.

SFTP browser

Browsing files & folders

Tap the folder icon, top-right in the terminal.

  • Tap the folder icon in the terminal's top bar to open the file browser for that server.
  • Tap a folder to go in; the first row (..) jumps back, and the path across the top is tappable to any level. Each row shows permissions, size, and date.
  • The search icon filters the current folder as you type; the + button makes a new folder or uploads files (or a whole folder) from your phone.
  • The overflow menu sorts by name, date, size, or kind and shows/hides dotfiles. Open terminal here drops you into that folder, and typing cd suggests folders you can enter.

Multi-select

Select, copy, move & download files

Long-press to start selecting.

  • Long-press any file or folder to start selecting; tap more to add them, or use Select all. The top bar shows the count with a menu to act on them.
  • Copy or Move, then open another folder and a Paste bar appears — Move is instant, Copy duplicates files and whole folders.
  • Download ZIP compresses your selection and saves the .zip to your phone; Share sends files to your other apps.
  • Delete removes them (folders and everything inside), after a confirm.

Migrate in

Import your existing servers

Bring hosts over from another app.

  • On the Hosts screen, tap the import icon (next to +).
  • Paste your OpenSSH config or a PuTTY export, or pick the file, then tap Scan.
  • Review the servers it found, tick which to bring in, and import. Add one key or password for all of them, or add keys later when you first connect.

Tunnels & Sessions

Port forwarding, server tabs, the key bar, preset commands, and how sessions live and die.

SSH -L on your phone

Port forwarding (tunnels)

Reach a service only your server can see.

  • Open the terminal menu and tap Port forwarding (the session must be connected). A tunnel opens a port on this phone and pipes connections through SSH to a remote address — just like ssh -L.
  • Tap Add tunnel: pick a local port (1024–65535), a remote host (usually localhost, from the server's point of view), and the remote port.
  • Example: forward local 5432 to the server's database at localhost:5432, then point a DB app at 127.0.0.1:5432 — it reaches a DB that only listens on the server's loopback.
  • Tap Start (chip turns green) and Stop to free the port. Tunnels bind to 127.0.0.1 only, auto-close on disconnect, and reappear next time.

Multi-session

Switch between servers (tabs)

Tap the host name at the top.

  • Tap the host name (with the down-arrow) at the top of the terminal to open the switcher.
  • Pick any saved server to jump to it instantly — your other connections keep running in the background, so switching back resumes where you left off.
  • Open Tabs lists every live session; tap to switch or close one. The duplicate icon opens a second session to a server, and each row has a Files (SFTP) shortcut.

Tap-to-run library

Preset Commands & AI setup

The lightning button, bottom-right.

  • Tap the lightning button for a searchable library of common commands grouped into cards — System, Docker, Git, Networking, Files, Services, Updates, Web/SSL and more.
  • Tap a command and it runs instantly (ShellSage clears the prompt, types it, presses Enter). Destructive commands still ask you to confirm first.
  • AI setup: one tap installs Claude Code, Codex, Aider, or Ollama on your server, plus Launch shortcuts and a “Check what's installed” probe.
  • Custom Commands (locked group on top): tap + to save your own label + command for health checks, deploys, or launching Claude.

The toolbar

Terminal key bar & quick keys

The keys above your keyboard.

  • The system keyboard stays hidden so you see only ShellSage's keys; tap the terminal (or menu → Show keyboard) to free-type. As you type, command suggestions surface from your history + catalog.
  • A fixed inverted-T arrow cluster (↑ ↓ ← →) never moves, alongside a remappable pwd key and the menu key. More keys (•••) opens Home/End/PgUp/PgDn, Ctrl-combos, symbols, and F1–F12.
  • Customize keys lets you pick exactly which keys sit around the arrows; saved commands can become tappable keyboard buttons or Quick Launch entries.
  • Most Used learns your habits and pins them; chain steps with && (put interactive tools last); Auto-answer Yes presses Yes on confirmations for commands you trust. The Aa button sets font size.

Staying connected

Inactivity & background sessions

When we keep you alive, and when we disconnect.

  • Switch to another app and your SSH session keeps running — a “ShellSage session active” notification shows while it's held open.
  • Running work keeps the session alive: a command in progress (or Claude / Codex) marks it busy and pauses the idle timer, so even a long silent task is never disconnected.
  • Idle at an empty prompt for ~10 minutes, we disconnect to save battery — with a 2-minute Still there? countdown first. Tap Stay connected (or do anything) to keep it.
  • Keep-alive pings hold the connection against idle network drops, and ShellSage auto-reconnects a dropped session when you return.

Clean exit

Disconnecting & signing out

Both stop what's running on your server.

  • Disconnect breaks the session hard: ShellSage sends Ctrl+C twice (enough to quit Claude or Codex), then closes the connection — nothing is left burning tokens.
  • Signing out does the same to every live session at once. Because that's destructive to running work, it asks first: Stay Logged In or Sign Out.
  • If Claude/Codex is mid-build, choose Stay Logged In and disconnect once it finishes.
  • Note: anything you deliberately detached (nohup, &, tmux, screen) keeps running — Disconnect only stops what's attached to your session.

AI & Sage

The assistant that lives inside the shell — explain, fix, dictate, diagnose, and your own key.

The Sage's read

AI Assist — Explain & Fix

One tap on any command line.

  • After a command runs (error or not), long-press the line or tap Ask Sage in the terminal bar. A sheet opens with Explain and Fix.
  • Explain gives a plain-English breakdown; Fix suggests a safer/correct command with a Run-on-host button.
  • For a back-and-forth, tap the ✨ AI button for Sage's chat — ask anything, attach a screenshot, or dictate, then tap any suggested command to drop it at your prompt.
  • Cached responses arrive instantly with a “cached” badge. Rate-limited to 60 calls/hour on trial, 600/hour on Pro.

Describe it, get it

Ask Sage for a command

Plain English in, ready-to-run command out.

  • Open the menu and tap Ask Sage for a command.
  • Type what you want — e.g. “find files over 1 GB in /var” or “show which process is using port 8080”.
  • Sage writes one ready-to-use command. Tap Insert to read it first, or Run to run it right away.
  • Great when you know what you want done but not the exact command or flags.

BYOK

Bring Your Own Key

Run AI on your own OpenAI or Claude account.

  • All of ShellSage's AI features can run on your own OpenAI or Anthropic (Claude) key instead of the shared allowance — no monthly caps, billed by your provider.
  • Available on Pro and Team plans (Free shows an upgrade prompt).
  • Set it up in Account → AI → Use your own key: choose the provider and paste your key (sk- for OpenAI, sk-ant- for Anthropic), then Save.
  • We verify the key, store it encrypted, and only ever show the last 4 characters. Remove or replace it anytime.

One correct command

Install a tool the right way

The one install line that fits your server.

  • Open the menu and tap Install a tool. ShellSage quietly checks your server's system, chip, and package manager — nothing shows in your terminal.
  • Pick a tool (Node, Docker, Git, Python, Claude Code, Codex…) and get the one command that fits this exact server — no guessing.
  • Tap Run, then Check it installed to confirm the version. If detection fails, pick the system yourself (Linux, macOS, WSL, Windows).
  • Commands are kept up to date server-side, so they improve without an app update.

Talk to your terminal

Voice dictation

The mic, bottom-left.

  • Tap the mic and speak — your words type into the live prompt as you talk. The mic becomes a cyan Stop button while listening.
  • It keeps listening through short pauses and only stops when you tap Stop or after ~5 seconds of silence. Press Enter to run.
  • Voice types exactly what you say, so it's best for words, file paths, and talking to Sage. For symbol-heavy commands, the on-screen keyboard is faster — tap the screen anytime.

Vision

Diagnose with a screenshot or photo

Two ways to use it — pick what fits.

  • Tap the image button and pick a screenshot or photo. It uploads privately and you get two choices.
  • Ask Sage about it opens Sage with the image attached — it tells you what's wrong in plain English, on any server, whether or not AI is installed there.
  • Save onto this server downloads the image to /tmp/shellsage/ so an AI CLI running on that server (Claude Code, codex) can open the file.
  • Privacy: uploaded images are stored privately for 24 hours, then automatically deleted.

You hold the wheel

AI assistant — Control vs Full Automation

True automation inside SSH, with a Yes / No you control.

  • When you Launch Claude or Codex, ShellSage asks how it should run: I Want Control or Full Automation (for the current session only).
  • Whenever your AI (or any command) asks a yes/no question, a focus overlay slides over the key bar — big Yes / No keys take centre stage. This detection is built-in pattern matching, not AI, so it's instant and free.
  • I Want Control (recommended): your AI pauses on every “are you sure?” and waits for your tap. Nothing runs without approval.
  • Full Automation: ShellSage taps Yes for you on every confirmation so the AI runs end-to-end, even as root. Only choose it if you trust the assistant and have backups — you are responsible for whatever it runs. Switch back to Control by reconnecting.

Security & Privacy

Auth troubleshooting, the destructive-command shield, biometrics, and what we store.

Troubleshooting

Why is my connection failing?

Auth errors, the most common ones.

  • “All authentication methods failed” usually means the key, the username, or the key type. Work through the three below.
  • Username is case-sensitive: it must be root, not ROOT. A capitalised username fails as an unknown user.
  • Use an Ed25519 key, not RSA. Modern servers (OpenSSH 9+) reject older RSA-SHA1 signatures, so a valid RSA key can still fail. Generate one with ssh-keygen -t ed25519.
  • Key must be trusted: the public half must be in the server's ~/.ssh/authorized_keys. “Host unreachable” means wrong IP/port or a down server. Still stuck? Email shellsage@aicanadiansolutions.ca with the error pill text.

Blast-radius guard

The destructive command shield

When the Sage flags something dangerous.

  • If a Fix matches a destructive pattern (rm -rf /, dd of=/dev/sda, mkfs, a fork bomb…), the Run button is replaced with a red warning.
  • You must type the command character-by-character to confirm before it executes.
  • ShellSage never auto-runs anything destructive — even with “Always run on tap” on, it still stops and asks first.
  • Prod-tagged hosts skip AI Run entirely; you copy the suggestion and paste it manually.

Face ID / fingerprint

Biometric — when it fires & what it protects

App-level and per-host protection.

  • Biometric protects the app itself: after your first sign-in, ShellSage reopens behind Face ID / fingerprint, and you can Unlock with biometrics instead of typing your password.
  • Per host: toggle Require biometric ON when adding or editing a host — every tap on that card then triggers Face ID / fingerprint / device passcode before it connects.
  • Falls back to the device passcode if biometrics aren't enrolled. Recommended ON for all prod hosts — the lock badge confirms it's active.
  • Authentication cancelled? Just tap the host again to retry.

Only what's needed

Privacy & what we store

Sessions stay private.

  • Your terminal sessions stay private — we don't record your commands, keystrokes, or scrollback.
  • We do store your saved hosts so they sync: the label, address, port, username, and sign-in credential — kept encrypted and access-controlled.
  • AI help isn't kept unless you turn on assistant history. A file you send to a host is stored privately for 24 hours, then deleted automatically.
  • Read the full Privacy Policy & Terms any time at /privacy.

Erase

Wipe a host or everything

Per-host or account-wide.

  • Forget this host — long-press the host card → Delete → confirm. It's removed from this device and from your account.
  • Wipe everything — Settings → Account → Wipe. Biometric-gated, with a 24-hour grace period, then a permanent removal of your saved hosts and credentials.
  • Signing out disconnects every live session on this device.

Account & Updates

Cross-device hosts, in-app updates, gotchas, and how to reach a human.

Save once, sign in anywhere

Your hosts, on every device

Hosts live with your account.

  • Your saved hosts live with your account, so signing in on a new phone shows them already there — no re-adding.
  • Each host's credential (key or password) is stored encrypted and fetched only at the moment you connect.
  • Your host list loads instantly and stays viewable offline; adding, editing, or connecting needs a connection to sync and unlock securely.
  • Sign into a different account and you'll see that account's own hosts — accounts never share data on a shared phone.

In-app, one tap

Updates

No browser, no file hunting.

  • When a new version ships, a banner appears on launch. Tap What's new for the changelog, then Download.
  • The update downloads in-app with a 0–100% progress bar, then the Android installer opens automatically — you stay in ShellSage the whole time.
  • First time only, Android asks you to allow installing unknown apps. Flip the switch, come back, tap Download again.
  • Forced updates lock you to the latest when a critical security fix ships. Auto-check runs on every cold start.

Heads-up

Common gotchas

The stuff that's bitten testers.

  • Background behaviour differs by platform: Android keeps sessions alive via a foreground service; iOS terminates background SSH — use tmux or screen for resumable work.
  • Pasting a key with Windows CRLF line endings? Strip them — the parser expects LF only.
  • Special-character keys (Ctrl / Esc / Tab) live in the on-screen modifier rows of the key bar.

A human reads it

Get help

Direct line to the founder.

  • shellsage@aicanadiansolutions.ca — support: general questions, bug reports, feature requests.
  • security@aicanadiansolutions.ca — security vulnerability reports. Responsible disclosure honored, 90-day window.
  • Every message is read by the founder, with a reply within 24 hours on weekdays.

Want the long version?

These are the quick answers. For step-by-step walkthroughs with screenshots — setting up a server from scratch, a deep dive on tunnels, getting the most out of the Sage — read the in-depth tutorials, then grab the app and try it on your own box.

Frequently asked

ShellSage FAQ.

The questions people ask most about running SSH, SFTP, and AI from a phone.

Why is my SSH connection failing in ShellSage?
Most connection failures are authentication errors. Check three things: your username is case-sensitive (use root, not ROOT); use a modern Ed25519 key, since OpenSSH 9+ servers reject older RSA-SHA1 signatures so a valid RSA key can still fail; and make sure the public half of your key is in the server's ~/.ssh/authorized_keys. “Host unreachable” means a wrong IP or port or a down server, and “Permission denied (publickey,password)” means the server disabled password auth and your key isn't trusted yet.
How do I generate an SSH key on my phone?
Open the terminal menu (the three-lines icon) and tap Generate SSH key, or tap Generate new key while adding or editing a host. ShellSage creates a modern ed25519 key right on your phone. Copy the public key into the server's ~/.ssh/authorized_keys, or if you're already connected tap Install on <host> to add it in one tap. The private key is held in encrypted secure storage on your phone; when you save the host, it's also uploaded to our servers and stored encrypted at rest (AES-256) so the host appears on every device you sign in on — that's encryption at rest, not end-to-end. No laptop or desktop terminal required.
Is my data private — what does ShellSage store?
Your terminal sessions stay private: ShellSage does not record your commands, keystrokes, or scrollback. It does store your saved hosts so they sync across devices — the label, address, port, username, and the sign-in credential (key or password), all kept encrypted and access-controlled. AI help is processed to answer you and isn't kept unless you turn on assistant history, and a file you send to a host is stored privately for 24 hours, then deleted automatically.
When does biometric protection apply, and what does it protect?
After your first sign-in, ShellSage reopens behind Face ID or fingerprint, and you can tap Unlock with biometrics instead of typing your password. Per host, toggle Require biometric on when adding or editing a host, and every tap on that host's card then triggers Face ID, fingerprint, or device passcode before it unlocks and connects. It falls back to the device passcode if biometrics aren't enrolled, and it's recommended on for all production hosts — a small lock badge on the card confirms it's active.
What is the destructive command shield?
If an AI Fix suggestion matches a destructive pattern (rm -rf /, dd of=/dev/sda, mkfs, a fork bomb, and similar), the Run button is replaced with a red warning and you must type the command character-by-character to confirm before it executes. ShellSage never auto-runs anything destructive — even with “Always run on tap” enabled, a destructive command still stops and asks first — and prod-tagged hosts skip AI Run entirely so you copy and paste manually.
Can I use my own OpenAI or Claude API key (BYOK)?
Yes. On Pro and Team plans, open Account → AI → Use your own key, choose OpenAI or Anthropic (Claude), and paste your key — it starts with sk- for OpenAI or sk-ant- for Anthropic. All of ShellSage's AI features (Ask Sage, Explain, Fix, and the command bar) then run on your own account with no monthly caps, billed by your provider instead of us. The key is verified with the provider, stored encrypted, and only the last 4 characters are ever shown; you can remove or replace it anytime.
What is port forwarding (SSH tunnels) in ShellSage?
A tunnel opens a port on your phone and pipes anything that connects to it through your SSH session to a remote address — exactly like ssh -L on a desktop. In the terminal's menu tap Port forwarding (the session must be connected), add a local port (1024–65535), a remote host (usually localhost, from the server's point of view), and the remote port. For example, forward local 5432 to the server's internal database at localhost:5432, then point a database app at 127.0.0.1:5432. Tunnels bind to 127.0.0.1 only and auto-close when the SSH session disconnects.
Does ShellSage keep SSH sessions alive in the background?
On Android, sessions keep running when you switch apps via a foreground service (the “session active” notification), and any running command or AI tool keeps the session alive indefinitely; an idle session at a bare prompt disconnects after about 10 minutes, with a 2-minute “Still there?” countdown first so you can tap Stay connected. On iOS the system forbids long-running background SSH, so a backgrounded session drops and reconnects when you reopen the app — use tmux or screen on the server for uninterrupted long tasks there.
How do I import my existing SSH servers into ShellSage?
On the Hosts screen, tap the import icon next to the plus button. Paste your OpenSSH config or a PuTTY export, or pick the file, then tap Scan. Review the servers it found, tick which ones to bring in, and import. You can add one key or password for all of them at once, or add keys later when you first connect to each host.
What's the difference between 'I Want Control' and 'Full Automation'?
When you launch Claude or Codex, ShellSage asks how it should run for that session. I Want Control (recommended) pauses your AI on every yes/no confirmation and waits for you to tap Yes or No — nothing runs without your approval. Full Automation taps Yes for you on every confirmation so the AI runs end-to-end without stopping, even when you connect as root. Only choose Full Automation if you trust the assistant and have backups in place; you are responsible for whatever it runs, and you can switch back to Control by reconnecting.
How do app updates work in ShellSage?
When a new version ships, a banner appears on launch. Tap What's new to read the changelog, then Download. The update downloads inside the app with a 0–100% progress bar and the Android installer opens automatically — you never dig through a browser. The first time only, Android asks you to allow ShellSage to install unknown apps. Critical security fixes ship as forced updates you can't decline, and an auto-check runs on every cold start.
How do I get help or report a problem with ShellSage?
Email shellsage@aicanadiansolutions.ca for general questions, bug reports, and feature requests, or security@aicanadiansolutions.ca to report a security vulnerability (responsible disclosure honored, with a 90-day window). Every message is read by the founder, with a reply within 24 hours on weekdays.
Download ShellSage free →