{"id":23141796,"url":"https://github.com/allaman/werkzeugkasten","last_synced_at":"2026-03-14T22:41:16.593Z","repository":{"id":232071199,"uuid":"783390966","full_name":"Allaman/werkzeugkasten","owner":"Allaman","description":"Download your favorite command-line tools with ease!","archived":false,"fork":false,"pushed_at":"2026-03-10T20:38:48.000Z","size":4217,"stargazers_count":26,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-11T01:54:29.233Z","etag":null,"topics":["admin","container","devops","linux","multi-arch","server","tools","troubleshooting","workflow"],"latest_commit_sha":null,"homepage":"","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/Allaman.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2024-04-07T18:58:43.000Z","updated_at":"2026-03-10T20:38:53.000Z","dependencies_parsed_at":"2024-04-07T20:24:18.901Z","dependency_job_id":"68d94709-21a2-4773-811a-0be10da2412a","html_url":"https://github.com/Allaman/werkzeugkasten","commit_stats":null,"previous_names":["allaman/werkzeugkasten"],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/Allaman/werkzeugkasten","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Allaman%2Fwerkzeugkasten","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Allaman%2Fwerkzeugkasten/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Allaman%2Fwerkzeugkasten/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Allaman%2Fwerkzeugkasten/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Allaman","download_url":"https://codeload.github.com/Allaman/werkzeugkasten/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Allaman%2Fwerkzeugkasten/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30520754,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-14T19:51:21.629Z","status":"ssl_error","status_checked_at":"2026-03-14T19:51:12.959Z","response_time":57,"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":["admin","container","devops","linux","multi-arch","server","tools","troubleshooting","workflow"],"created_at":"2024-12-17T14:14:28.019Z","updated_at":"2026-03-14T22:41:16.570Z","avatar_url":"https://github.com/Allaman.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eWerkzeugkasten 🧰\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cp\u003e\n    \u003cimg src=\"https://github.com/Allaman/werkzeugkasten/actions/workflows/release.yaml/badge.svg\" alt=\"Release\"/\u003e\n    \u003cimg src=\"https://img.shields.io/github/repo-size/Allaman/werkzeugkasten\" alt=\"size\"/\u003e\n    \u003cimg src=\"https://img.shields.io/github/issues/Allaman/werkzeugkasten\" alt=\"issues\"/\u003e\n    \u003cimg src=\"https://img.shields.io/github/last-commit/Allaman/werkzeugkasten\" alt=\"last commit\"/\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/Allaman/werkzeugkasten\" alt=\"license\"/\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/Allaman/werkzeugkasten?sort=semver\" alt=\"last release\"/\u003e\n  \u003c/p\u003e\n \u003cem\u003eConveniently download your favorite binaries (currently 157 supported)!\u003c/em\u003e\n\u003c/div\u003e\n\n![screenshot](https://s1.gifyu.com/images/SBpu4.png)\n\n\u003cdetails\u003e\n\u003csummary\u003eOpen a tool's README within werkzeugkasten\u003c/summary\u003e\n\n![readme.png](https://s11.gifyu.com/images/SBpu5.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eInstall a specific version\u003c/summary\u003e\n\n![release.gif](https://s14.gifyu.com/images/bsA18.gif)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eList categories and tool count\u003c/summary\u003e\n\n`werkzeugkasten -categories`\n\n![categories.png](https://s1.gifyu.com/images/SBpuN.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eList tools in category \"Text\"\u003c/summary\u003e\n\n`werkzeugkasten -category text`\n\n![category.png](https://s1.gifyu.com/images/SBpu9.png)\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eInstall tools in non-interactive mode\u003c/summary\u003e\n\n```sh\nexport WK_FLUX2_TAG=2.1.0 # optionally specify version\nwerkzeugkasten -dir ~/.local/bin -debug -tool flux2\n```\n\n![install.png](https://s1.gifyu.com/images/SBpuv.png)\n\n\u003c/details\u003e\n\nFrom time to time, I need to connect to containers and VMs to troubleshoot them. These systems typically only have the necessary tools for their specific purpose and nothing else. Additionally, there is no root account available, so installing tools through a package manager is not an option. Furthermore, some tools are either not available as a package or the packaged version is outdated.\n\nThis is where Werkzeugkasten comes in. You simply need to download the werkzeugkasten binary onto your system, and from that point on, there are no additional requirements, particularly the need for root permissions.\n\n## Get Werkzeugkasten\n\nUnfortunately, a tool to download the werkzeugkasten binary is required. It is possible to download files via bash and `/dev/tcp` **only**, but I couldn't figure out how to handle the redirect from Github when accessing a release URL.\n\nwith curl\n\n```sh\nVERSION=$(curl -s https://api.github.com/repos/allaman/werkzeugkasten/releases/latest | grep tag_name | cut -d '\"' -f 4)\ncurl -sLo werkzeugkasten https://github.com/Allaman/werkzeugkasten/releases/download/${VERSION}/werkzeugkasten_${VERSION}_$(uname -s)_$(uname -m)\n```\n\nwith wget\n\n```sh\nVERSION=$(wget -qO - https://api.github.com/repos/allaman/werkzeugkasten/releases/latest | grep tag_name | cut -d '\"' -f 4)\nwget -qO werkzeugkasten https://github.com/Allaman/werkzeugkasten/releases/download/${VERSION}/werkzeugkasten_${VERSION}_$(uname -s)_$(uname -m)\n```\n\n```sh\nchmod +x werkzeugkasten\n./werkzeugkasten\n```\n\nYou could also integrate werkzeugkasten in your golden (Docker) image. ⚠️ Keep possible security implications in mind.\n\n## How it works\n\nWerkzeugkasten is basically a wrapper around the excellent [eget](https://github.com/zyedidia/eget) that does the heavy lifting and is responsible for downloading the chosen tools. Eget itself is downloaded as binary via `net/http` call and decompression/extraction logic.\n\nThe awesome [charmbracelet](https://github.com/charmbracelet) tools [bubbletea](https://github.com/charmbracelet/bubbletea), [glamour](https://github.com/charmbracelet/glamour), and [lipgloss](https://github.com/charmbracelet/lipgloss) are used for a modern look and feel.\n\n## What Werkzeugkasten is not\n\nWerkzeugkasten is not intended to replace package managers (such as apt, brew, ...) or configuration management tools (such as Ansible, ...).\n\n## Usage\n\n```sh\n❯ werkzeugkasten -help\nUsage: werkzeugkasten [flags]\nFlags:\n  -categories\n        Print all categories and tool count\n  -category string\n        List tools by category\n  -debug\n        Enable debug output\n  -dir string\n        Where to download the tools (default \".\")\n  -help\n        Print help message\n  -tool value\n        Specify multiple tools to install programmatically (e.g., -tool kustomize -tool task)\n  -tools\n        Print all available tools\n  -update\n        Self-update\n  -version\n        Print version\n```\n\nWerkzeugkasten supports an **interactive** mode and a **non-interactive** mode.\n\n- `werkzeugkasten` will start in interactive mode. Key bindings:\n\n  | Key                     | Action                                                                       |\n  | ----------------------- | ---------------------------------------------------------------------------- |\n  | `j` / `k`,`down` / `up` | Move down / up                                                               |\n  | `i`                     | Install the selected tool                                                    |\n  | `d`                     | Open the tool's README in the TUI                                            |\n  | `r`                     | Browse releases and install a specific version                               |\n  | `b`                     | Open the tool's repository in the browser                                    |\n  | `c`                     | Open the categories view to filter tools by category (select \"All\" to clear) |\n  | `v`                     | Show the current werkzeugkasten version                                      |\n  | `/`                     | Text-search within the current (filtered) list                               |\n  | `?`                     | Unfold help footer                                                           |\n  | `q` / `ESC`             | Quit                                                                         |\n\n- `werkzeugkasten -tool age -tool kustomize` will download age and kustomize (latest release for both).\n\n- `werkzeugkasten -tools` will print all available tools.\n\n- `werkzeugkasten -categories` will print all available categories.\n\n- `werkzeugkasten -category network` will print all available tools in the \"network\" category.\n\n## Configuration\n\nBesides CLI flags, further configuration is possible with environment variables.\n\nSet a tool's version/tag explicitly:\n\n```sh\nexport WK_\u003cTOOL_NAME\u003e_\u003cTAG\u003e=1.33.7\nexport WK_KUSTOMIZE_TAG=v5.3.0`\n```\n\nSet a GitHub token to get more than the 60 API calls per hour limit:\n\n```sh\nexport EGET_GITHUB_TOKEN=\u003ctoken\u003e\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallaman%2Fwerkzeugkasten","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fallaman%2Fwerkzeugkasten","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallaman%2Fwerkzeugkasten/lists"}