Capability-bounded file and directory comparison for the openOODA era.
v0.3.0 100% openOODA Myers LCS GNU diff Parity CI 100% Green MCP Native
curl -fsSL https://openooda-tools.github.io/oodiff/install.sh | bash
Installs native standalone binary to /usr/local/bin (or ~/.local/bin) with strict SHA-256 seal verification.
Signed release packages are attached to every GitHub release:
# Debian, Ubuntu (APT)
sudo apt install ./oodiff_0.3.0-1_amd64.deb
# Fedora, RHEL, Rocky, Alma (DNF)
sudo dnf install ./oodiff-0.3.0-1.*.rpm
Or install directly via the universal script with package manager integration:
curl -fsSL https://openooda-tools.github.io/oodiff/install.sh | bash -s -- --package
| Capability | GNU diff | oodiff |
|---|---|---|
| Default format | normal diff | normal diff (byte-for-byte identical) |
Unified format (-u, -U NUM) | yes | byte-for-byte hunk parity |
Exit codes (0 identical, 1 diffs, 2 error) | yes | POSIX exit code contract strictly held |
Normalization (-i, -w, -b, -B) | yes | UTF-8 multibyte case folding & whitespace pruning |
Directory recursion & creation (-r, -N) | yes | recursion cycle protected (ln -s . loop safe) |
Device nodes (/dev/null, /dev/stdin) | yes | pure capability interception for patch workflows |
| Performance optimization | heuristics | DJB2 integer line hashing + Myers LCS |
| Agent surface (MCP stdio) | no | JSON-RPC 2.0 (diff_files, diff_dirs) |
| Memory safety & DoS ceiling | unbounded | 100MB input ceiling, capability sandbox |
oodiff file_a.txt file_b.txt # Standard normal diff (default)
oodiff -u file_a.txt file_b.txt # Unified diff
oodiff -i -b -B file_a.txt file_b.txt # Ignore case, whitespace, & blank lines
oodiff -r -N src_v1/ src_v2/ # Recursive directory diff
oodiff --mcp # Model Context Protocol stdio server