Self-hosted — own your data
Runs entirely on your infrastructure as a single Go binary and one SQLite file. Source-available under PolyForm Shield — no per-seat SaaS bills, nothing leaving your network.
Free · Self-hosted · Source-available
TTGO is a modern, self-hosted test management platform — rich test cases, run execution, analytics, AI test generation and failure triage, and a first-class CLI, all running as a single Go binary against one SQLite file. Own your data, automate everything.
Runs entirely on your infrastructure as a single Go binary and one SQLite file. Source-available under PolyForm Shield — no per-seat SaaS bills, nothing leaving your network.
Draft test cases from requirements using your own LLM provider (bring your own key). A review-and-approve flow means nothing is saved until you accept it.
A first-class ttgo CLI drives tests, runs and analytics from the terminal or CI. A bundled Claude Code skill lets an agent operate TTGO in plain English — even read your app's code to draft test cases — and slot it into your automation loop.
WebSocket-powered live sync keeps every open tab and teammate up to date as runs are executed and test cases change.
Everything teams expect from commercial test management — without the per-seat bill or the data leaving your network.
TipTap rich-text descriptions, ordered steps with expected results, and full version history with a diff view. Tabs for runs, defects and linked requirements keep everything in one place.

Snapshot-based runs with per-result pass/fail, defect classification (product / automation / system), defect links, durations and comments. Group results live by status, AI verdict or error signature, and let AI triage the failures for you.

Pass-rate trends, flaky-test detection, slowest tests, component health and side-by-side run comparison across any date range — so you know where quality is actually moving.

A coverage-at-a-glance matrix links requirements to test cases and surfaces the gaps. Import requirements from Jira or Confluence and keep traceability honest.

Log lightweight defects with severity, status and an owner right where tests fail, link them to results, and work them as a triage queue on a dedicated Defects page in the Quality workspace: tiles for what needs triage, filters and sorting, bulk assign and close, and a one-click retest run built from the tests a defect affects — with an optional reference out to Jira or any external tracker.

Every failing result gets a verdict — product bug, flaky test, environment, test data or infrastructure — and a defect type to accept in one click. With TypeSafe.ai, a calibrated decision model makes the call in well under a second, with a real confidence score; your own LLM writes the explanation, or steps in when it is unsure.
Failures that share a cause are merged even when the wording differs, repeats and known defects are recognized, prompt-injection attempts are flagged, and secrets are redacted before anything is sent. Once its measured accuracy on your own triage clears the bar, it can label new failures for you. TypeSafe.ai also structures messy imports, reviews AI drafts, assists with defects and re-ranks search.

Pick a requirement for context, describe what you want, and let your configured model draft test cases for review. Nothing is saved until you approve it — your key, your data.

TTGO is API-first: a documented REST API, a first-class CLI, and a bundled agent skill let you wire it into CI pipelines, scripts, or an autonomous AI-agent loop — one that can even read your app's code and write the test cases for you.
Every test case, run, result and requirement is scriptable over a documented REST API (Swagger) with bearer-token auth — automate anything the UI can do.
The ttgo CLI drives tests, runs and analytics straight from your terminal or CI pipeline — no browser required.
Ships with a Claude Code skill so an agent can operate TTGO in plain English and drop into your loop — a lightweight alternative to an MCP server, with no separate integration to build or run. It's just Markdown in your repo; tell your agent to extend it for your own workflows.
# point your agent at your own app — it reads the code and writes the cases
> "Analyze the checkout flow in frontend/src and write test cases for it in TTGO"
# then let it close the loop after every CI run
> "After the nightly run, open a defect for each new failure and draft test
> cases for the requirements that dropped below full coverage"
How TTGO compares to popular commercial and self-hosted test management tools — TestRail, Xray, qTest, Kiwi TCMS and Qase.
| Capability | TTGO | TestRail | Xray | qTest | Kiwi TCMS | Qase |
|---|---|---|---|---|---|---|
| Self-hosted / on-prem | ✓ | ~ | ~ | ✓ | ✓ | ~ |
| Source-available / open source | ✓ | ✕ | ✕ | ✕ | ✓ | ✕ |
| Free to self-host (no per-seat license) | ✓ | ✕ | ✕ | ✕ | ✓ | ✕ |
| Built-in AI test generation | ✓ | ✓ | ✓ | ✓ | ✕ | ✓ |
| Built-in AI failure triage | ✓ | ✕ | ✕ | ~ | ✕ | ~ |
| First-class CLI | ✓ | ✓ | ✕ | ✕ | ~ | ✓ |
| REST API | ✓ | ✓ | ✓ | ✓ | ~ | ✓ |
| Webhooks / push notifications | ✓ | ✓ | ~ | ✓ | ~ | ~ |
| Requirements & traceability matrix | ✓ | ✓ | ✓ | ✓ | ~ | ✓ |
| Native Jira integration | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
✓ yes · ~ partial, paid-tier-only or caveated · ✕ no
Competitor capabilities are summarized from public documentation as of 2026 and change frequently — verify current details with each vendor.
One Go binary, one SQLite file, a React front end. Easy to run, easy to trust.
Every number below comes from the k6 load-test suite that ships in the repo, measured against a single instance — one Go binary, one SQLite file — on an ordinary laptop (M1 Pro), so they're conservative. A committed regression gate keeps them honest on every change.
Around 55 CI pipelines can report simultaneously before add-result p95 crosses 500 ms — and overload degrades gracefully: latency rises, errors stay near zero, recovery is immediate.
Read latencies are statistically unchanged while CI ingests at half the write ceiling — SQLite's concurrent-read promise, verified empirically, not assumed.
Full-text search stays at ≤16 ms and the runs list serves a page in ~61 ms p95 with 1M results in the database.
A thousand concurrent WebSocket clients receive result updates with ~26 ms p95 broadcast lag.
Methodology, caveats, and how to reproduce every number: perf/README.md.
TTGO is source-available under PolyForm Shield. For almost everyone, that means one thing — it's free: no per-seat bills, no time limits, no catch.
In plain terms: build on it, run it, ship your product on it — just don't repackage TTGO into a competitor. Full terms are in the LICENSE (PolyForm Shield 1.0.0).
Clone the repo, drop in your admin credentials, and bring it up with Docker. It runs comfortably on a 1-core / 512 MB VPS — measured at ~30 MB RAM idle and under 200 MB at full load, with the database growing about 2 GB per million results.
# clone & configure
git clone https://github.com/runetsk/ttgo.git && cd ttgo
cp .env.example .env # set ADMIN_EMAIL and ADMIN_PASSWORD
# build & start (served on port 80)
docker compose up -d --build