Turn failed build logs into compact, line-numbered evidence packets for Claude, Codex, CI—and humans.
Local. Deterministic. No log uploads. BuildSift keeps the useful failure signal, folds the cascade, and points back to the exact source lines.
Install the latest binary from Releases, or install with Go:
go install github.com/topchen2025/buildsift/cmd/buildsift@latestAnalyze a saved log:
buildsift build.logOr wrap a command and keep its original output and exit status:
buildsift -- mvn testBuildSift v0.1 focuses on Maven, Gradle, npm/pnpm, and Docker/Compose failures.
BUILDSIFT DIAGNOSIS
===================
ROOT CAUSE [HIGH · MAVEN]
NoSuchFileException: ~/work/quality/target/pmd.xml
EVIDENCE
L1842 NoSuchFileException: ~/work/quality/target/pmd.xml
CASCADE
17 additional failure signal(s) folded
NEXT CHECK
mvn -e -X
The example is illustrative. BuildSift only reports evidence found in the input log; it does not invent an explanation when no supported pattern is present.
The result is small enough to paste into Claude or Codex, structured enough for CI, and explicit enough for a human to verify against the original log.
Create a shareable text packet:
buildsift build.log > evidence.txtRequest machine-readable output for scripts and CI:
buildsift --json build.logOr analyze the failed portion of a GitHub Actions run:
gh run view --log-failed | buildsiftFor a repository-native integration, use the BuildSift GitHub Action with a pinned version:
- name: Analyze failed build log
uses: topchen2025/buildsift@v0.1.0
with:
log-path: build.logBuild logs are evidence, not a creative-writing prompt.
- Verifiable: evidence includes the original line numbers.
- Repeatable: the same log and rule set produce the same result.
- Private by default: analysis runs locally without uploading the log.
- Fast to adopt: no model, API key, account, or service is required.
- Honest about uncertainty: unsupported failures are reported as unknown instead of guessed.
BuildSift complements AI tools; it gives them a smaller, grounded input instead of asking them to search an entire noisy log.
BuildSift ranks concrete failure signals, favors the earliest actionable cause, folds recognized downstream errors, and emits evidence plus a next check. It can read a file, stdin, or the output of a wrapped command.
It is not a general-purpose debugger, and its current rule set cannot recognize every build failure. See the transparent corpus and evaluation method in docs/benchmark.md; no universal accuracy or compression claim is implied.
The analyzer makes no network request and sends no log to a server. Wrapped build commands can still use the network exactly as they normally would.
Diagnostic evidence masks common token, password, URL-credential, and home-directory patterns. Redaction is best-effort, not a guarantee: logs can still contain credentials, private paths, source snippets, or customer data, so inspect output before sharing it. See SECURITY.md.
The highest-value contribution is a sanitized real-world failure log with its confirmed root cause. That turns one incident into a regression fixture for everyone.
See CONTRIBUTING.md for the workflow and fixture requirements. Please report vulnerabilities through GitHub Security Advisories instead of a public issue.