Skip to content
noverworkPublic

About

Native SSH client for macOS and Windows (Tauri 2 + Rust) with a built-in MCP server so AI agents like Claude Code and Cursor can run approved commands on your hosts.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Repository files navigation

Noverterm

A native SSH client for macOS and Windows. Built with Tauri 2 and Rust. No Electron.

Release Platform License

Download · Website · Report a bug

Screenshots coming soon.

Noverterm puts SSH sessions, SFTP, port forwarding, keys, and snippets in one fast window. A built-in MCP server lets AI agents such as Claude Code and Cursor run commands on your hosts, each one approved by you. It uses about 50MB of memory, compared to 500MB+ for Electron-based SSH clients. All data stays in a local SQLite database. No account, no cloud sync.

Highlights

  • Lightweight — Tauri 2 + Rust, ~50MB memory footprint
  • Tabs for everything — many SSH sessions, plus a local terminal, side by side
  • TUI-ready — Kitty keyboard protocol, IME input, and paste handling for vim, tmux, and htop
  • Dual-pane SFTP — local or any saved host on each side, drag and drop between them
  • MCP server for AI agents — Claude Code, Cursor, VS Code, and Claude Desktop can run commands, edit files, open tunnels, and read terminal tabs on your hosts, with your approval
  • Local-first — connections, keys, and snippets never leave your machine

Features

Terminal

  • Multiple SSH sessions in tabs; duplicate a session or open a local terminal instantly
  • Password and SSH key authentication
  • Host fingerprint verification and a known hosts manager
  • Dropped connections reconnect when you switch back to the tab
  • Immediate output on idle sessions, bounded binary streaming, ordered input with visible write failures
  • Negotiated Kitty keyboard protocol with modifier, repeat, and release events
  • In-terminal search

SFTP file transfer

  • Dual-pane browser: local or any host in each pane
  • Drag and drop, multi-select, recursive folder transfer
  • Transfer progress and conflict resolution
  • Create, rename, and delete files and folders

Port forwarding

  • Local SSH tunnels saved as presets
  • Several ports per preset

Snippets

  • Save frequent commands and run them in active sessions
  • Pin snippets to the sidebar as one-click launchers with a custom icon

Connections and keys

  • Organize connections into folders
  • Reach private servers through jump hosts (like ssh -J), chained up to five hops; terminal, SFTP, and port forwarding all tunnel through them
  • Import and manage SSH keys

MCP server for AI agents

  • Turn on the built-in MCP server, then paste the ready-made command into Claude Code, Cursor, VS Code, or Claude Desktop
  • Tools:
    • Commands: list_hosts, run_command, and run_command_multi to run one command on several hosts at once
    • Long-running and interactive commands: start_command, then read_command, write_command (stdin), and stop_command
    • Files: list_dir, read_file, and write_file for text files; upload_file and download_file copy files and folders over SFTP
    • Snippets: list_snippets and run_snippet
    • Port forwarding: list_port_forwards, start_port_forward (listens on 127.0.0.1), and stop_port_forward for tunnels the agent opened
    • Terminal tabs: list_terminals and read_terminal return a tab's recent output as plain text
  • Everything that touches a host or a terminal tab needs your approval, including input sent to a running command: allow once, always allow a host until the app restarts, or deny; unanswered requests are denied after two minutes
  • Listens on 127.0.0.1 only, behind a token kept in the system keychain
  • Passwords and keys stay in Noverterm; the agent sees host names, never credentials
  • Hosts must pass their fingerprint check, and jump hosts work as they do in the terminal

App

  • Built-in updater from GitHub Releases
  • Dark theme, keyboard shortcuts, context menus

Download

Platform Package
macOS (Apple Silicon) .dmg
Windows .exe installer

Get the latest version from Releases. Noverterm checks for updates on its own after install.

On macOS, install from the terminal (builds are not notarized, so this avoids the Gatekeeper prompt):

curl -fsSL https://raw.githubusercontent.com/noverwork/noverterm/main/install.sh | sh

If you install the .dmg instead, macOS blocks the first launch. Open System Settings → Privacy & Security and click Open Anyway, or run xattr -dr com.apple.quarantine /Applications/noverterm.app.

Quick Start

  1. Open Noverterm and click New connection.
  2. Enter the host, port, and user. Choose password or SSH key authentication.
  3. Connect. On first connect, verify the host fingerprint.
  4. Open more sessions in tabs, or open a Local Terminal.
  5. Use the sidebar for SFTP, port forwards, SSH keys, and snippets.

Connect through a jump host

  1. Save the bastion as a normal connection.
  2. Create a connection for the private server. Enter its address as the bastion sees it, such as 10.0.1.5.
  3. Under Jump host, select the bastion and save.

Connecting asks you to verify the bastion's fingerprint first, then the target's. Each host signs in with its own saved credentials, and your private keys stay on your machine. To chain more hops, give the bastion a jump host of its own. The bastion's SSH server must allow TCP forwarding (AllowTcpForwarding yes, the OpenSSH default).

Keyboard Shortcuts

On Windows, use Ctrl in place of Cmd.

Action Shortcut
Jump to tab 1–9 Cmd+1 … Cmd+9
Next / previous tab Cmd+Shift+] / Cmd+Shift+[, Ctrl+Tab / Ctrl+Shift+Tab
Search in terminal Cmd+F
Next / previous match (macOS) Cmd+G / Cmd+Shift+G
Copy selection Cmd+C (only with a selection, else sent to the shell)
Paste Cmd+V, Ctrl+Shift+V, Shift+Insert
Close tab (macOS) Cmd+W

Keyboard encoding uses the layout information from the WebView. On WebKit, shifted punctuation on non-US layouts may lack its unshifted key value the first time it is typed. The browser-reported key and physical alternate stay available.

Data and Privacy

  • All data is stored in a local SQLite database in the app data folder.
  • No account, telemetry, or cloud sync.
  • The only network traffic besides your SSH connections is the update check against GitHub Releases.

Roadmap

  • Linux support
  • Screenshots

Build from Source

Prerequisites: Node.js 22+, Rust stable, cargo-make.

cargo make frontend:install
cargo make tauri:build

The bundled app is in target/release/bundle/.

Development

cargo make frontend:install   # install UI dependencies
cargo make tauri:dev          # run the app in dev mode
cargo make ci                 # clippy, format check, tests, Svelte check

Tech stack

Layer Technology
UI Svelte 5, Vite, TailwindCSS
Desktop Tauri 2
SSH Russh (pure Rust)
Async runtime Tokio
Database SQLite + Diesel

Project structure

noverterm/
├── packages/
│   ├── desktop/        # Tauri app (Rust + Svelte UI), owns the SQLite database
│   ├── shared/         # Types shared between Rust commands and the UI
│   └── orm/            # Diesel models and schema
├── Cargo.toml          # Rust workspace
└── Makefile.toml       # cargo-make tasks

Contributing

Contributions are welcome. Fork it, hack on it, and send a pull request.

  • Bug reports and ideas: open an issue.
  • Pull requests: welcome. Run cargo make ci before you open one.
  • Security issues: report privately. Do not open a public issue.

License

Noverterm is released under the MIT License.

Acknowledgements

  • Tauri — desktop framework
  • Russh — pure Rust SSH implementation
  • Svelte — UI framework

Noverterm — Because your SSH client shouldn't need its own memory allocator.

About

Native SSH client for macOS and Windows (Tauri 2 + Rust) with a built-in MCP server so AI agents like Claude Code and Cursor can run approved commands on your hosts.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages