Skip to content

abdullajonov-lab/nexus

Repository files navigation

Nexus

A native desktop SSH client built with Go and Svelte. Manage hosts, connect to servers, and handle SSH keys — all from a single GUI.

Features

  • 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/config file 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.

Tech Stack

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

Prerequisites

go install github.com/wailsapp/wails/v2/cmd/wails@latest

Getting Started

# 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 build

The production binary will be in build/bin/.

Project Structure

├── 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

Running Tests

# Go tests
go test ./...

# Frontend tests
cd frontend && npm run test

Keyboard Shortcuts

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

License

MIT

About

Free Open Source ssh client built using AI (claude code)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors