Why it broke.
Not just that it broke.

Tripwire drives your app like a real user — and when a flow breaks, it traces the failure to the exact backend line that caused it, then files the fix. Run it fully self-hosted: your keys, your data, nothing leaves your infra.

Open-core · BYO Anthropic key · cloud or self-hosted

What it does

Plain-English tests.
Backend-deep answers.

One platform: describe a suite in English and AI agents drive a real browser, run your regression, and root-cause every failure to its exact cause — UI, API, or the exact backend line.

01

Plain-English suites

Describe a flow the way you'd explain it to a teammate. No selectors, no page objects, no brittle scripts.

Write a suite →
02

A real browser, any OS

The LLM is the brain, Playwright the hands — headless on Linux, macOS, or Windows.

How it works →
03

Self-healing

When the UI shifts, Tripwire re-grounds against the live DOM each run instead of failing on a stale locator.

Self-heal →
04

Root-caused to the backend

A failing request's trace_id is correlated to your server logs — the backend error, the likely cause, a suggested fix.

Connect logs →
05

Auto-filed, deduped issues

Verified failures become root-caused tickets on the built-in board — and optionally GitHub, GitLab, or Jira. Re-runs comment, never duplicate.

Filing issues →
06

In your IDE & CI

An MCP server for Cursor and Claude Code, plus a GitHub Action and CLI that gate every PR.

IDE & MCP →

The differentiator

Every other tool stops
at “the UI broke.”

A UI failure → correlated by trace_id to the real backend error → the cause and a suggested fix → filed as a deduped ticket. In plain English.

UI — what the user hit

“Save profile” returned a silent 500 — nothing shown to the user.

Backend — the real cause

NullPointerException in upload.py:142 — avatar saved before the user row commits.

Filed — GitHub #284

Cause + suggested fix, deduped. The ticket was waiting for you.

Author

A suite is
just YAML.

Describe a flow the way you'd explain it to a teammate — no selectors, no page objects. Cases run in order and share fixtures, so “sign up, then log in as that user” just works.

Your infra. Your keys. Your data.

It runs where you do.

Every other AI tester is closed SaaS — your app and data go to them. Tripwire is open-core and runs entirely in your own environment with one command. Bring your own Anthropic key; nothing leaves your network.

Self-host in one command

./install/install.sh stands up the whole platform behind TLS, with backups and zero-downtime upgrades.

BYOK

Your Anthropic key drives the tests. No per-seat AI markup; you pay your provider directly.

Nothing leaves

Per-org isolation, restricted egress, encrypted secrets. Built for teams that can't ship their app to a third party.

Built in

Everywhere your team
already works.

In your editor

An MCP server puts “test this URL” inside Cursor and Claude Code.

In CI

A GitHub Action and CLI gate every PR with a JUnit report and a meaningful exit code.

In your tracker

The built-in board, plus GitHub, GitLab, or Jira — deduped by fingerprint.

In your backend

Server-log correlation turns a UI failure into a backend diagnosis.

Pricing

Free to self-host.
A license for companies.

Source-available — run the whole platform yourself, bring your own key.

Self-hosted
Free

For any noncommercial use. The full platform — authoring, backend root-cause, plans, CI gating — bring your own LLM key.

Get started →
Commercial · for companies
Let's talk

For business & production use. A commercial license with terms that fit your team, plus deployment guidance.

Deploy it →

You ship it. Tripwire tests it.

Plain English in. A root-caused bug out — automatically. Self-hosted, bring your own key.