| Crates.io | oktofetch |
| lib.rs | oktofetch |
| version | 1.0.4 |
| created_at | 2025-10-15 18:24:24.298201+00 |
| updated_at | 2026-01-18 08:09:42.659824+00 |
| description | A GitHub release binary manager |
| homepage | |
| repository | https://github.com/mhalder/oktofetch |
| max_upload_size | |
| id | 1884772 |
| size | 191,166 |
A CLI tool to manage GitHub release binaries for Linux x86_64. Automatically downloads, extracts, and installs binaries from GitHub releases with version tracking.
.tar.gz, .tgz, .tar.bz2, .tbz, and .zip archives~ and environment variables in configurationRust 1.85.0 or later is required (edition 2024).
libssl-dev on Debian/Ubuntu, openssl-devel on Fedora/RHEL)cargo install oktofetch
git clone https://github.com/mhalder/oktofetch.git
cd oktofetch
cargo install --path .
Add a tool from a GitHub repository:
# Using owner/repo format
oktofetch add derailed/k9s
# Using full GitHub URL
oktofetch add https://github.com/jesseduffield/lazygit
# With custom name
oktofetch add derailed/k9s --name k9s-dev
# With custom binary name (when archive contains differently named binary)
oktofetch add owner/repo --binary custom-binary-name
Update a specific tool:
oktofetch update k9s
Update all managed tools:
oktofetch update --all
Force reinstall (even if version matches):
oktofetch update k9s --force
List all managed tools with their versions:
oktofetch list
Display detailed information about a tool:
oktofetch info k9s
Remove a tool from management (binary is not deleted):
oktofetch remove k9s
Show current configuration:
oktofetch config show
Change install directory:
oktofetch config set install_dir /custom/path
Add -v or --verbose for detailed output:
oktofetch update k9s -v
Configuration is stored in TOML format at ~/.config/oktofetch/config.toml.
[settings]
install_dir = "~/.local/bin"
[[tools]]
name = "k9s"
repo = "derailed/k9s"
version = "v0.32.5"
asset_pattern = "Linux_amd64"
[[tools]]
name = "lazygit"
repo = "jesseduffield/lazygit"
binary_name = "lazygit"
version = "v0.44.1"
| Key | Description | Default |
|---|---|---|
install_dir |
Directory where binaries are installed | ~/.local/bin |
The install_dir supports:
~/bin expands to /home/user/bin$HOME/.local/bin or ${HOME}/.local/binEach [[tools]] entry tracks an installed tool:
| Field | Required | Description |
|---|---|---|
name |
Yes | Tool identifier used in commands |
repo |
Yes | GitHub repository in owner/repo format |
version |
No | Currently installed version tag |
binary_name |
No | Custom binary name (defaults to tool name) |
asset_pattern |
No | Pattern to match specific release assets |
For private repositories or to avoid rate limits, set a GitHub token:
export GITHUB_TOKEN=your_token_here
Both classic tokens and fine-grained personal access tokens (github_pat_*) are supported.
Currently supports Linux x86_64 only. Asset matching looks for:
linux AND one of: x86_64, amd64, or x64| Code | Description |
|---|---|
| 0 | Success |
| 1 | Tool not found / General error |
| 2 | GitHub API error |
| 3 | No suitable release for platform |
| 4 | Configuration error |
| 7 | Download failed |
| 8 | Extraction failed |
| 9 | Binary not found in archive |
| 10 | IO error |
| 11 | HTTP error |
See CHANGELOG.md for release history.