Tighten README
ci / test (push) Has been cancelled
ci / fuzz-smoke (push) Has been cancelled
ci / windows-client (push) Has been cancelled
ci / package-release (linux-x86_64, ubuntu-latest) (push) Has been cancelled
ci / package-release (macos-aarch64, macos-14) (push) Has been cancelled
ci / package-release (macos-x86_64, macos-13) (push) Has been cancelled
ci / package-release (windows-x86_64, windows-latest) (push) Has been cancelled
ci / remote-bench (push) Has been cancelled

This commit is contained in:
DuProcess
2026-06-20 19:43:54 -04:00
parent 742477bf6e
commit 6adcdc01e8
+29 -105
View File
@@ -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
```