guest@psh:~$ cat README [ read-only ]
psh // pirate-shell
post-quantum first.
secure by default_
A simplified remote shell for Linux. Interactive terminals and remote commands over encrypted UDP. Mandatory hybrid cryptography. Explicit host trust.
connection policy
# required on every connection
- key_exchange
- X25519 + ML-KEM-768
- identity
- Ed25519 + ML-DSA-87
- transport
- DTLS 1.3 / UDP
- cipher
- ChaCha20-Poly1305
- password_login
- disabled
- root_login
- disabled
- legacy_fallback
- disabled
target: linux/x86_64protocol: psh/3one session per connection
01 the short version
- hybrid, always
- Classical + post-quantum key exchange. Paired host and user identities. Both signatures are required. crypto →
- a smaller shell
- PTYs, commands, and binary streams. Public-key-only login. No agents, forwarding, or SSH wire compatibility. design →
- client roaming
- Change client IP or port without losing the live session. New paths require encrypted return-path validation. protocol →
02 at the prompt
With a configured identity, host alias, and verified host pin:
session.sh
# interactive login shell
$ psh lab# run through the remote account's shell
$ psh lab -- 'uname -a; id'# binary stdin/stdout, no PTY
$ psh -T lab -- cat < in.bin > out.binprivilege boundaries
[ network worker ] │ unprivileged parsing │ bounded IPC ▼ [ auth broker ] │ independently verify user │ authorize, then launch ▼ [ user shell ]inspect the security model →
03 try it in a disposable VM
Builds, test listeners, and account tests run inside the project's QEMU guest.
$ tools/vm/vm.sh start
$ tools/vm/vm.sh wait
$ tools/vm/vm.sh sync
$ tools/vm/vm.sh run 'make -j2 all'- Build & installpinned, vendored dependencies
- Create paired identitiesauthorize a non-root account
- Verify the host. Connect.check the fingerprint independently
# read the implementation, question the assumptions.[ documentation ]