soop

Crates.iosoop
lib.rssoop
version0.1.1
created_at2025-10-26 09:09:48.847235+00
updated_at2025-11-09 08:37:14.862537+00
descriptionSSH cOnfig OPerator
homepage
repositoryhttps://github.com/currybab/soop
max_upload_size
id1901113
size45,720
Park Jun (currybab)

documentation

README

soop

A simple SSH config manager for the command line.

Overview

soop (SSH cOnfig OPerator) is a command-line tool that makes managing your SSH configurations easy and safe. Add, list, edit, and remove SSH hosts while preserving comments and formatting.

The name "soop" comes from the Korean word "숲" (forest). Just as trees grow and spread throughout a forest, your SSH hosts naturally accumulate and scatter across your config file over time. soop helps you navigate and tend to this forest of connections, keeping everything organized and accessible.

Features

  • Add hosts interactively with duplicate name validation
  • List hosts with connection details (user@hostname:port)
  • Connect quickly with convenient aliases
  • Edit hosts in your preferred editor with automatic change detection
  • Remove hosts safely with confirmation prompts
  • Preserve comments and configuration order
  • Prevent duplicates when adding or editing hosts

Installation

From crates.io

cargo install soop

From Source

git clone https://github.com/currybab/soop.git
cd soop
cargo build --release

The binary will be available at target/release/soop.

Homebrew

Coming soon.

Usage

Add a new SSH host

soop add

Interactively prompts for host details and validates against existing hosts.

List all SSH hosts

soop ls

Displays all configured hosts with their connection information:

myserver            user@192.168.1.1
production          admin@example.com:2222
testserver          10.0.0.1

Connect to a host

# Interactive selection
soop connect
soop c      # alias
soop ssh    # alias

# Direct connection
soop connect myserver

Edit a host

# Interactive selection
soop edit

# Edit specific host
soop edit myserver

Opens your preferred editor (set via $EDITOR environment variable, defaults to vi). Validates changes and prevents duplicate host names.

Remove a host

# Interactive selection
soop remove
soop rm     # alias

# Remove specific host
soop rm myserver

Prompts for confirmation before deletion.

Requirements

  • Rust 1.85 or later
  • Tested on macOS (should work on Linux and other Unix-like systems)

Configuration

soop operates on your SSH config file located at ~/.ssh/config.

Set your preferred editor:

export EDITOR=vim  # or nano, emacs, etc.

Development Status

This project is in active development. Currently, the codebase lacks comprehensive test coverage. Contributions to add unit tests and integration tests are highly encouraged and would be greatly appreciated.

License

MIT License - see LICENSE for details.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

Areas where we especially need help:

  • Test coverage for core functionality
  • Testing on Linux and other Unix-like platforms
  • Additional features and improvements

Author

Jun Park (@currybab)

Commit count: 0

cargo fmt