A native desktop SSH client built with Go and Svelte. Manage hosts, connect to servers, and handle SSH keys — all from a single GUI.
- Host Management — Add, edit, delete, and organize SSH hosts into groups with a tree view. Fuzzy search across all hosts.
- Terminal Sessions — Full terminal emulation via xterm.js with WebGL rendering and search support.
- SSH Key Management — Generate Ed25519/RSA keys, import existing keys, and view key details.
- Import/Export — Parse your
~/.ssh/configfile to import hosts. Export to JSON or YAML. - Host Key Verification — Interactive host key verification prompts on first connection.
- Credential Storage — Encrypted local storage for passwords and passphrases using bbolt.
- Keyboard Shortcuts — Native menu with shortcuts for common actions (new host, connect, search, quick connect, import).
- Cross-Platform — Runs on Linux, macOS, and Windows via Wails.
| Layer | Technology |
|---|---|
| Backend | Go, Wails v2 |
| Frontend | Svelte 4, TypeScript, Tailwind CSS 4 |
| Terminal | xterm.js (WebGL/Canvas) |
| Storage | bbolt (embedded key-value store) |
| SSH | golang.org/x/crypto/ssh |
go install github.com/wailsapp/wails/v2/cmd/wails@latest# Clone the repository
git clone https://github.com/nexus-terminal/nexus.git
cd nexus
# Install frontend dependencies
cd frontend && npm install && cd ..
# Run in development mode (hot-reload)
wails dev
# Build for production
wails buildThe production binary will be in build/bin/.
├── main.go # App entry point
├── host_bindings.go # Host CRUD bindings (Go ↔ Frontend)
├── ssh_bindings.go # SSH session bindings
├── key_bindings.go # SSH key management bindings
├── import_bindings.go # Import/export bindings
├── menu.go # Native menu & keyboard shortcuts
├── internal/
│ ├── domain/ # Core business logic (hosts, groups)
│ ├── storage/ # bbolt persistence layer
│ ├── ssh/ # SSH sessions, key generation
│ ├── importer/ # SSH config parsing, JSON/YAML export
│ └── crypto/ # Credential encryption
└── frontend/
└── src/lib/
├── components/ # Svelte UI components
├── stores/ # Svelte stores (hosts, sessions, UI)
└── terminal/ # xterm.js setup
# Go tests
go test ./...
# Frontend tests
cd frontend && npm run test| Shortcut | Action |
|---|---|
Ctrl+N |
New host |
Ctrl+E |
Edit host |
Ctrl+F |
Search hosts |
Ctrl+K |
Quick connect |
Ctrl+I |
Import SSH config |
Ctrl+Shift+D |
Disconnect session |
MIT