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)