{"id":31762388,"url":"https://github.com/andreleclercq/sshctl","last_synced_at":"2025-10-09T22:18:40.946Z","repository":{"id":315417937,"uuid":"1052761235","full_name":"AndreLeclercq/sshctl","owner":"AndreLeclercq","description":"CLI tool for managing SSH connections easily and efficiently.","archived":false,"fork":false,"pushed_at":"2025-10-03T12:28:14.000Z","size":70,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-03T14:37:15.778Z","etag":null,"topics":["career-transition","cli-tool","devops","performance","rust-lang","ssh-management","sysadmin"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AndreLeclercq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-08T14:08:08.000Z","updated_at":"2025-10-03T12:27:51.000Z","dependencies_parsed_at":"2025-09-18T14:41:06.887Z","dependency_job_id":"41d73230-771f-44b2-957b-6291af221171","html_url":"https://github.com/AndreLeclercq/sshctl","commit_stats":null,"previous_names":["andreleclercq/sshctl"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/AndreLeclercq/sshctl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreLeclercq%2Fsshctl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreLeclercq%2Fsshctl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreLeclercq%2Fsshctl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreLeclercq%2Fsshctl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AndreLeclercq","download_url":"https://codeload.github.com/AndreLeclercq/sshctl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreLeclercq%2Fsshctl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002114,"owners_count":26083307,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["career-transition","cli-tool","devops","performance","rust-lang","ssh-management","sysadmin"],"created_at":"2025-10-09T22:18:26.807Z","updated_at":"2025-10-09T22:18:40.937Z","avatar_url":"https://github.com/AndreLeclercq.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔐 SSHCTL\n[![Rust](https://img.shields.io/badge/rust-%23000000.svg?style=for-the-badge\u0026logo=rust\u0026logoColor=white)](https://www.rust-lang.org/)\n[![License](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)\n[![AUR](https://img.shields.io/aur/version/sshctl?style=for-the-badge\u0026logo=arch-linux)](https://aur.archlinux.org/packages/sshctl)\n[![GitHub release](https://img.shields.io/github/release/AndreLeclercq/sshctl.svg?style=for-the-badge)](https://github.com/AndreLeclercq/sshctl/releases)\n\n**SSHCTL** is a lightweight CLI tool designed to simplify and streamline SSH connection management. It allows you to store, edit, and quickly connect to your servers using intuitive commands. ⚡\n\n**Note:** This project is in its early stages of development. While the core functionality is already usable Currently, the focus is on Linux compatibility, as it aligns with my personal workflow. However, support for **Windows and macOS** is planned if there is community interest—feel free to open an issue or discussions! 💬\n\n## 📋 Versioning \u0026 Stability\n- **Stable versions:** Tagged releases (e.g., v0.1.0, v0.2.0) are considered stable and production-ready ✅\n- **Development version:** The `main` branch contains the latest development code and is **not considered stable** ⚠️\n\n## 📦 Installation\n### 🔧 From Source\n```bash\ncargo build --release\n```\n### 🐧 Arch Linux\n- **Stable version:** [sshctl](https://aur.archlinux.org/packages/sshctl) (binary package from latest stable release)\n- **Development version:** [sshctl-git](https://aur.archlinux.org/packages/sshctl-git) (builds from `main` branch)\n```bash\n# For stable version\nyay -S sshctl\n# For development version (main branch)\nyay -S sshctl-git\n```\n\n## 🚀 Commands\n```bash\n# Connect 🔌\nsshctl \u003cconnection-name\u003e #ex: sshctl prod-server\n\n# Add connection ➕\nsshctl connection add \u003cconnection-name\u003e #ex: sshctl connection add prod-server \n\n# Edit connection ✏️\nsshctl connection edit \u003cconnection-name\u003e #ex: sshctl connection edit prod-server\n\n# Remove connection ❌\nsshctl connection remove \u003cconnection-name\u003e #ex: sshctl connection remove prod-server\n\n# Show connection 👀\nsshctl connection show \u003cconnection-name\u003e #ex: sshctl connection show prod-server\n\n# List connections 📝\nsshctl connection list\n```\n\n## ⚙️ Configuration\nConnections are saved in `~/.config/sshctl/connections.toml` (or OS equivalent).\n\nConfig file structure:\n```toml\n[connections.prod-server]\nhost = \"192.168.1.100\"\nuser = \"admin\"\nport = 2222\ndescription = \"This is the prod server. OVH VPS\"\n\n[connections.dev-local]\nhost = \"localhost\"\nuser = \"developer\"\nport = 22\n```\n\n## 👨‍💻 Development\n### 📚 Main dependencies\n- `clap` : CLI argument parsing\n- `serde` + `toml` : TOML config serialization\n- `dirs` : cross-platform config file paths\n- `dialoguer` : interactive prompts\n- `anyhow` : error handling\n- `thiserror` : custom error types\n\n### 🏗️ Architecture\nBuilt with performance-first mindset using Rust:\n- **Zero-copy parsing** with serde\n- **Minimal allocations** for config handling\n- **Cross-platform** compatibility via dirs crate\n- **Interactive UX** with dialoguer\n\n### 📋 TODO v0.2.x\n- [ ] Manage ssh keys\n- [ ] Improve connection commands\n\n---\n*Part of my transition journey from Fullstack Development to AI/Data Engineering, showcasing Rust for performance-critical applications.* 🚀\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreleclercq%2Fsshctl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreleclercq%2Fsshctl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreleclercq%2Fsshctl/lists"}