Open Source · MIT License · Single Binary

Know who changed what.
Even when it's not human.

Real-time code modification tracking with smart diffs, git attribution, and instant notifications. One binary. Zero config. Total visibility.

Install 0diff View on GitHub
$ curl -fsSL https://0diff.dev/install.sh | sh copy
0diff watch — ~/project/flin
$ 0diff watch
▸ Watching 847 files across 23 directories...
▸ Git: main branch, 3 contributors tracked
 
[14:32:05] src/parser.rs +12 -3 (alice on feature/parser)
@@ -45,3 +45,12 @@
- fn parse_expression(&mut self) -> Result<Expr> {
+ fn parse_expression(&mut self, precedence: u8) -> Result<Expr> {
+ let left = self.parse_primary()?;
 
[14:33:41] src/typechecker/checker.rs +47 -2 ( Claude Agent on fix/enum-collision)
@@ -189,2 +189,49 @@
+ // Resolve enum variant / entity name collision
+ fn resolve_name_shadowing(&mut self, scope: &Scope) {
 
→ Slack #dev-changes notified
→ Discord #code-watch notified

Every team has lived this nightmare.
Untracked changes in complex codebases cost teams days of debugging, missed deadlines, and broken trust. These stories happen every single day.

The 3 AM Production Crash

Production is down. Your team scrambles to find what changed. 47 files were modified across 6 branches in the last 24 hours. Nobody remembers touching the database migration file. You git log each file one by one. Three hours later, you find a one-line change in a config file that nobody flagged.

"Who touched the connection pool settings? Nobody remembers. git blame says it was merged 3 days ago buried in a 200-file PR."

The Ghost Modification

Your code worked perfectly yesterday. Today, a critical function returns wrong values. You didn't change anything. But someone did — an AI assistant reformatted a file and silently changed an indentation-sensitive block. The diff looked like "whitespace cleanup." It was actually a logic change hiding in plain sight.

"Cursor auto-formatted my Python file. It looked cosmetic. It changed the indentation of a nested if-block. Took us 2 days to find it."

The "It Wasn't Me" Problem

Five developers working on the same module. A regression appears after a merge. Everyone says they didn't touch that file. Git blame shows a merge commit — unhelpful. You need to know who changed what, when, and on which branch, before it was merged and the history was squashed.

"After squash merge, git blame shows one author for 500 lines. The actual modification that broke things? Lost in the squash."

The Rogue AI Agent

You're running 5 Claude Code agents in parallel across different terminals. Agent 3 decides to "fix" a utility function that Agents 1, 2, 4 and 5 all depend on. Everything breaks. Every agent commits under your name. There's no way to know which agent changed which file without reading every diff manually.

"I had 100 agents spawned on a complex Rust project. One agent refactored a shared module. 4 other agents started failing silently. I didn't know for 45 minutes."

The 5,000-Line File Nobody Reads

Your core module is 5,000+ lines. Critical business logic, carefully balanced over years. A junior dev or an AI assistant makes a small change in line 3,847. No one reviews it because the PR diff is too large. It ships. Two weeks later, an edge case surfaces. Finding which of the 40 changes in that file caused it becomes an archaeological dig.

"We have a 7,000 line legacy controller. We literally cannot review every change to it. We just pray."

The Friday 5 PM Surprise

Someone pushed a "quick fix" at 4:58 PM on Friday. No review, no notification. Monday morning: the staging environment won't boot. The weekend batch job corrupted 10,000 records because of a changed validation rule. If anyone had been notified in real-time, it would have been a 5-minute fix. Instead, it's a Monday morning disaster.

"If I had gotten a Slack notification when that file changed, I would have caught it in 30 seconds. Instead it cost us the whole weekend's data."
The real cost
Untracked changes don't just cause bugs.
They cost real money.
23%
of developer time spent debugging issues caused by untracked modifications
4.2h
average time to identify the root cause of a change-related regression
$680K
average annual cost per engineering team from preventable change-related incidents
67%
of production incidents trace back to a code change that bypassed proper review

Real-time visibility into every change.
Before it becomes a problem.
0diff watches your codebase, computes intelligent diffs, identifies who made each change, and notifies your team instantly. All in a single binary.

Real-Time File Watching

Native OS-level monitoring using inotify (Linux), FSEvents (macOS), and ReadDirectoryChanges (Windows). Debounced to avoid noise. Instant detection, zero CPU overhead.

0diff watch

Smart Diff Engine

Myers algorithm computes precise, line-level diffs. Optionally ignore whitespace-only changes, comment modifications, or changes below a configurable threshold. See what actually matters.

filter.ignore_whitespace = true

Git Attribution

Automatically detects the current branch, runs git blame on modified lines, and identifies the author. Know exactly who changed each line, even before the commit.

0diff log --author "alice"

Instant Notifications

Push notifications to Slack (Block Kit formatted), Discord webhooks, or any HTTP endpoint. Thread by file to keep channels clean. Know the moment something changes.

0diff test

Searchable History

Every change is logged to a local JSON-lines file. Query by author, file, date range, or branch. Full audit trail without relying on git log archaeology.

0diff log --file "parser.rs"

Zero Configuration

Run 0diff init and you're watching. Smart defaults handle ignore patterns, extensions, and debouncing. Customize later with a simple TOML file. Works with any language, any project.

0diff init

Background Daemon

Run 0diff as a background daemon that persists across terminal sessions. Start once, forget about it. Your team's watchdog is always on.

0diff watch --daemon

Daily Digest

Get periodic summaries: "Today, 47 files modified by 3 authors. Most touched: parser.rs (12 changes)." The executive view for team leads and CTOs.

notifications.digest.interval_hours = 4

Single Binary

Written in Rust. Compiles to a single static binary under 10MB. No runtime, no dependencies, no node_modules. Install with curl, run anywhere. Cross-platform.

curl -fsSL 0diff.dev/install.sh | sh

Built for how you actually work.
Whether you're a solo developer, a distributed team, or managing an army of AI agents.

You're building alone. But you're not alone anymore.

You use Copilot, Cursor, Claude Code. They write code in your files while you're focused elsewhere. You tab back and something's different but you can't tell what. You git diff constantly but forget to check. Hours later, a subtle bug appears and you have no idea when it was introduced.

With 0diff, every modification is logged the instant it happens. You see exactly what changed, even across multiple AI-assisted sessions. No more "wait, did I write that or did the AI?"

Scenario

You're editing auth.rs in one tab. Copilot auto-completes a function in utils.rs in another. 0diff catches it immediately and shows you the exact diff with a terminal notification — before you even switch tabs.

0diff — solo workflow
[09:14:22] src/auth.rs +3 -1 (you)
+ let token = jwt::encode(&claims)?;
 
[09:14:23] src/utils.rs +18 -0 ( Copilot)
+ pub fn validate_token(token: &str)
+ -> Result<Claims, AuthError> {
+ let decoded = jwt::decode(
+ token, &KEY, &Validation::default()
+ )?;
...
 
ℹ 2 files changed in last 5 min

5 developers. 200 files. Nobody knows what anyone else is touching.

Your team is distributed across 3 time zones. Alice refactors a utility function at 2 AM your time. Bob starts building on the old API at 8 AM. By noon, there's a conflict that takes 4 hours to untangle. Git shows the merge conflict. It doesn't show the moment the divergence started.

With 0diff pushing to a shared Slack channel, every developer sees every change as it happens. Conflicts are prevented, not just resolved. Your team becomes aware of each other's work in real-time.

Scenario

Alice modifies api/routes.rs. Bob gets a Slack notification instantly with the exact diff. He adjusts his approach before writing a single conflicting line.

#dev-changes — Slack
┌─────────────────────────────────────┐
alice modified api/routes.rs
feature/v2-endpoints
+22 -8 lines · 3 hunks │
- GET /api/users/:id
+ GET /api/v2/users/:id
Bob also has this file open
└─────────────────────────────────────┘

You need the big picture, not every diff.

As a tech lead or CTO, you don't need to see every line change. You need to know: which critical files were modified today? How many changes hit production-sensitive code? Is the new hire touching files they shouldn't be?

0diff's daily digest gives you exactly this. A periodic summary of all modifications, grouped by author and file, with hotspot detection for frequently-changed files. Executive visibility without the noise.

Daily digest example

"Today: 127 modifications across 34 files by 5 authors. Hotspots: core/engine.rs (23 changes), db/migrations/ (8 changes). Flagged: new contributor touched security/auth.rs."

0diff log --summary
═══ Daily Summary — Feb 14, 2026 ═══
 
Authors:
alice +342 -89 │ 14 files
bob +127 -43 │ 8 files
agent-3 +891 -202 │ 12 files
 
Hotspots:
core/engine.rs │ 23 changes │ HIGH
db/schema.rs │ 8 changes │ MEDIUM
security/auth.rs │ 3 changes │ SENSITIVE

Some files cannot afford silent changes.

Database migrations. Authentication logic. Payment processing. Encryption keys. These files need a different level of vigilance. A single unreviewed change in payment_handler.rs can cost millions. A silent modification to .env.production can expose secrets.

0diff lets you configure critical file alerts with elevated notifications — different channels, louder alerts, mandatory review triggers. Changes to sensitive paths are impossible to miss.

Config example

Watch db/migrations/*, security/*, .env* with immediate Slack DM to tech lead + Discord alert to #security-audit. Zero tolerance for silent changes.

.0diff.toml — critical paths
# Critical file monitoring
[[watch.critical]]
paths = ["db/migrations/", "security/"]
alert_level = "urgent"
notify = ["slack-dm:@cto", "discord:#security"]
 
[[watch.critical]]
paths = [".env*", "secrets/"]
alert_level = "critical"
notify = ["slack-dm:@cto", "webhook:pagerduty"]
block_unreviewed = true

Built for the age of
AI-assisted development.

You run Copilot, Cursor, Claude Code, Codex. They write code in your files, under your name, without asking. Traditional tools were built for a world where humans were the only authors. 0diff is the first tool designed for human + AI codebases.

Agent Detection

Detect patterns from known AI tools (Claude, Cursor, Copilot). Flag non-human changes automatically with a marker.

Multi-Agent Tracking

Running 5 agents in parallel terminals? 0diff tracks each one independently and shows which agent modified which file.

Collision Detection

When Agent A modifies a file that Agent B depends on, 0diff alerts immediately — before cascading failures start.

Comparison
Why not just use git diff?
You can. But here's what you'll miss.
Capability git diff watchexec fswatch 0diff
Real-time file watching
Smart diff (show what changed)
Author attribution (manual)
Slack / Discord notifications
Searchable change history
Whitespace / comment filtering (flags)
AI agent detection
Single binary, zero deps (compile)
Background daemon mode

Install in 10 seconds. Watch in 20.
Single binary. No dependencies. No runtime. No nonsense.

Quick Install (macOS / Linux)

curl -fsSL https://0diff.dev/install.sh | sh copy

Build from Source

git clone https://github.com/zerosuite-inc/0diff.git && cd 0diff && cargo install --path . copy

Cargo (from GitHub)

cargo install --git https://github.com/zerosuite-inc/0diff.git copy

Uninstall

rm $(which 0diff) copy

Single binary, no config files outside your project. Remove the binary and you're done.

First run
$ cd my-project
$ 0diff init
✓ Created .0diff.toml with smart defaults
✓ Detected: Rust project, 847 files
 
$ 0diff watch
▸ Watching 847 files...
▸ Ready. Edit a file to see 0diff in action.

Stop guessing.
Start watching.

Open source. Free forever. Built with Rust.
A ZeroSuite product.

Install 0diff Star on GitHub