# 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: ```sh 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: ```sh 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: ```powershell 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: ```sh dosh setup my-server ``` Connect: ```sh dosh my-server ``` Run a command on connect: ```sh dosh my-server tm ``` Check the install and network path: ```sh dosh doctor my-server dosh selftest my-server ``` Repair local cached attach state without changing host trust: ```sh dosh recover my-server ``` Update: ```sh dosh update dosh update --check ``` ## Forwarding Local forward: ```sh dosh forward my-server -L 8080:127.0.0.1:80 ``` Dynamic SOCKS forward: ```sh dosh forward my-server -D 1080 ``` Remote forward: ```sh 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: ```text ~/.config/dosh/client.toml ~/.config/dosh/hosts.toml ``` Server config lives at: ```text ~/.config/dosh/server.toml ``` Useful client defaults: ```toml default_session = "new" auth_preference = "native,ssh" predict = true predict_mode = "experimental" cache_attach_tickets = true disconnect_status = true ``` ## Development Build and test: ```sh cargo test cargo build --release ``` Run the terminal/TUI regression harness: ```sh make tui-harness ``` Package release artifacts: ```sh sh scripts/package-release.sh ```