Skip to content

d0dg3r/NoSuckShell

NoSuckShell

Release Pre-release CI License Tauri 2 Sponsor

NoSuckShell

Cross-platform SSH manager desktop app (Tauri + React) focused on fast host management and clean terminal workflows.

Repository: github.com/d0dg3r/NoSuckShell

Highlights

  • Split workspace — Start with one full-size panel; split recursively (e.g. left / bottom) with a default 60/40 ratio; resizable dividers; drag-and-drop panel reorder (swap).
  • Layout profiles — Save, load, and delete layouts with hosts (geometry + host/session mapping) or layout only (geometry).
  • SSH integration — Hosts from ~/.ssh/config, embedded terminals (xterm), local shell sessions, quick connect.
  • Encrypted backups — Export/import is password-protected; plain legacy JSON backups are rejected on purpose.
  • Cross-platform — Linux, macOS, and Windows builds via GitHub Releases.

Screenshots

Main Interface

NoSuckShell host list with an embedded SSH session

Layouts & Workspaces

Split workspace with SSH and local terminal panes   Layout command center for saved layouts

Proxmox & Virtualization

Proxmox cluster resource management   Embedded Proxmox noVNC console

Files & SFTP

SFTP file browser with drag-and-drop support   Local file browser and explorer integration

Tools & Organization

Quick connect and session toolbar   Favorites, tags, and sidebar organization   Multi-session broadcast input

Security

Password-protected encrypted backup system

More sizes (Flathub downscales, Microsoft/Snap 1920×1080), captions for AppStream, video notes, and regeneration commands: docs/media/screenshots/README.md.

Install

From GitHub Releases (recommended)

Download the latest Release or Pre-release asset for your platform from the Releases page.

Arch Linux / CachyOS (AUR) — Install the pre-built package with an AUR helper:

yay -S nosuckshell-bin

The AUR PKGBUILD is maintained in aur/nosuckshell-bin/; see aur/README.md for maintainer setup.

Arch Linux / CachyOS (manual .pkg.tar.zst) — Releases may include nosuckshell-….pkg.tar.zst. Install or upgrade locally:

sudo pacman -U ./nosuckshell-<version>-1-x86_64.pkg.tar.zst

To build that package yourself after a local npm run tauri:build (or npm run tauri:build:linux-appimage on rolling distros), set pkgver in apps/desktop/src-tauri/PKGBUILD (Arch pkgver cannot contain -; map prerelease hyphens to .), then run makepkg -f from apps/desktop/src-tauri. The PKGBUILD repackages the Tauri .deb under target/release/bundle/deb/.

From source (developers)

Requirements

  • Node.js and npm (for the desktop app under apps/desktop)
  • Rust stable, Cargo, and Tauri 2 prerequisites for your OS

From the repository root, the first npm run tauri:dev / desktop:build can install dependencies under apps/desktop automatically if they are missing. You can still install explicitly:

npm run desktop:install
npm run tauri:dev

On Wayland, the app sets WEBKIT_DISABLE_DMABUF_RENDERER=1 by default when that variable is not already in the environment (it avoids blank or unstable WebKitGTK webviews on some stacks). On X11 it leaves the variable unset. You can still export WEBKIT_DISABLE_DMABUF_RENDERER yourself before launch to force a specific value.

AppImage (npm run tauri:build) on rolling distros (Arch, CachyOS, …) may fail with failed to run linuxdeploy. From the repo root use npm run tauri:build:linux-appimage instead, or see CONTRIBUTING.md for APPIMAGE_EXTRACT_AND_RUN and NO_STRIP.

Or from apps/desktop:

cd apps/desktop
npm install
npm run tauri:dev

CLI launch profiles (optional)

Passing extra arguments to the desktop binary requests a one-shot layout after startup (the app still restores saved workspaces from the previous run first, then applies the profile).

Help:

nosuckshell --help
# or: nosuckshell -h

Prints options to stdout and exits (no window). With -h / --help, other flags are ignored.

Launch modes (use at most one):

Mode Short Long Deprecated alias
NSS-Commander workspace (dual local file panes at home); host sidebar collapsed -c --local-commander --commander
Single Main workspace, one local terminal; host sidebar collapsed -t --local-terminal --single-shell

Do not combine --local-commander / -c and --local-terminal / -t (or their aliases); the app reports an error and applies neither.

Installed binary (Arch package, .deb, etc.):

nosuckshell --local-commander
nosuckshell -c
nosuckshell --local-terminal
nosuckshell -t

Development (repo root): pass flags after npm run tauri:dev --. The root script forwards them so they reach the app (Tauri requires an extra -- between runner and app args; the wrapper adds that for you):

npm run tauri:dev -- --local-terminal
npm run tauri:dev -- -c

From apps/desktop directly, include the Tauri separators yourself (tauri dev -- [runner] -- [app]; with an empty runner section that is three -- tokens before your flag):

cd apps/desktop
npm run tauri:dev -- -- -- --local-commander
npm run tauri:dev -- -- -- -t

Flatpak (and similar launchers) usually need an extra -- before these flags, for example: flatpak run … dev.nosuckshell.NoSuckShell -- --local-terminal.

Validate locally

cd apps/desktop
npm test
npm run build
cd src-tauri
cargo test
cargo check

From the repo root you can run npm run desktop:test for the desktop package tests.

Backup security

  • Backup export/import is password protected and encrypted.
  • Unencrypted legacy JSON backups are intentionally rejected.
  • Backup path handling supports ~ expansion and cross-platform path normalization.

Details: docs/backup-security.md

Release process (maintainers)

GitHub releases are created by pushing a SemVer tag. Full checklist: docs/releases.md. User-facing history: docs/CHANGELOG.md.

  • Final: vMAJOR.MINOR.PATCH (example: v0.2.1, v1.2.3)
  • Pre-release: vMAJOR.MINOR.PATCH-<suffix> (example: v1.2.4-rc.1, v0.1.0-beta.11)

Before tagging, use the same version string in:

  • apps/desktop/package.json
  • apps/desktop/src-tauri/Cargo.toml
  • apps/desktop/src-tauri/tauri.conf.json

The release workflow still overwrites those files from the tag at build time; keeping them aligned locally avoids drift while developing.

git tag v0.2.1
git push origin v0.2.1

If the workflow rejects the tag, use vMAJOR.MINOR.PATCH or vMAJOR.MINOR.PATCH-prerelease (example: v2.0.0 or v2.0.0-rc.1).

Documentation

Resource Description
docs/README.md Documentation index
docs/CHANGELOG.md Release notes
docs/architecture.md App architecture (Tauri, React, Rust, IPC)
docs/STYLE_GUIDE.md / docs/CODE_GUIDE.md Style and implementation guides
AGENTS.md IDE / agent entry point
CONTRIBUTING.md Setup, validation, pull requests
SECURITY.md Reporting vulnerabilities
CODE_OF_CONDUCT.md Community standards

License and optional add-ons

The source code is under the MIT License. A few built-in plugins can be unlocked in official binaries with a signed license token after a small purchase (for example via Ko-fi); see docs/licensing.md and the maintainer template docs/terms-of-sale.md.

Support the project

If NoSuckShell is useful to you:

About

Cross-platform SSH manager desktop app (Tauri + React) focused on fast host management and clean terminal workflows.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors