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
read the cryptographic policy →
target: linux/x86_64protocol: psh/3one session per connection
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 →

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.bin
man 1 psh →

privilege boundaries

[ network worker ]
    │ unprivileged parsing
    │ bounded IPC
    ▼
[ auth broker    ]
    │ independently verify user
    │ authorize, then launch
    ▼
[ user shell     ]
inspect the security model →

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'
  1. Build & installpinned, vendored dependencies
  2. Create paired identitiesauthorize a non-root account
  3. Verify the host. Connect.check the fingerprint independently
# read the implementation, question the assumptions.[ documentation ]