Skip to main content

SSH Session Manager (sshse) application

Project description

sshse

Status Version Python License

SSH Session Manager (sshse) streamlines opening secure shell sessions, keeps a rich connection history, and lays the groundwork for automation around inventory, scripting, and file transfer.

Table of Contents

Overview

sshse is a Typer-based command-line application for managing SSH workflows. The current focus is on an ergonomic interactive launcher backed by a persistent history store, with an architecture designed to support inventory management, multi-host execution, and pluggable transports as the project matures.

Features

  • Quick-connect shorthand: run sshse host or sshse user@host to open a session immediately.
  • Interactive history browser that supports fuzzy filtering, keyboard navigation, and graceful fallbacks when a full TUI is unavailable.
  • Persistent history powered by HistoryStore, stored in the OS-specific data directory (for example ~/.local/share/sshse/history.json on Linux, ~/Library/Application Support/sshse/history.json on macOS).
  • Clean CLI ergonomics built with Typer, including a built-in --version flag and helpful error messaging.
  • Modular layout prepared for adapters, plugins, and inventory integrations so new capabilities can be added without disrupting the core.

Installation

For Users

Install the latest published build from PyPI:

pip install sshse

For Developers

Set up a local development environment directly from this repository:

git clone https://github.com/segevido/sshse.git
cd sshse
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -e '.[dev]'

Optional but recommended:

pre-commit install

This installs the project in editable mode with linting, formatting, and testing tools available for local development.

Usage

Launch the CLI without arguments to open the interactive browser:

sshse

Connect directly to a host:

sshse user@example.com

Additional options:

  • sshse --version prints the application version and exits.
  • sshse --help displays the Typer-generated help screen for all commands and options.

The CLI returns a non-zero exit code on failure so it can be composed in scripts.

Connection History

Every successful connection is recorded through HistoryStore, which:

  • Deduplicates entries by host, user, and port while keeping the most recent connection first.
  • Stores timestamps in UTC for reliable ordering across platforms.
  • Limits history size (defaults to 128 entries) and truncates automatically.

The history file can be inspected or managed manually if desired. Integrations can import HistoryStore from sshse.core.history to record connections performed outside of the interactive launcher.

Project Structure

sshse/
|-- adapters/          # Future SSH backend implementations
|-- cli/               # Typer CLI entry points, history browser, SSH launcher
|-- config/            # Configuration models and loaders (planned)
|-- core/              # Domain logic such as connection history
|-- plugins/           # Extension points for providers and integrations

Top-level tooling:

  • pyproject.toml configures dependencies, Ruff, Black, pytest, mypy, and packaging metadata.
  • tests/ contains unit tests that exercise the CLI and core modules.

Development

With the virtual environment active, run the following to validate changes:

ruff check .
black .
mypy sshse
pytest --cov=sshse --cov-report=term-missing --cov-fail-under=100

Bandit (bandit -r sshse -q) is also configured for security scanning. Pre-commit hooks will enforce formatting and linting on each commit when enabled.

Contributing

Contributions, bug reports, and feedback are welcome while the project evolves. Please open an issue or discussion describing the proposed change, follow conventional commits for messages, and ensure the test suite passes before submitting a pull request.

License

sshse is available under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sshse-0.1.1.tar.gz (22.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sshse-0.1.1-py3-none-any.whl (15.3 kB view details)

Uploaded Python 3

File details

Details for the file sshse-0.1.1.tar.gz.

File metadata

  • Download URL: sshse-0.1.1.tar.gz
  • Upload date:
  • Size: 22.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sshse-0.1.1.tar.gz
Algorithm Hash digest
SHA256 503a36d4301883bcd84072ef8a92de8785645e8d205d17fc583b5f769075f685
MD5 a6261ff9717857d0aa9e0299bfce7850
BLAKE2b-256 7ab5a26e1d4702dab8f45b78b2fd174a66fed4a1260ac51df51c5ad91712cbdf

See more details on using hashes here.

Provenance

The following attestation bundles were made for sshse-0.1.1.tar.gz:

Publisher: python-publish.yml on segevido/sshse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sshse-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: sshse-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 15.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sshse-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c504a618365dab2473ddfb55b92a933496ebc6d0bf2c7b3c0300c64081664af4
MD5 f2f5a8c6a872eeba1ea077a49586ae23
BLAKE2b-256 ce5a650374bd75a545a3dc8215f827d0fa439807b25c96a2eb8c20b6a625d5fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for sshse-0.1.1-py3-none-any.whl:

Publisher: python-publish.yml on segevido/sshse

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page