CLI Tool
Hash files from your terminal. Cross-platform, accessible, and privacy-focused.
Installation
macOS (Homebrew)
brew install afterdarksys/tap/filehashesio
Linux (deb/rpm)
# Debian/Ubuntu
curl -sL https://filehashes.io/install.sh | sudo bash
sudo apt install filehashesio
# RHEL/Fedora
sudo dnf install filehashesio
Windows (Scoop)
scoop bucket add afterdark https://github.com/afterdarksys/scoop-bucket
scoop install filehashesio
Go Install
go install github.com/afterdarksys/filehashesio/cmd/filehashesio@latest
Download Binary
Download pre-built binaries for your platform:
| Platform | Architecture | Download |
|---|---|---|
| macOS | ARM64 (Apple Silicon) | filehashesio-darwin-arm64.tar.gz |
| macOS | x86_64 (Intel) | filehashesio-darwin-amd64.tar.gz |
| Linux | x86_64 | filehashesio-linux-amd64.tar.gz |
| Linux | ARM64 | filehashesio-linux-arm64.tar.gz |
| Windows | x86_64 | filehashesio-windows-amd64.zip |
| Windows | ARM64 | filehashesio-windows-arm64.zip |
Quick Start
Configure (optional)
Add your API key for upload tracking:
filehashesio config --api-key fh_your_api_key_here
Hash a File
Compute SHA256, SHA1, and MD5 hashes:
$ filehashesio hash document.pdf
Hash computed.
SHA256: a1b2c3d4e5f6...
SHA1: 1a2b3c4d5e6f...
MD5: abcd1234...
Size: 1,234,567 bytes
File: document.pdf
Look Up a Hash
Check if a hash exists in the database:
$ filehashesio lookup a1b2c3d4e5f6...
Hash found.
SHA256: a1b2c3d4e5f6...
Filename: document.pdf
Times seen: 47
First seen: 2025-01-01
Last seen: 2026-01-04
Submit a Hash
Compute and submit to the database:
$ filehashesio submit document.pdf
Hash submitted.
SHA256: a1b2c3d4e5f6...
Status: New entry created
ID: 12345
Commands
filehashesio hash <file>- Compute and display hashes for a file (SHA256, SHA1, MD5)
filehashesio lookup <hash>- Look up a hash in the filehashes.io database
filehashesio submit <file>- Compute hashes and submit to the database
filehashesio watch <directory>- Watch a directory and hash new/modified files
filehashesio config- Configure API endpoint and API key
filehashesio status- Show connection status and account info
filehashesio version- Show version and build information
Output Formats
The CLI supports multiple output formats for different needs:
Plain (default, screen-reader friendly)
filehashesio lookup a1b2c3... --format plain
JSON (for scripting)
filehashesio lookup a1b2c3... --format json
Fancy (visual users)
filehashesio lookup a1b2c3... --format fancy
Plain output is the default to ensure accessibility with screen readers like VoiceOver, NVDA, and JAWS.
Watch Mode
Monitor a directory for new and modified files:
# Watch Downloads folder
filehashesio watch ~/Downloads
# Watch with auto-submit
filehashesio watch ~/Downloads --submit
# Watch multiple directories
filehashesio watch ~/Downloads ~/Documents --submit
With an API key, watched files are tracked in your account dashboard.
Integration with AfterDark
The CLI integrates with the AfterDark ecosystem:
- darkd service: Enable the filehash service in darkd for automatic monitoring
- Local cache: Offline-first with SQLite cache
- Sync on connect: Hashes sync when connectivity is restored
# Enable in darkd configuration
darkd config set filehash.enabled true
darkd config set filehash.api_key fh_your_key
darkd config set filehash.watch_paths ~/Downloads,~/Documents
Privacy
- Only hashes are transmitted, never file contents
- Filenames are optional (use
--no-filename) - Local-only mode available (
--local) - All API communication is encrypted (TLS 1.3)