A fast, zero-bloat CLI utility toolbox, written in Rust.
One binary. Every util you actually use. Nothing you don't.
- Why cmdutils
- Architecture
- Utils Supported
- Installation
- Usage
- Roadmap
- Using cmdutils as a Dependency
- Contributing
- License
The internet is full of "free" PDF, image, and file tools that come wrapped in pop up ads, tracking scripts, and a GUI you have to fight with just to compress one image.
cmdutils takes a different approach:
| Web Tools | GUI Apps | cmdutils | |
|---|---|---|---|
| Works offline | No | Yes | Yes |
| Zero telemetry | No | Sometimes | Yes |
| Zero adware | No | Sometimes | Yes |
| Scriptable / pipeable | No | No | Yes |
| Single static binary | No | No | Yes |
| Embeddable in your app | No | No | Yes |
cmdutils splits its core into two layers:
subnet: a category of utilities for a given domain (for exampleimage,pdf,text)util: a single command inside a subnet (for examplecompressinsideimage)
cmdutils
└── subnets
└── image (subnet)
├── resize (util)
├── compress (util)
└── convert (util)
This design keeps the core small while making it simple to add new subnets, such as pdf, text, or archive, without touching existing code.
| Util | Description | Status |
|---|---|---|
resize |
Resize an image to exact dimensions (any format) | Stable |
compress |
Compress an image (PNG: lossless max; JPEG/WebP: quality 1–100; others: re-encode) | Stable |
convert |
Convert between any supported formats (PNG, JPEG, WebP, BMP, GIF, TIFF, AVIF, SVG, and more) | Stable |
More subnets (pdf, text, archive) are on the roadmap below.
#clone and build from source
git clone https://github.com/yourname/cmdutils.git cd cmdutils cargo build --release
---
## Usage
```bash
cmdutils <subnet> <util> [options]
Examples:
# Resize an image to 800x600
cmdutils image resize input.png --width 800 --height 600 -o output.png
# Compress a JPEG to 70% quality
cmdutils image compress photo.jpg --quality 70 -o photo_compressed.jpg
# Convert PNG to JPEG
cmdutils image convert logo.png --to jpeg -o logo.jpgContributions, issues, and feature requests are welcome.
- Fork the repo
- Create your feature branch (
git checkout -b feature/new-subnet) - Commit your changes
- Open a PR
Licensed under the MIT License. See LICENSE for details.
No ads. No trackers. Just utils.