macOS: osh is already inside the OSH Client .pkg above.
Install
Get running in a few steps
Copy-paste per platform.
gateway — linux server
# Ubuntu/Debiansudo apt install ./pam-zta-gateway_0.1.0_amd64.deb# RHEL/Rockysudo yum install ./pam-zta-gateway-0.1.0-1.x86_64.rpm# 1) Requires PostgreSQL (create an empty DB + user)# 2) Edit /etc/pam-zta/gateway.toml — DSN, [ca].token (openssl rand -hex 32), public_url/TLSsudo systemctl enable --now pam-zta-gatewaysudo journalctl -u pam-zta-gateway -f# watch for the root-onboarding QR
desktop & ios — apps
# macOS — CA Signer (.dmg)
Open the .dmg ▸ drag "PAM-ZTA CA" to Applications ▸ open ▸ plug YubiKey ▸ enter PIN (PIV 9c) ▸ "Save PIN to Keychain".
# macOS — OSH Client (.pkg · all-in-one: GUI app + `osh` command)
Double-click OSH-1.0.0-arm64.pkg ▸ Install. # notarized · installs the OSH app + the `osh` CLI into PATHosh connect dev@your-server# or open the OSH app and click Connect · (new terminal: run `rehash`)# Windows — CA Signer / OSH Client (.exe · not yet code-signed)
Run the .exe ▸ on SmartScreen "Windows protected your PC" ▸ More info ▸ Run anyway.
# Ubuntu/Debian — CA Signer / OSH Client (.deb · amd64)sudo apt install ./CA-0.1.0-amd64.deb # CA Signer (Operator Console)sudo apt install ./OSH-0.1.0-amd64.deb # OSH Client# iOS (OSH Approver)
1. Install TestFlight from the App Store.
2. Open the TestFlight link above ▸ Install OSH.
3. Open OSH ▸ scan the enrollment QR from the Gateway ▸ approve with Face ID.
🔐CA Signer requires a YubiKey (hardware-only, fail-closed). Pull the YubiKey and signing stops — exactly by zero-trust design.