Different is a small agentic app built with DeepAgents. It does two things:
- First, it looks at an "inspiration" local Git repository and tries to extract recent bug fixes and security fixes, skipping docs/formatting/test/refactor-only commits unless the diff shows an actual bug fix. It outputs a structured JSON file with one entry per fix, including idea-level root causes and tags so matching can be flexible.
- Then, it takes that JSON and checks a “target” local Git repository to see if the same problems likely apply there. It outputs another JSON file with one entry per finding.
The logic is agentic: an LLM calls local Git tools (and optional GitHub API tools) in a loop to inspect commits, diffs, and related PR/issue context. The target assessment agent now follows a security-judge style and appends a clear verdict to each assessment's why field.
If you’re doing differential fuzzing between two codebases, you should also use this tool too.
The default config uses OpenAI gpt-5.2 with reasoning_effort="xhigh", so you usually want OPENAI_API_KEY set. If you switch to a Claude model via --model, you need ANTHROPIC_API_KEY.
The app reads different.toml. This is where you set the “recent” window (days + max commits), how many patch lines are fetched per commit, whether GitHub enrichment is enabled, whether HTML reports are generated, and the default model settings. You can also set extract.since_date (YYYY-MM-DD or ISO-8601) to scan from a fixed date; it overrides since_days.
You can override the model per run with --model.
Run the full workflow (extract -> check):
uv sync --all-groups
different-agent --inspiration /path/to/inspiration-repo --target /path/to/target-repoRun extraction only (skip target analysis):
uv sync --all-groups
different-agent --inspiration /path/to/inspiration-repo --extract-onlyScan from a given date (overrides since_days):
different-agent --inspiration /path/to/inspiration-repo --target /path/to/target-repo --since-date 2024-01-01Limit GitHub PRs to a number range (inclusive):
different-agent --inspiration /path/to/inspiration-repo --extract-only --from-pr 3300 --to-pr 3350When a PR range is provided, the extractor skips commit and issue scanning and focuses on GitHub PRs only.