ut: a developer toolbox that fits in one binary
A Rust based utilty toolbox for developers. Inspired from https://it-tools.tech
At a glance
- What is it?
- ut is a Rust command line utility toolkit that bundles the small jobs developers keep looking up, from Base64 and JWT to bcrypt, UUIDs, cron schedules, a local file server and an interactive regex tester. It is MIT licensed, installs with brew or a one-line script, and ships completions for six shells.
- Who is it for?
- Adopt ut if you want a single binary for the small encoding, hashing and text chores that otherwise send you to a web page or a package you have to remember, and if your work is on the command line anyway. Do not adopt it as a replacement for a focused tool in a production pipeline, since these are convenience commands, and do not put its token or password generation in a path where the output is written to a log.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 167 days ago.
- What is it written in?
- Mainly Rust, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Editorial analysis
One binary instead of a browser tab
ut is described as a fast, lightweight CLI utility toolkit for developers and IT professionals, providing a comprehensive set of commonly-used tools in a single binary, eliminating the need to install and remember multiple utilities or search for random websites to perform simple tasks. The last clause is the real motivation. The web toolkits that inspired it, and the project names that site directly, solve a problem that is really a distribution problem. Encoding a Base64 string, converting a timestamp, generating a UUID, building a JWT to test with, checking what a CIDR range means: each is a one-line job that in practice means opening a site, finding the right tool, pasting, copying, and closing the tab. Putting them in one binary that is already on the PATH removes the round trip. The scale of the toolkit is visible in the command tree, which groups the tools into Encoding, Hashing and Security, Data Generation, Text Processing, Development Tools, Web and Network, Color and Design, and Reference. It is a broad surface, and the design decision behind the broad surface is that each of these is small enough that a full implementation of it is not worth a separate install.
Four install routes, one of them a piped script
The install section gives four options and they are worth reading in order, because the trade-off is between convenience and how much you trust a shell script. On macOS or Linux through homebrew:
brew install ksdme/tap/utOn Linux or macOS through the shell script, which is piped straight into sh:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ksdme/ut/releases/latest/download/ut-installer.sh | shOn Windows through PowerShell, with the same pattern:
powershell -ExecutionPolicy Bypass -c "irm https://github.com/ksdme/ut/releases/latest/download/ut-installer.ps1 | iex"And from source, through cargo:
cargo install --git https://github.com/ksdme/ut.gitYou can also download prebuilt binaries directly from the releases page, which is the option with the least magic. The two piped-script routes are the ones to think about for a moment, since they execute a downloaded script with the privileges of your shell, and the Windows variant additionally bypasses the execution policy for the duration of the command. That is a normal pattern for developer tooling and it is also a real supply chain surface, so on a managed machine the cargo route or the release binary is the more defensible choice.
Completions for six shells, including the awkward ones
ut supports shell completions for bash, zsh, fish, nushell, elvish and PowerShell, which is a longer list than most Rust CLIs manage, and the nushell and elvish entries reflect a Rust-native approach where the completion generator is a library rather than a shell script. Each shell has its own idiom and the documentation shows them. For zsh, you can write the completion into your fpath:
ut completions zsh > ~/.zsh/completions/_utor evaluate it in your .zshrc, with the comment that this requires a reload for each ut update. Bash is the same idea with a different path:
ut completions bash > ~/.local/share/bash-completion/completions/utFish writes to ~/.config/fish/completions/ut.fish, and nushell has a short alias, since ut completions nu works as well as ut completions nushell, writing to ~/.config/nushell/completions/ut.nu. PowerShell appends to your profile. The completions themselves are generated by clap_complete and clap_complete_nushell, which are in the dependency list, so the completions match the argument parser rather than being maintained by hand. That detail is the one that matters for a toolkit that will keep gaining subcommands.
The command surface, and the tools you will actually use
The tool tree in the README is the best documentation of what is in the box. Under Encoding there is base64 with encode and decode, supporting both standard and URL-safe character sets and reading from files or stdin, and url with parse, encode and decode. Under Hashing and Security there is hash with md5, sha1, sha224, sha256, sha384 and sha512, bcrypt with hash and verify, and jwt with encode, decode and verify. Data Generation covers uuid with v1, v3, v4, v5 and v7, plus token with the aliases secret and password, lorem, and random for random numbers. Text Processing has case with nine conversions from lower and upper through camel, title, constant, header, sentence, snake and kebab, pretty-print with the alias pp, and diff for comparing text with visual output. Development Tools has calc with the alias cal, json with a builder, an interactive regex tester, crontab with schedule, and datetime with the alias dt. Web and Network has ip with a cidr describe subcommand, http with status, serve for a local HTTP file server, and qr for QR codes. Color and Design has color with convert, and Reference has unicode for a symbol lookup. A few of the examples show the style, for example ut base64 encode "hello world" and ut hash sha256 "hello world" both read a string, and echo -n "hello world" | ut base64 encode - pipes one in.
bcrypt and JWT, and the flags that matter
Two of the commands deserve a closer look because they touch credentials. The bcrypt subcommand hashes and verifies passwords with configurable cost factor, with built-in salt generation for each hash, verification returning valid or invalid, and a cost factor range of 4 to 31 with a default of 12, where higher is more secure but slower. That is a sensible default and the range is wide enough to be used deliberately. The jwt subcommand encodes, decodes and verifies tokens, supporting the HMAC algorithms HS256, HS384 and HS512, encoding with custom claims including iss, sub, aud and exp, decoding without verification to inspect a token, and verifying with signature validation:
ut jwt encode --payload '{"user":"alice"}' --secret "my-secret" --issuer "my-app" --expires-in 3600and verification takes the token, the secret and the issuer:
ut jwt verify TOKEN --secret "my-secret" --issuer "my-app"The token generator is the third credential-adjacent command, and the documentation is explicit that it generates cryptographically secure random tokens with customizable length and character sets, using OS-level secure randomness, and that it can be used for passwords, API keys and session tokens, with flags to leave out symbols or uppercase letters. The uuid generator covers versions v1 through v7 with the semantics spelled out, including v3 as a namespace plus MD5 hash, v5 as a namespace plus SHA-1 hash and v7 as timestamp-based and sortable.
A web server and a terminal UI hiding in the dependencies
The dependency list explains what some of the tools are actually built on. clap with the derive feature is the argument parser, and clap_complete plus clap_complete_nushell generate the shell completions. For the web and network side there is axum with axum-extra, tokio with the full feature set, tower and tower-http with the fs, util and trace features, which is the stack behind the local HTTP file server and the HTTP status lookup. On the terminal side there is ratatui with crossterm and tui-textarea, which is a full-screen terminal user interface framework, and that is presumably what backs the interactive regex tester rather than a simple line-based interface. The parsing side is nom with nom-language for the expression parser behind the calculator, along with num-traits and rust_decimal with macros and maths for the arithmetic, which is the part of the design that stops a calculator from turning 0.1 plus 0.2 into something embarrassing. The text and diff commands use the similar crate for line comparison and the edit crate for editing, the cron crate with chrono and jiff for the crontab schedule tool, and the qrcode and image crates for QR generation, csscolorparser with the lab feature for colour conversion, and tabled for the tabular output. The crate itself is edition 2024 at version 0.7.0, and the workspace has a release profile for cargo-dist that inherits release and enables thin LTO.
Where ut is the wrong tool
Three limits are worth stating. The first is that these are convenience commands, and convenience commands are not dependencies. A script that generates a token for production should not be shelling out to a general-purpose toolbox that may be replaced or removed, and the token and password generators in particular produce secrets that are then pasted into a shell history, so a tool whose whole point is convenience is a poor fit for a secret that must not be logged. The second is that the tools are local and small by design, which means the things a developer actually needs at scale are missing. There is no bulk mode for the hash command, no file comparison, no HTTP client for testing endpoints, and no scripting surface for the interactive tools. The third is the trust question around the piped installers, which applies to any tool distributed this way but matters more for a binary that touches credentials. The project itself is small and moving, with the last push on 2026-05-08 and the current release v0.7.0 from that same day, after v0.6.0 in December 2025 and v0.5.0 in November 2025, which is a release every few months rather than a fast cadence. A user who wants a stable tool for daily use should pin a version rather than track the tip.
Editorial conclusion
Adopt ut if you want a single binary for the small encoding, hashing and text chores that otherwise send you to a web page or a package you have to remember, and if your work is on the command line anyway. Do not adopt it as a replacement for a focused tool in a production pipeline, since these are convenience commands, and do not put its token or password generation in a path where the output is written to a log. Before you install, check the tool list against what you actually use, and note that the last push was on 2026-05-08 with the current release at v0.7.0, so the project is moving at a release every few months rather than a release a week.
Frequently asked questions
What is ut and what does it replace?
It is a Rust CLI utility toolkit for developers and IT professionals that bundles commonly-used tools in a single binary, so you do not have to install and remember multiple utilities or search for random websites to perform simple tasks. The project says it was inspired by it-tools.tech.
How do I install ut?
With `brew install ksdme/tap/ut` on macOS or Linux, with the shell installer `curl --proto '=https' --tlsv1.2 -LsSf https://github.com/ksdme/ut/releases/latest/download/ut-installer.sh | sh`, with the PowerShell installer on Windows, with `cargo install --git https://github.com/ksdme/ut.git` from source, or by downloading a prebuilt binary from the releases page.
Which shells does ut provide completions for?
Bash, zsh, fish, nushell, elvish and PowerShell. Each is generated with the ut completions subcommand, for example `ut completions zsh > ~/.zsh/completions/_ut`, and the completions are produced by clap_complete and clap_complete_nushell so they track the argument parser.
What are the bcrypt defaults in ut?
The bcrypt command hashes and verifies passwords with a configurable cost factor ranging from 4 to 31, defaulting to 12, where a higher cost is more secure but slower. It generates a salt for each hash and verification returns valid or invalid.
What licence is ut released under?
The MIT License, with the LICENSE file in the repository root. The current release is v0.7.0 from 2026-05-08 and the last push to the repository was on 2026-05-08.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/ksdme-ut)