How alun-hub/sshs3 works
sshs3 is an Electron desktop client for SSH, SFTP, S3, and Kubernetes. Users choose or manage a connection, then work in terminal panes or the dual-pane file manager; file operations use storage providers and can include transfers, search, editing, and sync. Other major capabilities include smartcards and FIDO2, SSH certificates and tunnels, profiles, encrypted sync, and Team Vault. The graph emphasizes workflows supported by the README or source index; unsampled subsystems are represented without speculative call edges.
Main entry points: SSHPtyManager.ts SSH sessions · DualPaneExplorer.tsx Dual-pane manager · App.tsx Application shell · storageHandlers.ts Storage handlers
Components 27
Desktop experience
- Application shell
src/renderer/src/App.tsx - Connection manager
src/renderer/src/components/ConnectionModal/ConnectionManagerModal.tsx - Dual-pane manager
src/renderer/src/components/FileManager/DualPaneExplorer.tsx - Terminal panes
src/renderer/src/components/TerminalView.tsx - Session model
src/shared/types/session.ts
IPC boundary
- Preload API
src/preload/index.ts - IPC bridge
src/main/IpcBridge.ts - Storage handlers
src/main/ipc/storageHandlers.ts - IPC contracts
src/shared/types/ipc.ts
Connections and security
- SSH sessions
src/main/ssh/SSHPtyManager.ts - Agent lifecycle
src/main/ssh/AgentLifecycleManager.ts - Agent registry
src/main/ssh/AgentRegistry.ts - Smartcard coordination
src/main/smartcard/SmartcardCoordinator.ts - Askpass service
src/main/smartcard/AskpassServer.ts - FIDO2 keys
src/main/smartcard/Fido2KeyManager.ts - SSH tunnels
src/main/services/SSHTunnelManager.ts - SSH profile model
src/shared/types/ssh.ts
Files and collaboration
- Storage contract
src/main/storage/StorageProvider.ts - S3 provider
src/main/storage/S3StorageProvider.ts - SFTP provider
src/main/storage/SFTPStorageProvider.ts - Transfer pipeline
src/main/transfer/TransferPipeline.ts - Content search
src/main/search/LocalContentSearchService.ts - Kubernetes services
src/main/services - Profile sync
src/main/services/ProfileSyncService.ts - Team Vault
src/main/services/TeamVaultService.ts - Storage model
src/shared/types/storage.ts
Other components
- User
Connections 24
- User → Application shell: uses
README.md - Application shell → Connection manager: opens
src/renderer/src/App.tsx - Connection manager → Preload API: saves profiles
src/renderer/src/components/ConnectionModal/ConnectionManagerModal.tsx - Preload API → IPC bridge: invokes
- IPC bridge → Storage handlers: routes storage
src/main/ipc/storageHandlers.ts - Storage handlers → S3 provider: uses provider
src/main/ipc/storageHandlers.ts - Storage handlers → Storage model: uses contract
src/main/ipc/storageHandlers.ts - Storage contract → Storage model: defines
src/main/storage/StorageProvider.ts - S3 provider → Storage contract: implements
src/main/storage/S3StorageProvider.ts - SFTP provider → Storage contract: implements
src/main/storage/SFTPStorageProvider.ts - Dual-pane manager → Preload API: requests files
- Dual-pane manager → Transfer pipeline: transfers files
- Dual-pane manager → Content search: searches content
- Terminal panes → SSH sessions: starts sessions
- SSH sessions → Agent lifecycle: manages agent
src/main/ssh/SSHPtyManager.ts - Agent lifecycle → Agent registry: registers agents
src/main/ssh/AgentLifecycleManager.ts - SSH sessions → Askpass service: uses prompts
src/main/ssh/SSHPtyManager.ts - SSH tunnels → Askpass service: uses prompts
src/main/services/SSHTunnelManager.ts - FIDO2 keys → Askpass service: uses PIN prompts
src/main/smartcard/Fido2KeyManager.ts - SSH sessions → SSH profile model: uses profiles
src/main/ssh/SSHPtyManager.ts - Application shell → Session model: persists sessions
src/renderer/src/App.tsx - User → Kubernetes services: uses cluster tools
README.md - User → Profile sync: opts into sync
README.md - User → Team Vault: manages vaults
README.md