Dosh
Dosh is a fast encrypted remote terminal. It keeps the good parts of SSH and Mosh for day-to-day shell work: quick attach, roaming over UDP, reconnect after network changes, persistent server-side terminals, optional predictive typing, and TCP forwarding.
Dosh uses SSH-compatible bootstrap for first setup and can use its native
cached attach path after trust is established. The goal is simple: type
dosh my-server and land in a usable terminal about as fast as the network can
allow, then keep that terminal alive when Wi-Fi, sleep, or the client process
gets messy.
Status
- Clients: macOS, Linux, and Windows.
- Server: Unix-like hosts with PTY support.
- Windows: client-only; install with PowerShell and connect to a Unix Dosh server.
- Security: encrypted transport, pinned Dosh host keys, replay-resistant attach tickets, and SSH fallback for bootstrap/recovery.
- Not included: X11 forwarding, SFTP/SCP replacement, or a Windows server.
Install
Unix/macOS server or client:
curl -fsSL https://git.palav.dev/Palav/dosh/raw/branch/main/install.sh | sh -s -- both --repo https://git.palav.dev/Palav/dosh.git --port 50000
Unix/macOS client only:
curl -fsSL https://git.palav.dev/Palav/dosh/raw/branch/main/install.sh | sh -s -- client --repo https://git.palav.dev/Palav/dosh.git
Windows client:
irm https://git.palav.dev/Palav/dosh/raw/branch/main/install.ps1 | iex
The installers prefer release binaries and fall back to a source build when needed.
Use
Set up a host from your SSH config:
dosh setup my-server
Connect:
dosh my-server
Run a command on connect:
dosh my-server tm
Check the install and network path:
dosh doctor my-server
dosh selftest my-server
Repair local cached attach state without changing host trust:
dosh recover my-server
Update:
dosh update
dosh update --check
Forwarding
Local forward:
dosh forward my-server -L 8080:127.0.0.1:80
Dynamic SOCKS forward:
dosh forward my-server -D 1080
Remote forward:
dosh forward my-server -R 2222:127.0.0.1:22
Agent forwarding is opt-in with -A and must also be allowed by the server.
Config
Client config lives at:
~/.config/dosh/client.toml
~/.config/dosh/hosts.toml
Server config lives at:
~/.config/dosh/server.toml
Useful client defaults:
default_session = "new"
auth_preference = "native,ssh"
predict = true
predict_mode = "experimental"
cache_attach_tickets = true
disconnect_status = true
Development
Build and test:
cargo test
cargo build --release
Run the terminal/TUI regression harness:
make tui-harness
Package release artifacts:
sh scripts/package-release.sh