OpenPtl is a multi-protocol desktop remote workspace built with Tauri + React.
It combines terminals, remote file management, encrypted local persistence, and Google Drive cloud sync for profile data.
- SSH
- SFTP
- FTP
- FTPS
- SMB
- RDP
- Encrypted vault for profiles/settings:
- master password mode (
Argon2id+XChaCha20-Poly1305) - keychain-backed mode (generated key stored in OS keychain)
- master password mode (
- Workspace tabs with draggable/resizable blocks
- SSH terminal sessions (PTY-backed) with live event streaming
- Remote file blocks for SFTP/FTP/FTPS/SMB operations
- RDP session blocks for remote desktop workflows
- Internal Monaco editor + open in external editor
- Google Drive sync for encrypted profile backup (appDataFolder + OAuth flow)
- Custom desktop shell (header/sidebar/tabs/workspaces) in Tauri
- Frontend:
React + TypeScript + Zustand + Vite - Backend:
Rust + Tauri 2 - Key backend modules:
src-tauri/src/lib.rs: command surface and app bootstrapsrc-tauri/src/ssh.rs: SSH/SFTP session handlingsrc-tauri/src/libs/*: shared libraries (vault, sync, transfers, tasks)src-tauri/src/protocols/*: protocol-specific adapters
- Node.js 20+ (or Bun)
- Rust stable toolchain
- Tauri v2 system prerequisites for your OS
npm install
npm run tauri devbun install
bun run tauri devbun run build
cargo test --manifest-path src-tauri/Cargo.tomlYou can also use npm equivalents:
npm run build
cargo test --manifest-path src-tauri/Cargo.tomlThe optional auth worker lives in server/ and is used by sync/auth flows.
cd server
npm install
npm run devEnvironment variables for the worker:
GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETALLOWED_ORIGINS(configured inserver/wrangler.toml)
- Deep link callback scheme:
openptl://auth - Transfer progress events follow
transfer:progress:{id} - Default auth server list is in
auth-servers.json







