A lightweight, open-source SSH, SFTP, FTP and S3 client for macOS, Windows and Linux.
Manage all your servers and remote storage from one fast, native app: no account, no cloud and no telemetry.
Website · Download · User guide
Features · Install · Build from source · Docs · Contributing
If K-Shell is useful to you, a ⭐ on GitHub helps other people find it.
K-Shell is a modern take on the Termius-style workflow, built with Rust + Tauri 2 for the
networking core and Vue 3 + xterm.js (WebGL) for the UI. Installers are small: about
4 MB on Windows, 7 MB as a .deb and 11 MB as a universal macOS .dmg.
| Area | What you get |
|---|---|
| Hosts | Groups, tags, colours, automatic OS detection, search, recent hosts, grid/list view, duplicate, test connection, import from ~/.ssh/config |
| Terminal | Tabs (rename, reopened on launch), split panes (side by side / stacked, resizable; drag panes by their header to rearrange, drag a tab onto a terminal to merge it as a split), broadcast input to every pane of a tab, drop files onto a terminal to type their paths, find, copy-on-select, right-click paste, 25 colour themes, dark and light (optionally a separate one for light mode), custom bash/zsh prompt builder, history autosuggestions, startup command, one-key reconnect, automatic SSH reconnect, follows the shell's working directory, keyword highlighting, session logs, local shell, workspaces that group local project folders (open one or all in their folder, with an optional startup command) |
| Authentication | Password, keyboard-interactive, keys from the built-in keychain, ssh-agent / Pageant, default ~/.ssh/id_* keys |
| Jump hosts | ProxyJump chains (laptop → bastion → … → target) |
| Security | Trust-on-first-use host keys with mismatch blocking, honours ~/.ssh/known_hosts, vault encrypted with XChaCha20-Poly1305 and its key kept in the OS keychain |
| Keychain | Grid/list view, generate Ed25519 / ECDSA / RSA-4096 keys (optional passphrase), import, copy public key, install on a server (ssh-copy-id) |
| File manager | Dual pane between any pair of Local / SFTP / FTP / FTPS / S3 / Azure Blob / GCS; drag between panes, drop files from your OS, recursive folders, parallel transfer queue with speed and cancel, rename, delete, chmod, built-in code editor with syntax highlighting, image preview, open any file in its default app (remote files are offered for upload when saved there) |
| Object storage | Any S3-compatible service (AWS S3, Cloudflare R2, MinIO, DigitalOcean Spaces, Wasabi, Backblaze B2, Tencent COS, Scaleway, Hetzner, Linode, Oracle, …) with path-style or virtual-hosted URLs, plus native Azure Blob Storage and Google Cloud Storage (service-account key). Share links: pre-signed for S3, read-only SAS for Azure, signed URL for GCS (needs a service-account key; not yet tested against real GCS) |
| Port forwarding | Local (-L), remote (-R) and dynamic SOCKS5 (-D) tunnels through your saved hosts, with optional auto-start; paste an ssh -L … command to create rules, copy any rule back as an ssh command |
| Snippets | Save commands (with {{variables}} asked for when they run), paste them into a terminal, or run them on many hosts at once with per-host output |
| Updates | Signed in-app updates: an Update K-Shell button appears when a new version is out, and one click installs it and restarts |
| Everything else | Command palette (⌘K) with quick connect user@host:port, encrypted vault backup and restore |
Download the installer for your system from keselyoleren.com/download,
which picks the right file automatically, or from the Releases
page: .dmg (macOS, Apple Silicon and Intel), .msi/.exe (Windows), .deb/.rpm/.AppImage (Linux).
Once installed, K-Shell updates itself: an Update K-Shell button appears when a new version is out.
macOS: builds are not notarised yet. On first launch, open the app once, then go to System Settings → Privacy & Security and click Open Anyway.
Prerequisites: Rust ≥ 1.85, Node.js ≥ 20, and the Tauri system dependencies for your OS.
git clone https://github.com/keselyoleren/k-shell.git kshell
cd kshell
npm install
npm run app:dev # run with hot reload
npm run app:build # produce an installer in src-tauri/target/release/bundle/See docs/DEVELOPMENT.md for per-OS setup, testing and debugging tips.
Every shortcut can be changed, removed or reset in Settings → Keyboard shortcuts. Defaults:
| macOS | Windows / Linux | Action |
|---|---|---|
| ⌘K | Ctrl+Shift+K | Command palette / quick connect |
| ⌘, | Ctrl+, | Open settings |
| ⌘T | Ctrl+Shift+T | New local terminal |
| ⌘W | Ctrl+Shift+W | Close tab |
| ⌃⇥ / ⌃⇧⇥ | Ctrl+Tab / Ctrl+Shift+Tab | Next / previous tab |
| ⌘D | Ctrl+Shift+D | Split right |
| ⇧⌘D | Ctrl+Shift+E | Split down |
| ⌘] / ⌘[ | Ctrl+Shift+] / [ | Focus next / previous pane |
| ⌥⌘I | Ctrl+Shift+I | Broadcast input to all panes of the tab |
| ⌘F | Ctrl+Shift+F | Find in terminal |
| → / ⌥→ | → / Ctrl+→ | Accept autosuggestion / its next word |
| ⌘= / ⌘- / ⌘0 | Ctrl+= / Ctrl+- / Ctrl+0 | Zoom in / out / reset |
| ⌘B | Ctrl+Shift+B | Show / hide the sidebar |
| ⌘1 | Ctrl+Shift+1 | Host list (Vault) |
| ⌘2 … ⌘9 | Ctrl+Shift+2 … 9 | Switch to an open tab |
Everything is stored locally in one encrypted file in your OS app-data directory:
| OS | Path |
|---|---|
| macOS | ~/Library/Application Support/dev.keselyoleren.kshell/vault.bin |
| Windows | %APPDATA%\dev.keselyoleren.kshell\vault.bin |
| Linux | ~/.local/share/dev.keselyoleren.kshell/vault.bin |
Development builds use vault-dev.bin so they never touch your real data. Use Settings → Encrypted backup to move
your vault between machines.
- User guide: how to use every feature, shortcuts, settings, security and troubleshooting
For contributors:
- Architecture: how the pieces fit together, and how to add a protocol or a command
- Development guide: setup, scripts, tests, debugging, releasing
- IPC reference: every command the UI can call
- Contributing · Code of Conduct · Security policy · Changelog
MIT © K-Shell contributors





