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
Dosh is a fast encrypted remote terminal. It keeps the good parts of SSH and Dosh is an encrypted remote terminal for fast reconnecting shells.
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 It runs a `dosh-server` on the remote machine and a `dosh` client locally. The
cached attach path after trust is established. The goal is simple: type first setup can use SSH. After that, Dosh can attach over encrypted UDP with
`dosh my-server` and land in a usable terminal about as fast as the network can cached credentials, keep terminal sessions alive, reconnect after network
allow, then keep that terminal alive when Wi-Fi, sleep, or the client process changes, and forward TCP ports.
gets messy.
## Status ## Support
- Clients: macOS, Linux, and Windows. - Client: macOS, Linux, Windows
- Server: Unix-like hosts with PTY support. - Server: Unix-like systems with PTYs
- Windows: client-only; install with PowerShell and connect to a Unix Dosh - Windows: client only
server. - UDP port: one configured server port, default `50000`
- Security: encrypted transport, pinned Dosh host keys, replay-resistant attach
tickets, and SSH fallback for bootstrap/recovery. Dosh does not replace SCP, SFTP, X11 forwarding, or a Windows server.
- Not included: X11 forwarding, SFTP/SCP replacement, or a Windows server.
## Install ## Install
Unix/macOS server or client: Server and client on Unix/macOS:
```sh ```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 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 ```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 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 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 ## Commands
needed.
## Use
Set up a host from your SSH config:
```sh ```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 ```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: Agent forwarding is opt-in with `-A` and must be enabled on the server.
```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 ## Config
Client config lives at:
```text ```text
~/.config/dosh/client.toml ~/.config/dosh/client.toml
~/.config/dosh/hosts.toml ~/.config/dosh/hosts.toml
```
Server config lives at:
```text
~/.config/dosh/server.toml ~/.config/dosh/server.toml
``` ```
Useful client defaults: Common client settings:
```toml ```toml
default_session = "new" default_session = "new"
auth_preference = "native,ssh" auth_preference = "native,ssh"
predict = true predict = true
predict_mode = "experimental"
cache_attach_tickets = true cache_attach_tickets = true
disconnect_status = 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
```