Every tool.
One app.
Kammel packs an SSH client, a real terminal, an SFTP explorer, a code editor, a git panel, a Docker console and port forwarding into one app you can drive with your thumbs. Here is all of it, in detail.
Connect
once.
Save a server, open as many shells on it as you need, and keep them alive while you do something else on your phone.
Saved servers
Host, port, user and either a password or a private key — plus the tunnels that belong to that server. Edit one form, connect from one tap.
Terminal tabs
Several SSH sessions open at the same time, each with its own shell, working directory and status. Tap to switch, double-tap to rename, close what you no longer need.
One-tap reconnect
When a connection drops, a strip appears over the terminal. One tap re-establishes the session and brings back exactly the tunnels that were up.
Sessions that survive
A native Android service keeps the process — and every open shell — running while the app is in the background, the way Termux does.
Device SSH key
Generate a key pair on the phone and copy the public half straight into a server's authorized_keys. No laptop in the loop.
Same app on the desktop
The Linux x86_64 build is the same codebase, the same profiles and the same shortcuts — not a stripped-down port.
Secrets stay
on device.
Nothing is uploaded, synced or phoned home. The only traffic Kammel makes is the SSH connection you asked for.
Encrypted key storage
Passwords and private keys live in the Android Keystore (via EncryptedSharedPreferences) or in libsecret on Linux — never in plain text, never in a config file.
Host key pinning
A new server is confirmed once and pinned. A key that later changes blocks the connection instead of shrugging it off — the classic MITM signal, taken seriously.
Real fingerprints
Fingerprints are OpenSSH-format SHA256:… strings, byte-for-byte the ones ssh-keygen -lf prints, so you can compare them against the server you control.
Known-hosts manager
Every pinned server is listed in Settings with its fingerprint, and any entry can be forgotten when a host is legitimately rekeyed.
App lock
Optional fingerprint or face unlock when the app comes back to the foreground, falling back to the phone's own PIN, pattern or password.
No account required
No sign-up, no analytics, no crash pings. Delete the app and nothing of yours is left anywhere else.
A terminal
built for thumbs.
A real emulator — full-screen TUIs, colours, mouse reporting — wrapped in the controls a physical keyboard would normally give you.
Full xterm
256 colours, alternate screen buffer and mouse support, so vim, htop, tmux and TUI agents render the way they do on a desktop.
Programmable key rows
Ctrl-C, Esc, Tab, arrows, pipes and your own commands as tappable keys. Reorder them, resize them, page through them, add the ones you actually use.
Sticky Ctrl & Shift
Arm a modifier, then press the next key — the combination a soft keyboard can't otherwise produce.
Pinch to resize
Two fingers scale the terminal font live and the size is remembered. Single-finger scrolling and text selection keep working untouched.
Fullscreen mode
Collapse every piece of app chrome and hand the whole screen to the shell, with a floating pill to come back.
Link grabber
Scans the buffer for URLs and lists them newest-first — the fix for a dev server or tunnel link that scrolled away three builds ago.
Copy without a mouse
Handle-based selection over the terminal grid for copying output, plus paste straight back into the shell.
Run agents
from anywhere.
Kammel is built around the loop of driving a coding agent on a remote machine: it tells you when the agent needs you, and gets context to it fast.
Agent notifications
When a backgrounded session signals that it needs input, a heads-up notification fires and takes you straight to that tab.
Alerts you can trust
Per-event intensity, quiet hours, detector sensitivity, per-session mute and a test button — plus a log of what fired and why, so a misfire can be diagnosed instead of remembered.
Prompt library
Save the instructions you send over and over and insert them as a bracketed paste — dropped into the prompt without submitting, so you can still edit before you commit.
Dictate a prompt
Compose with the device's speech recognizer when typing a long instruction on a phone keyboard isn't worth it.
Attach anything
Pick a file or image; Kammel uploads it over SFTP and writes the remote path into the prompt, with a live progress ring while it transfers.
Paste a screenshot
Insert an image straight from the soft keyboard. Same path: uploaded, then handed to the agent as a file it can open.
Browse, edit,
preview.
Every file operation runs over SFTP on the session you're already connected to — no second app, no syncing a copy down first.
Remote file system
Navigate the server, create files and folders, rename and delete, multi-select, copy and paste. The Android back gesture can walk you up the tree instead of leaving.
Upload & download
Send files from the phone, or pull remote ones into a folder you choose — with a live progress bar and a result strip that waits for you if you switched tabs mid-transfer.
Syntax-highlighted code
Open a source file and edit it with highlighting and a dirty-state indicator; saving writes back over SFTP. The connection is captured when the file opens, so switching sessions never breaks the edit.
Find it in a long directory
Live filtering over the current listing, for the servers where /etc has three hundred entries.
PDF, Markdown & media
Read PDFs, render Markdown at a zoom level you set, view raster images and SVGs, and play video or audio — all inside the app.
Terminal follows the explorer
Optionally keep the shell's working directory and the file browser's path pointed at the same place.
Source control
in the panel.
A git client that drives the repository where it actually lives: on the server over an SSH exec channel, or on the machine running the Linux build.
Staged & unstaged, split
Parsed from git status --porcelain=v1 -z, keeping the index and worktree columns separate — and safe with paths containing spaces, quotes or renames.
The whole everyday loop
Stage, unstage, discard, commit and amend, fetch, pull (with or without rebase) and push, without typing a single command.
Coloured unified diff
Tap a changed file to read its diff, staged or unstaged, rendered with proper additions and deletions instead of raw patch text.
Lazy project browser
Walk the repository from the same panel and long-press any file to send it to the explorer and editor.
No shell injection
Commands are built from argument lists and quoted individually, so a commit message can contain quotes, $ or newlines and still be exactly what you typed.
Fails instead of hanging
Terminal prompts are disabled and ssh runs with BatchMode, so a push that needs a passphrase reports an error rather than freezing the channel.
Audit the box
without typing.
A dedicated console with its own SSH client, independent from your terminal tabs, for the operations you'd otherwise google the flags for.
Resources at a glance
CPU, memory, disk and service state on live gauges, so a server that's misbehaving announces itself before you start reading logs.
Container control
List containers with state filters, start and stop them with a tap, and inspect the ports they publish.
Images, volumes & networks
Browse everything the daemon holds, check what's eating disk with system usage, and drive Compose projects and their logs.
Tables & rows
Connect a database profile and read its tables in a row grid, without shelling into a client.
Schema map
An entity-relationship view of the schema — the fastest way to remember how a project's tables actually join.
SQL console
Write and run queries against the connected database and read the result inline.
Forward ports,
watch traffic.
All three OpenSSH forwarding modes, configured per server and managed with the session that carries them.
Local, remote & SOCKS5
Reach a database bound to the server's loopback, expose a local port back to the host, or point an app at a SOCKS5 proxy running over the connection.
Byte counters
A dedicated screen shows every tunnel's throughput, and the terminal toolbar carries a badge that turns red the moment one fails.
Tied to the session
Tunnels start when the session connects, come back on reconnect exactly as they were, and apply live when you edit them — no reconnect needed.
Loopback by default
A forwarded port is only reachable from the phone itself unless you explicitly expose it to the LAN.
Closes when unused
Optionally shut a tunnel down after N minutes with zero open connections — it narrows the exposure window and never cuts a transfer in progress.
Shape it
around you.
A tool you use every day should look and behave the way you want it to.
Themes & accent colour
Switch the app theme and pick an accent — including custom colours you mix yourself and keep in the palette.
Colour schemes & fonts
Choose the terminal palette, the monospace font and the size for both the terminal and the editor.
Shortcut editor
Build the quick-key rows yourself: labels, payloads, order, key height and width, across as many pages as you need.
Interface density
Adjust icon scale so the UI fits your screen and your eyes rather than an average of both.
Fully localised
The whole interface ships in both languages and switches instantly, without losing your open sessions.
In-app updates
Kammel checks GitHub Releases, shows the release notes and installs the new build for you.
Specs, not
promises.
Everything above runs on the build you can download right now — and on the source you can read line by line.
- Platforms
- Android 8+ · Linux x86_64
- Protocols
- SSH-2 · SFTP · SOCKS5
- Auth
- Password · ed25519 & RSA keys
- Host keys
- SHA256 pinning (TOFU)
- Secret storage
- Android Keystore · libsecret
- Built with
- Flutter · dartssh2 · xterm
- Licence
- MIT — open source
- Price
- Free. No account, no telemetry