How ahagelberg/wassh works
WaSSH is a native desktop client for SSH and local terminal sessions, with saved hosts, tabs, file management and built-in plugins. The primary path is launch into the application shell, open or create a session, connect through a backend, and render its terminal in the UI. Separate branches cover persistence, SSH features, and plugin capabilities. The README documents crate responsibilities; links between components are included only where excerpts, indexed references, or the README support them. Several plugin implementations are unsampled, so their internal wiring is not inferred.
Main entry points: session.rs Open session · plugin.rs Plugin registry · mod.rs Application shell · main.rs App entry
Components 26
Desktop app
- App entry
crates/wassh/src/main.rs - Application shell
crates/wassh/src/app/mod.rs - Open session
crates/wassh/src/app/session.rs - Connection dialogs
crates/wassh/src/app/dialogs.rs - Local execution
crates/wassh/src/app/local_exec.rs - Local files
crates/wassh/src/app/local_files.rs - WSL files
crates/wassh/src/app/wsl_files.rs
Session transports
- SSH transport
crates/wassh-ssh/src/session.rs - SFTP operations
crates/wassh-ssh/src/sftp.rs - Telnet transport
crates/wassh-telnet/src/session.rs - Serial transport
crates/wassh-serial/src/lib.rs
Terminal and UI
- Terminal emulator
crates/wassh-term/src/emulator.rs - Terminal view
crates/wassh-ui/src/terminal_view.rs - Host sidebar
crates/wassh-ui/src/sidebar.rs
Built-in plugins
- Plugin registry
crates/wassh-plugins/src/plugin.rs - AI agent
crates/wassh-plugins/src/ai_agent/agent.rs - Files plugin
crates/wassh-plugins/src/files.rs - Server monitor
crates/wassh-plugins/src/monitor.rs - Command plugin
crates/wassh-plugins/src/command.rs - Docker plugin
crates/wassh-plugins/src/docker.rs - MQTT plugin
crates/wassh-plugins/src/mqtt.rs
Domain and persistence
- Domain model
crates/wassh-core/src/session.rs - Config store
crates/wassh-store/src/lib.rs - Legacy import
crates/wassh-store/src/legacy.rs - System facts
crates/wassh-sys/src/lib.rs
Other components
- Desktop user
Connections 27
- Desktop user → App entry: launches
crates/wassh/src/main.rs - App entry → Application shell: runs
crates/wassh/src/main.rs - Application shell → Open session: manages
crates/wassh/src/app/mod.rs - Application shell → Connection dialogs: opens
crates/wassh/src/app/mod.rs - Open session → Local execution: uses
crates/wassh/src/app/session.rs - Open session → Local files: uses
crates/wassh/src/app/session.rs - Open session → WSL files: uses
crates/wassh/src/app/session.rs - Open session → SSH transport: uses backend
crates/wassh/src/app/session.rs - Open session → Terminal emulator: owns emulator
crates/wassh/src/app/session.rs - Application shell → Terminal view: draws terminal
crates/wassh/src/app/mod.rs - Host sidebar → Terminal view: references
crates/wassh-ui/src/sidebar.rs - SSH transport → SFTP operations: supports
crates/wassh-ssh/src/session.rs - SSH transport → System facts: uses host facts
- Application shell → Config store: persists state
- App entry → Legacy import: imports old config
- Application shell → Domain model: uses domain model
- Open session → Plugin registry: hosts panes
- Plugin registry → AI agent: registers
crates/wassh-plugins/src/plugin.rs - Plugin registry → Files plugin: registers
crates/wassh-plugins/src/plugin.rs - Plugin registry → Server monitor: registers
crates/wassh-plugins/src/plugin.rs - Plugin registry → Command plugin: registers
crates/wassh-plugins/src/plugin.rs - Plugin registry → Docker plugin: registers
crates/wassh-plugins/src/plugin.rs - Plugin registry → MQTT plugin: registers
crates/wassh-plugins/src/plugin.rs - Files plugin → Open session: accesses files
crates/wassh-plugins/src/files.rs - Server monitor → Command plugin: requests commands
crates/wassh-plugins/src/monitor.rs - Desktop user → Telnet transport: connects via
- Desktop user → Serial transport: connects via