{"id":16780129,"url":"https://github.com/voidquark/voidify","last_synced_at":"2026-03-05T09:32:56.713Z","repository":{"id":196384732,"uuid":"695836019","full_name":"voidquark/voidify","owner":"voidquark","description":"Simplify and Fastify your SSH Management. Developed in Go.","archived":false,"fork":false,"pushed_at":"2025-05-22T11:51:07.000Z","size":454,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-22T13:24:00.868Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","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/voidquark.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}},"created_at":"2023-09-24T11:32:18.000Z","updated_at":"2025-05-22T11:50:33.000Z","dependencies_parsed_at":"2024-05-03T10:52:05.558Z","dependency_job_id":null,"html_url":"https://github.com/voidquark/voidify","commit_stats":null,"previous_names":["voidquark/voidify"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/voidquark/voidify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voidquark%2Fvoidify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voidquark%2Fvoidify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voidquark%2Fvoidify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voidquark%2Fvoidify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/voidquark","download_url":"https://codeload.github.com/voidquark/voidify/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/voidquark%2Fvoidify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30117713,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-05T08:19:04.902Z","status":"ssl_error","status_checked_at":"2026-03-05T08:17:37.148Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2024-10-13T07:34:08.027Z","updated_at":"2026-03-05T09:32:56.679Z","avatar_url":"https://github.com/voidquark.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\n    style=\"border-bottom: none;\"\u003e\n    \u003ca href=\"//github.com/voidquark/voidify\" target=\"_blank\"\u003e\u003cimg alt=\"Voidify\" src=\"web/voidify.png\" width=\"80px\"\u003e\u003c/a\u003e\n    \u003cbr\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;Voidify\n\u003c/h1\u003e\n\n**Simplify and Fastify your SSH Management**\n\nVoidify simplifies and accelerates SSH management, eliminating the need to deal with bash auto-completions. With Voidify, you don't have to worry about remembering all the server details. Instead, just run Voidify, use your arrow keys in the terminal to navigate through environment selections, and choose the server name you want to connect to. You can even start typing to filter hosts while making your selection. It takes inspiration from Ansible's YAML-based inventory to simplify configuration, which is automatically translated into SSH config.\n\n**Key Features:**\n- 📝 **YAML Power:** Utilize YAML configuration as the source of truth for your SSH connections.\n- ⚡ **Instant SSH Config:** Automatically generate SSH config at runtime, faster than the speed of light.\n- 🔎 **Filter Environments and Hosts:** Use the interactive menu to quickly filter and locate your target host.\n- 🌐 **Web-based Visualization**: Automatically generate static HTML website to swiftly navigate your environments and hosts. Includes one-click SSH copy command.\n\n## Showcase\n\n![Voidify Execution](./media/showcase_voidify.gif)\n\nGenerated static HTML website.\n![Generated Static HTML Website](./media/voidify_web_showcase.png)\n\n**Supported Flags**:\n```\n\n┓┏  • ┓•┏\n┃┃┏┓┓┏┫┓╋┓┏\n┗┛┗┛┗┗┻┗┛┗┫\n\t  ┛\nVoidify simplifies and accelerates SSH management, eliminating the need to deal with bash auto-completions.\nWith Voidify, you don't have to worry about remembering all the server details.\nInstead, just run Voidify, use your arrow keys in the terminal to navigate through environment selections, and choose the server name you want to connect to.\nYou can even start typing to filter hosts while making your selection.\nIt takes inspiration from Ansible's YAML-based inventory to simplify configuration, which is automatically translated into SSH config.\n\nUsage:\n  voidify [flags]\n\nFlags:\n  -c, --config-file string           specify the path to the YAML inventory file (required)\n  -h, --help                         help for voidify\n  -o, --out-ssh-config-file string   specify the path to the SSH config file (default: $HOME/.ssh/config)\n  -v, --version                      version for voidify\n  -w, --web-html-file string         optionally generate a static HTML website, specify the file path, including the file name, e.g., /tmp/voidify.html (Not generated by default)\n```\n\n\n## Inventory Config\n\nThe inventory configuration for Voidify is inspired by Ansible YAML inventory structure but simplified for ease of use. It consists of two main sections: `Environment` and `hosts`.\n\n- `Environment`: Represents different environments, such as `production` and `development`, where your hosts are grouped.\n- `hosts`: Defines individual hosts with user-friendly names, like `mariadb`, which make it easy to identify where you want to connect.\n\nInside each `host`, you need to specify `key: value` pairs, where `key` corresponds to a supported SSH config parameter. Ensure that the `key` is written exactly as it appears in a typical SSH config file. The `value` field holds the value for that key.\n\n\u003e [!NOTE]\n\u003e Voidify doesn't validate if the `key` is a valid SSH option, so make sure you provide supported SSH options.\n\nHere's an example:\n```yaml\n---\nproduction:\n  hosts:\n    mariadb:\n      HostName: \"database1.voidquark.com\"\n      Port: 222\n      user: \"user\"\n      IdentityFile: \"~/.ssh/database1_key\"\n      PreferredAuthentications: \"publickey\"\n      IdentitiesOnly: \"Yes\"\n    proxy:\n      HostName: \"proxy.voidquark.com\"\n      user: \"bob\"\n      IdentityFile: \"~/.ssh/proxy_key\"\n      PreferredAuthentications: \"publickey\"\n      IdentitiesOnly: \"Yes\"\ndevelopment:\n  hosts:\n    web:\n      HostName: \"nginx.voidquark.com\"\n      user: \"alice\"\n      PreferredAuthentications: \"password\"\n    grafana:\n      HostName: \"grafana.voidquark.com\"\n      user: \"john\"\n      IdentityFile: \"~/.ssh/grafana_key\"\n      PreferredAuthentications: \"publickey\"\n      IdentitiesOnly: \"Yes\"\n```\n\n\u003e [!IMPORTANT]\n\u003e Host must be a unique name. For example, you cannot have `mariadb` in `development` and `production` because then you will have the same entries in SSH config.\n\nThis configuration is then translated into an SSH config like this:\n```\nHost mariadb\n\tIdentityFile ~/.ssh/database1_key\n\tPreferredAuthentications publickey\n\tIdentitiesOnly Yes\n\tHostName database1.voidquark.com\n\tPort 222\n\tuser user\n\nHost proxy\n\tHostName proxy.voidquark.com\n\tuser bob\n\tIdentityFile ~/.ssh/proxy_key\n\tPreferredAuthentications publickey\n\tIdentitiesOnly Yes\n\nHost web\n\tPreferredAuthentications password\n\tHostName nginx.voidquark.com\n\tuser alice\n\nHost grafana\n\tHostName grafana.voidquark.com\n\tuser john\n\tIdentityFile ~/.ssh/grafana_key\n\tPreferredAuthentications publickey\n\tIdentitiesOnly Yes\n```\n\n## Installation\n\nVoidify is designed for installation on your workstation, to be executed via your terminal application.\n\n### Quick setup\n\nVoidify can be easily installed and run on your system with just a two steps. Here’s how:\n\n**Step 1: Download the Latest Release**\n\nVisit the [Releases section](https://github.com/voidquark/voidify/releases) of this repository and download the latest Voidify version compatible with your operating system.\n\n**Step 2: Run Voidify**\n\n```shell\n./voidify --config-file ~/voidify/my_inventory.yml --web-html-file ~/voidify/voidify.html\n```\n\n\u003e [!IMPORTANT]\n\u003e If you don't provide the `--out-ssh-config-file` flag, Voidify will generate an SSH config file in the default location: `$HOME/.ssh/config`. If you're testing this tool and your YAML doesn't contain all the hosts from your current SSH config, please ensure you have a backup to avoid overwriting.\n\n\u003e [!NOTE]\n\u003e **🖖 Handy Tip:** If you find `voidify` a bit too long to type each time you open your terminal, consider setting up an alias. For example, you can create an alias `alias qq=\"~/voidify/voidify --config-file ~/voidify/my_inventory.yml --web-html-file ~/voidify/voidify.html\"` that simplifies running Voidify. To set this alias in your OS (e.g., bashrc/profile), customize the flags to match your setup. Now, you can open your terminal and execute `qq` 🚀🚀🚀.\n\n## Build from source\n\n**Step 1: Get the source code**\n```shell\ngit clone https://github.com/voidquark/voidify\n```\n\n**Step 2: Download modules to local cache**\n```shell\ncd voidify\ngo mod download\n```\n\n**Step 3: Build voidify**\n```shell\ngo build\n```\n\n## Contribution\n\nThis application is written in [Go](https://go.dev/) and includes static website components HTML, CSS, and JavaScript.\n\nThis project serves as my initial venture into `Go` programming. My approach to learning `Go` involved creating a tool that I personally found valuable and wanted to share with the community. It’s my hope that this tool will be useful to others seeking a similar solution.\n\n## Author Information\n\nCreated by [VoidQuark](https://voidquark.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoidquark%2Fvoidify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvoidquark%2Fvoidify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvoidquark%2Fvoidify/lists"}