Orch term
Search features…Ctrl K

Flagship features · SSH · SFTP native russh

SSH · SFTP

A MobaXterm-style client that stacks a terminal, remote file browsing (SFTP), extra shells, and port forwarding on top of a single authenticated SSH connection. Register a host → connect in-tab → edit and transfer remotely, all without leaving the app.

Connecting

The entry point for connecting is the SSH icon on the right rail. Click it and the connection manager opens as a right-hand panel, showing your saved hosts (groups · search) and current sessions in one place. Clicking outside or pressing Escape does not close it (always open).

  1. Open the connection manager from the rail

    Click a host and a tab opens in the current Space and starts connecting (saved profiles come pre-filled; double-click to reconnect immediately). The header's New host, Vault, and Port forwarding open from here too.

    SSH connection manager — right-docked panel2 connected
    SSH hosts
    Work3
    🖥web-prod-01×2deploy · 22
    🖥web-prod-02×1deploy · 22
    🗄db-02postgres · 22
    Personal2
    🖥home-naszendy · 22
    🍓raspberrypipi · 2222
    Cloud1
    Entry is the icon at the right of the title bar · green dot = connected, ×N = session count (click to jump). Secrets are never stored — only host info is kept.
  2. In-tab connect form

    A connect form appears inside a new tab. Fill in host, user, and port, then pick an auth method — Password / Public key (key path + optional passphrase) / SSH Agent. On success the tab becomes the SSH terminal itself. If a connection fails, the app tells you the specific reason — key file not found / passphrase required / other authentication failure. Private-key paths may start with ~ (e.g. ~/.ssh/id_rsa), which expands to your home directory.

    New SSH connection — auth: public key
    bash
    New SSH connection

    SSH connection

    e.g. deploy@web-prod-01.example.com
    Authentication
    Switch among the three auth methods (password · public key · SSH Agent) with the segmented control. Even on failure, host and user are preserved and the form reappears — and it tells you why it failed (key missing, passphrase required, etc.) so you can retry right away.

Host-key trust (TOFU)

For a server you've never seen, or when its host key changes, the connection pauses and a fingerprint confirmation dialog appears. Accept it and it's remembered in known_hosts so future connections are automatic (TOFU = trust on first use).

Host-key confirmationfirst connect
Accept and it's remembered in known_hosts and connects. If the key changes, a red warning appears in the same spot.
Don't blindly accept a changed key — if a previously trusted host's key differs, the dialog turns red. Unless it's a legitimate server reinstall, it could be a man-in-the-middle (MITM) attack, so don't accept until an admin confirms.

Export · import profiles

In the connection manager you add and edit hosts and use groups, search, and double-click reconnect. Secrets are never stored — only info like host, user, port, auth method, and key path is kept (a key path is just a location reference, not the key contents).

Import ~/.ssh/config
# hosts from ~/.ssh/config become profiles as-is Host web-prod-01 HostName 10.0.3.11 User deploy Port 22 IdentityFile ~/.ssh/id_ed25519 → auth: public key Host db-02 HostName 10.0.4.20 User postgres ──────────────────────────────────────────── imported: 2 hosts · 0 secrets (metadata only)
Passwords and passphrases aren't part of the import — enter them at connect time or have the vault supply them automatically.

SFTP remote explorer

When you connect over SSH, the left file explorer switches automatically to that server's remote tree (MobaXterm-style). It expands the remote home over the same connection, no extra login.

Explorer — remote tree (SFTP)remote
deploy@web-prod-01 ▾
📁/home/deploy
📁app
📄docker-compose.yml
📄.env
📄deploy.sh
📁releases
📁logs
📄.bashrc
Header user@host = remote origin (switch local↔remote in the switcher). Double-click to edit remotely.

Files over 5MB or binary won't open in the editor, just as locally. Remote paths are always /-style (POSIX).

Create · rename · delete remote files

Right-click or use to create, rename, and delete files and folders in the remote tree — the same flow as the local explorer.

Remote tree — right-click context menu
deploy@web-prod-01 ▾
📁/home/deploy
📁releases
📄deploy.sh
"Open in terminal" opens a new shell tab with no re-auth. Delete (permanent) can't be undone since there's no recycle bin.

File transfer (upload · download)

Transfer files and folders local↔remote. Download via right-click on the remote tree → "Download"; upload via dual-pane drag (below). Even large files transfer directly without passing through app memory.

Download in progress — inline in Explorer
deploy@web-prod-01 ▾
📁releases
📄v0.1.37.tar.gz
📄v0.1.36.tar.gz
v0.1.37.tar.gz62% · 3/5
deploy.sh already exists — what would you like to do?
The progress bar, conflicts, and cancel are all shown inside the explorer (no separate popup).

Dual-pane SFTP (drag to transfer)

The "Open SFTP" button on an SSH terminal tab opens the same connection's remote tree as a separate tab, and you drag files between the left explorer ↔ the SFTP tab to transfer (MobaXterm dual-panel style). With multiple connections, a picker asks which one to attach to.

Dual pane — cross-pane drag upload
local · orchterm ▾
📁dist
📦release.tar.gz
📄manifest.json
SFTP · web-prod-01
📁/home/deploy/app
📄docker-compose.yml
📁incoming  ⇠ drop
📄deploy.sh
📦 release.tar.gz → upload
Drag from left (local) → right (remote) to upload, the reverse to download (direction is detected automatically).

Dragging from the OS desktop or file manager isn't supported — transfers are done by dragging between the two panels inside the app.

Follow the shell (cd → tree sync)

When you cd in the SSH shell, the remote pane and the left remote explorer follow to that path automatically (shell→tree, one-way). It's off by default and only works once you flip the toggle on.

Follow CWD — just after turning on
deploy@web-prod-01
Follow CWD
shell cd → left tree + remote pane sync
deploy@web-prod-01:~$ # ↓ one setup line echoed when toggled on (intended behavior) deploy@web-prod-01:~$ if [ -n "$ZSH_VERSION" ]; then …; else PROMPT_COMMAND='printf …'; fi deploy@web-prod-01:~$ cd /home/deploy/app/releases/v0.1.37 ▸ left tree + remote pane moved to /home/deploy/app/releases/v0.1.37 deploy@web-prod-01:.../v0.1.37$
Turn it on and one setup line appears in the scrollback (normal). After that, every cd makes the tree follow to the same path.

Credential vault

An optional vault that stores SSH secrets (passwords · key passphrases) encrypted and uses them automatically when you connect to a saved profile (no need to type them each time). Open it with the vault icon in the connection manager header.

Credential vault — unlocklocked
Unlock the vault with the master password. Once unlocked, stored secrets are used automatically when connecting.

Port-forwarding tunnel

Create local (-L) and dynamic SOCKS5 (-D) port-forwarding tunnels on top of an SSH connection. The config is saved in the profile (host:port only, not a secret) and established automatically on a successful connect. It binds to 127.0.0.1 only, so it isn't exposed to the LAN.

Port forwarding — web-prod-01
green dot = established, stop instantly with . Saved in the profile and re-established automatically when you connect.

tmux session persistence — remote sessions that survive disconnects

Turn on "tmux session persistence" in a profile and, on connect, a profile-specific tmux session is created on the remote and attached to. Even if the network drops or you close the window or tab, the remote session keeps running — builds, dev servers, log tails, and long-running work don't die. Reconnect and you're re-attached to the same session automatically, picking up right where the screen was.

New host — tmux session persistence option
SSH profile
web-prod-0122
deploy
Turned on with a single profile checkbox — when on, the connection is wrapped in tmux new -A -s orchterm-<profile>.

⚠️ The remote host must have tmux installed for sessions to persist (otherwise it connects with a normal shell automatically). This setting is preserved across profile export/import too.

To many servers at once — MultiExec broadcast

When two or more SSH sessions are live, a Broadcast section appears in the connection manager. Pick the sessions to add to the group with the member checkboxes and press On — a command typed into one terminal in the group is sent to every member at once. You can run the same command (deploy · patch · restart · check logs) across many servers in one go.

Connection manager — broadcast group3 sessions
BroadcastOn
web-prod-01Deploy
web-prod-02Deploy
db-02DB
Check members + On → input typed into a member terminal is sent to every member at once. Output is received per server.

Cross-platform · security