/tools
All Tools (25)
Single-purpose CLI tools for engineers. Every tool MIT licensed, production-tested at S-Tech Solutions. Click a name to see details.
jfq
A fast JSON processor that reads data from files or stdin and supports dot-notation queries for extracting nested values. Pretty-prints by default with a --minify option for compact output. Uses serde_json under the hood for reliable parsing. Handles large JSON documents and arrays of objects.
jfq .users[0].email < data.json
jfq --file data.json --query .items --minify
lines
A fast file search tool that finds regex matches across files and directories. Supports recursive directory traversal with automatic hidden file/directory skipping. Colour-coded output highlights matches in red, file paths in magenta, and line numbers in yellow. Can search single files or entire directory trees. Lightweight alternative to grep with sensible defaults.
lines -i 'fn main' src/
lines -r 'TODO' .
lines -c 'use' src/
stree
A zero-configuration static file server that serves a directory over HTTP. Perfect for local development, sharing files on a LAN, or previewing static sites. Sets correct MIME types based on file extensions, supports CORS headers, and shows a directory listing for the root. Single binary, no configuration files needed.
stree --port 3000 --dir ./public
stree --port 8080 --cors
camel
A text case converter that transforms strings between the four most common programming naming conventions. Supports input from command line arguments or files. Handles mixed-case input intelligently and preserves numbers. Essential for code migrations between codebases with different naming conventions.
camel --to snake 'userName'
camel --to kebab 'PascalCase'
camel --to pascal 'kebab-case'
jwt
A CLI tool for working with JSON Web Tokens. Decode any JWT to inspect its header and payload without needing the secret. Supports token validation and custom payload encoding. Uses base64url decoding for inspection and supports HMAC-SHA256 signing for encoding. Useful for debugging auth flows and testing API authentication.
jwt --inspect token.jwt
jwt --encode payload.json --secret mysecret
hashdir
Walks a directory tree and computes SHA256 hashes for every file, producing a sorted manifest of hashes and paths. Useful for verifying file integrity across backups, detecting changes in directory snapshots, or generating checksum manifests for release archives. Outputs in text or JSON format.
hashdir -p ./backup -o manifest.txt
hashdir -p ./release --json
mdetect
Identifies file types by reading the first bytes (magic bytes/signatures) of a file, not by trusting the file extension. Supports detection of PNG, JPEG, GIF, WebP, BMP, PDF, ZIP, GZIP, ELF, MP3, MP4, OGG, WAV, TIFF, SVG, XML, and more. Essential for security audits, forensic analysis, and verifying file integrity.
mdetect -f unknown.bin -b
mdetect -f document.pdf
qrc
Generates QR codes rendered as Unicode block characters in the terminal. Perfect for sharing URLs, Wi-Fi credentials, or contact information directly in the terminal without needing a separate app or website. Takes text input and outputs a scannable QR code using UTF-8 block characters for terminal display.
qrc --data 'WIFI:T:WPA;S:network;P:password;;'
qrc -f url.txt
dmarc-inspector
A single-binary CLI that takes a DMARC aggregate report (file path or URL) and prints a structured summary table. Shows domain, DKIM/SPF alignment results, disposition, source IPs, and volume counts. Handles gzip-compressed reports automatically. Essential for anyone running DMARC who needs quick insight without a dashboard.
dmarc-inspector https://example.com/report.xml.gz
httptrace
Traces the full path of an HTTP request and renders a waterfall diagram in your terminal. Measures DNS resolution, TCP connect time, TLS handshake duration, and HTTP response time per hop. Follows redirects up to a configurable depth. Color-coded output makes it easy to spot where latency lives. Great for debugging slow APIs, CDN issues, and proxy chains.
httptrace --method POST --header 'Authorization: Bearer *** https://api.example.com
logtail
A terminal log viewer that colour-codes lines by log level (ERROR in red, WARN in yellow, INFO in blue, DEBUG in green) and supports regex filtering with case-insensitive mode. Detects and pretty-prints JSON log lines with coloured keys. Follows stdin in real-time like tail -f. Prints a summary on exit showing total, matched, and filtered line counts. Clean SIGINT handling.
logtail --file app.log --filter 'ERROR|timeout'
journalctl -fu nginx | logtail --json
pg-snapshot
Connects to a PostgreSQL database and produces a compact summary of its health and structure. Shows the largest tables sorted by size, row counts, index counts, currently running queries with durations, and connection breakdown by state. Uses psql under the hood so no Python database drivers are needed. Supports --watch mode for continuous monitoring. Essential for daily DB health checks.
pg-snapshot --db-url postgres://user:***@host:5432/mydb --watch 30
pingd
A minimal health-check daemon configured with a JSON file. Supports HTTP (checks for 2xx status), TCP (checks connection), and command-based (checks exit code) checks. Runs each check on a configurable interval and executes a command on failure. Includes a --oneshot mode for single-run checks. No containers, no config server, no dashboard — scp the binary and a config file and you have monitoring in 2 minutes.
pingd --oneshot
dupes
A fast duplicate file detector that uses SHA256 hashing to find identical files anywhere on your filesystem. Uses a two-pass strategy: first groups files by size (cheap), then hashes only same-size candidates (expensive). Reports wasted disk space. Respects hidden file skipping, depth limits, and minimum size thresholds. Essential for reclaiming disk space in large photo, backup, or document collections.
dupes --min-size 1MB ~/photos
dupes ~/documents ~/backups
envcheck
Reads a .env file and checks for common mistakes: duplicate keys, trailing whitespace, unquoted special characters ($, `, \, !), empty values for required keys, and comments that look like they should be uncommented. Supports --fix to auto-correct trailing whitespace (with backup). Exits with code 0 for clean, 1 for warnings, 2 for errors. Ships as a single Python script with zero dependencies.
envcheck --file .env.production --require DB_HOST,DB_PORT,DB_NAME --fix
certwatch
Connects to one or more domains via TLS, retrieves the certificate, and reports the expiration date. Colour-coded output: green (>30 days), yellow (7-30 days), red (<7 days or expired). Supports SNI, custom ports, and can run an alert command when certs are approaching expiry. Perfect for cron-driven certificate monitoring. JSON output mode for machine parsing.
certwatch --config domains.json --days 14 --alert 'notify.sh {domain} {days}'
dumpenv
Runs any command in a minimal environment (only PATH, HOME, USER, PWD, SHELL, LANG) and diffs the command's visible environment against your current shell. Surfaces which environment variables would leak into a subprocess and which ones your command needs but won't have. Helps reproduce 'it works on my machine' bugs by showing exactly what the command sees. Passes through exit codes.
dumpenv --exclude PATH,HOME --show-all python my_script.py
httpbin-local
A zero-dependency HTTP server that prints every incoming request to stdout: method, path, headers, and body (up to 10KB). Handles any HTTP method. Each request gets a unique ID and returns 200. Useful for debugging webhooks, reverse proxy configs, API clients, and CI pipeline callbacks. No network latency, no third-party service, no data leaving your machine.
httpbin-local --port 9090 --quiet
confdiff
Compares two configuration files (JSON or .env format) and shows only meaningful differences — ignoring whitespace, comments, and key order. Flattens nested JSON to key paths and diffs the structure. Shows added keys, removed keys, and modified keys with before/after values. Ideal for reviewing config changes between deploys or environments. Colour-coded output for quick scanning.
confdiff --brief --color .env.staging .env.production
dbdocs
Connects to a PostgreSQL database and generates a complete Markdown document of the schema. Includes all tables with columns (name, type, nullable, default, description), primary keys, foreign keys, indexes, and enum types. Uses psql under the hood — no Python database drivers needed. Output to stdout or file. Perfect for onboarding new team members, code review, and README documentation.
dbdocs --db mydatabase --output SCHEMA.md --tables users,orders
sizemap
Walks a directory tree and shows a compact, colourised view of disk usage. Shows total size per directory including all children, with human-readable units (KB, MB, GB, TB). Supports depth limiting, size-based sorting, minimum-size filtering, and JSON output. Skips hidden directories by default. Uses os.scandir for performance. Better than du -sh because it shows the full tree structure.
sizemap --path /var/log --depth 5 --sort size --min-size 100MB
pubip
Queries multiple public IP information APIs (ipify, ipinfo, icanhazip) with automatic fallback if one fails. Displays your public IP address, ASN, ISP, and approximate location. Supports --watch mode that polls every 5 seconds and highlights changes — useful for debugging VPNs, proxies, and multi-homed servers. JSON output for scripting.
pubip --watch --json
git-age
Lists all git branches with their last commit date, author, and days since last update. Colour-coded staleness: green for recent, yellow for >30 days stale, red for >90 days stale. Supports filtering by staleness threshold and includes remote branches. Essential for repo hygiene — quickly identify branches that can be cleaned up.
git-age --stale 60 --all
logspike
Reads a log stream (stdin or file) and uses a sliding time window to count how often each line pattern appears. When frequency exceeds a configurable threshold, it surfaces the pattern. Detects spikes by comparing current window count to the previous window. Normalises common patterns (timestamps, UUIDs, IPs) for better grouping. Essential for spotting error bursts during incidents without staring at the firehose.
logspike --file app.log --window 120 --threshold 5 --spike-ratio 300
ssh-pubkeys
Reads your local SSH keys (~/.ssh/*.pub) and authorized_keys, then produces a deployment map showing which keys are deployed where. Shows key type (ED25519, RSA, ECDSA), fingerprint, comment, and last-used date. Matches local keys against deployed keys to identify gaps. Useful for SSH audits, key rotation, and answering 'which servers have my deploy key?'
ssh-pubkeys --json
ssh-pubkeys --host web-server-01