diff --git a/README.md b/README.md index 274c759..08b77d8 100644 --- a/README.md +++ b/README.md @@ -1,35 +1,30 @@ # 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 is an encrypted remote terminal for fast reconnecting shells. -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. +It runs a `dosh-server` on the remote machine and a `dosh` client locally. The +first setup can use SSH. After that, Dosh can attach over encrypted UDP with +cached credentials, keep terminal sessions alive, reconnect after network +changes, and forward TCP ports. -## Status +## Support -- 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. +- Client: macOS, Linux, Windows +- Server: Unix-like systems with PTYs +- Windows: client only +- UDP port: one configured server port, default `50000` + +Dosh does not replace SCP, SFTP, X11 forwarding, or a Windows server. ## Install -Unix/macOS server or client: +Server and client on Unix/macOS: ```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: +Client only on Unix/macOS: ```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 @@ -41,114 +36,43 @@ 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: +## Commands ```sh -dosh setup my-server +dosh setup HOST # import SSH config and trust the Dosh host key +dosh HOST # connect +dosh HOST COMMAND # connect and run a command +dosh update # update Dosh +dosh doctor HOST # check config and connectivity +dosh recover HOST # clear cached attach state and re-check ``` -Connect: +Examples: ```sh -dosh my-server +dosh palav +dosh palav tm +dosh forward palav -L 8080:127.0.0.1:80 +dosh forward palav -D 1080 +dosh forward palav -R 2222:127.0.0.1:22 ``` -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. +Agent forwarding is opt-in with `-A` and must be enabled on 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: +Common client settings: ```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 -```