This is a collection of free command-line tools I made in an attempt to learn Rust.
We currently have the following tools:
- A tool to read the public info on JWT tokens;
- A high-performance tool to read messages from EventHub,
- and another is to export the messages;
- A CSV data normalizer tool;
- A tool that splits large files (including CSV) into smaller ones;
- A tool that searches for multiple terms inside a text file and creates one output file per search term;
- A tool that mimics the cat command from Unix (useful on Windows);
- A tool that mimics the touch command from Unix (also useful on Windows);
- A tool that generates GUID (uuidv4) in the terminal with some nice options;
- A tool that converts unix timestamp to readable format and vice versa;
- A lightweight HTTP server for serving static files during development;
- A mock data generator for creating test data with various types of realistic information;
- An AI-powered chatbot agent for local or cloud LLMs;
- A CLI tool called HOW that fixes broken commands and suggests commands from natural language;
- A bare-bones, fully private, encrypted P2P chat tool called Whisper;
- A tool called Gitignore that generates/updates the
.gitignorefile of your project automatically; - An image editor called IMGx that allows do quickly do common operations like resizing, converting to another format, and to greyscale;
- An MQTT cli tool that can be used to quickly send or receive messages from a specific topic.
- A tool called aiignore that, similarly to gitignore, generates/updates known ai-ignore files for your project automatically;
- A tool to generate QRCodes that, as the name suggests, can be used to generate QRCodes to file or just printing them to the terminal.
- A tool to lookup that can either find text in multiple files or find files where the filename contains a specific text/pattern/regex.
- A tool that is like ping, but with extra features. It is called pingx.
- A wrapper tool called Whurl, that allows referencing one hurl file in another.
- A drop-in replacement for base64 called b64 that comes with a few extra features.
Well, three main reasons:
- 1st: I have a few tools and helpers made using Go, like my Azure Eventhub Tools, the go Whisper, gitignore, and the go help tools.
While I love Golang, it had a few incidents where malicious software was sneakily added to legit packages:
- https://thehackernews.com/2025/02/malicious-go-package-exploits-module.html
- https://thehackernews.com/2025/03/seven-malicious-go-packages-found.html
So I decided to recreate them using Rust. I'm not abandoning Go or saying we shouldn't use it or anything like that. I still love Go, I'm using those incidents as an opportunity to improve my knowledge in another great programming language and centralizing my tools and helpers in one place.
-
2nd: I use a couple of tools that are spread around a bunch of repositories, and that's a bit annoying to set up on new machines. So I also ported the JWT decoder tool that I created using Python, and the Split tool is an evolution of a powershell script I wrote a long time ago in a blog post.
-
3rd: Nice to have all the tools in a single repository, and being to generate a cross-platform executable, which helps a lot when you have to use Linux, MacOS, and Windows machines frequently.
Considering you have Rust installed, you can build all tools by running:
On Windows:
build.bat
On Linux/MacOs:
chmod +x ./build.sh
./build.shYou can use the convenience scripts which will:
- Install Rust if you don't already have it;
- Clone the repo;
- Build the tools;
- Make the tools available globally for the current user;
Running this script again will update the tools (but not Rust).
Convenience command:
curl -sSL https://raw.githubusercontent.com/brenordv/rusted-toolbox/refs/heads/master/convenience-build-ubuntu.sh | bashConvenience command:
curl -sSL https://raw.githubusercontent.com/brenordv/rusted-toolbox/refs/heads/master/convenience-build-macos.sh | bashBy the time I'm writing this, we have about 8.2 billion people in the world. Being optimistic, this means that the
chances of someone wanting to contribute (or maybe even use the tools here) are about 1:8,200,000,000 (that one
person being me).
Even so, I've created the contributing readme so future-me can remember how to organize things when I come back to this project after a while.
Everything under GNU Public License V3.
TL;DR:
- Anyone can copy, modify, and distribute this software.
- You have to include the license and copyright notice with every distribution.
- You can use this software privately.
- You can use this software for commercial purposes.
- If you dare to build your business solely from this code, you risk open-sourcing the whole code base.
- If you modify it, you have to indicate changes made to the code.
- Any modifications of this code base MUST be distributed with the same license, GPLv3.
- This software is provided without a warranty.
- The software author or license cannot be held liable for any damage inflicted by the software.
- #1: (EH tools) Change this to avoid needing the full connection string just to export messages.
- #2: Some files are way too big. Partly due to the documentation + testing. Some methods should be moved to different files.
- #3: Do a better job at showing, in a unified way, the default values for CLI arguments.
- #4: Add to all the command lines tools the possibility of changing the log level.
TODO: Improve this later
sudo apt-get update
sudo apt-get install -y build-essential pkg-config libssl-dev libcurl4-openssl-dev libxml2-dev libclang-dev