Open-source CLI

Classify CI failures from raw logs. Deterministically.

Faultline reads failed CI logs and identifies likely failure classes using explainable playbooks. Same log in, same result out. No AI in the product path. Stable JSON for automation.

Open source View on GitHub See example reports

182 bundled failure playbooks
89.4% match rate on real failed Actions logs
0 external calls during analysis
bash
$ faultline analyze failed.log

failure_id:    dependency.lockfile_drift
confidence:    0.91
evidence:
  - npm ci rejected the lockfile
  - package.json and package-lock.json are out of sync
suggested_fix:
  - regenerate the lockfile
  - commit package.json and package-lock.json together

Works with any CI runner that produces a build log

GitHub Actions GitLab CI CircleCI Jenkins Buildkite Drone CI TeamCity Semaphore
Why Faultline

Built for reproducibility, not exploration.

Faultline matches known failure classes against log evidence. Every result is traceable and stable across runs.

Deterministic

Same log produces the same failure classification every time. Results do not drift between runs or environments.

Explainable

Every classification links to specific evidence lines extracted from the log. You can audit exactly why a class was chosen.

Automation-safe

Structured JSON output with stable failure IDs. Safe to pipe into scripts, CI steps, Slack, or downstream tooling.

Example

Designed for fast human triage.

Faultline output keeps the diagnosis, evidence, and next action together so engineers can route known failures without reopening the whole log.

  • Failure class and confidence are visible immediately.
  • Evidence lines are copied from the original build output.
  • Fix guidance travels with the classification.
faultline analyze examples/runtime-mismatch.log
Most Likely Diagnosis
────────────────────────────────────────

runtime-mismatch  Python, Ruby, or Go runtime version mismatch
Confidence: high (93%)  Category: build  Severity: high

Matched Evidence
────────────────────────────────────────

- ERROR: Package requires Python >=3.12, active interpreter is 3.10.13

Recommended Action
────────────────────────────────────────

- Pin the required version in the CI workflow
- Update container base image to match
Output

Structured output, ready for automation.

Pass --json to get machine-readable output. Pipe it into your alerting, triage scripts, or the Teams sync.

  • Stable failure_id for deduplication across builds.
  • Confidence score and matched evidence lines included.
  • Works offline. No API calls during analysis.
faultline analyze failed.log --json
{
  "failure_id": "dependency.lockfile_drift",
  "confidence": 0.91,
  "evidence": [
    "npm ci rejected the lockfile",
    "package.json out of sync"
  ],
  "suggested_fix": [
    "regenerate the lockfile",
    "commit both files together"
  ]
}
Approach

Not another AI CI bot.

Faultline does not guess. It matches known failure classes, shows the evidence, and returns stable structured output. AI can be useful for exploration, but CI classification should be reproducible. The same log should produce the same result on Tuesday as it did on Friday.

Trust boundary

Built for CI environments that care about control.

Faultline classifies locally. Teams syncs structured failure artifacts for organization-level memory without turning raw logs into a hosted debugging product.

No AI in the build path Classification is rule-backed and reproducible across runs.
No raw log storage in Teams The sync boundary is structured CLI output, not full CI logs.
Free CLI stays local-first Teams adds cross-repo memory; it does not gate local analysis.

Start classifying failures in minutes.

Install the CLI, point it at a failed build log, and get a structured failure report. No account required. Or browse the catalogue to see what Faultline can identify.