The open-source QA Wolf alternative.
Most "AI QA platform" tools open-source only the bottom transport layer — Playwright, Appium — and keep the actual intelligence closed. QA Reef is taking a different cut: the automation core itself is being built in the open under packages/core, MIT-licensed.
What's in packages/core
Every piece here is code that already exists and runs in this repo today — not a roadmap.
- flow(name, opts, fn) — step/test runtime: named steps, an evidence screenshot per step, a trace on failure.
- Operator —
look()(tiled screen OCR) → decide (cheap LLM, stampeddecided_by) →click()/type()/press()/scroll()on a curved, jittered path. - launchContext() — Chromium/Chrome/Camoufox with a persistent, fingerprint-realistic profile.
- ocr / pixels — tiled OCR (~94% mean word recall, measured internally) plus HSV color-bucket measurement.
- chat() — an OpenRouter/Ollama LLM helper that cost-logs every call.
- saveDocument() — evidence-first storage: refuses to save without the id used to find it; read-back-verifies uploads.
- src/api.js — turns a recorded flow into a REST endpoint:
GET /<site>/<method>. More: turning a website into an API.
The flow converter: QA Reef flows → QA Wolf's own format
QA Wolf's local flow format is a plain ES module (export default flow(name, target, callback) from the Apache-2.0 @qawolf/flows package) that runs entirely offline through their own Apache-2.0 @qawolf/cli, no account required. Verified directly: cloned the CLI, built it, ran real flow files with no QAWOLF_API_KEY set.
- QA Reef's converter (
app/codegen-flow.js) takes a QA Reef-recorded flow and emits that exact.flow.tsshape — same locator-resolution order, same{param}-to-process.envsecrets convention. - Proved end to end: converted three real QA Reef-recorded flows and ran them through the unmodified, offline QA Wolf CLI — two passed cleanly, the third failed only because its dev server wasn't running, not a format mismatch. Full output:
vendor/QAWOLF-OSS.md.
Upshot: a flow mapped with QA Reef's operator isn't locked into a proprietary format — hand it to QA Wolf's free CLI as a sanity check, or treat .flow.ts as a portable reference format.
Self-hosting, summarized
| Requirement | Why |
|---|---|
| Node 22 | Runtime for the flow runner, Operator, and adapters. |
| Playwright (Chromium) | Drives the real browser. |
| macOS or a 27B-class vision model | Apple Vision on-device (no network round-trip); a self-hosted model (we run one via Ollama) covers non-macOS. |
| An OpenRouter key (or local Ollama) | Powers the click/type/press decisions in the Operator loop. |
Full requirements and quickstart: the docs page. Public package name and repository link aren't final yet.
Open-core questions
What license is QA Reef's core under?
MIT, once packages/core is published — compatible with the Apache-2.0 Playwright/Appium layers it mirrors, and QA Wolf's own MIT/Apache-2.0 flow-runtime packages.
What's actually in packages/core?
flow(), Operator, launchContext(), ocr/pixels, chat(), saveDocument(), and src/api.js's website-to-API layer — see the full list above.
Is QA Reef's open-core more open than QA Wolf's?
QA Wolf's open layer is the bottom transport only; QA Reef puts the automation core itself in the open. QA Wolf's hosted grid, human QA service, and years of production hardening remain real advantages QA Reef doesn't have yet.
Can I run QA Reef flows through QA Wolf's own CLI?
Yes — QA Reef ships a converter that emits QA Wolf's .flow.ts format, runnable offline through their Apache-2.0 CLI. See vendor/QAWOLF-OSS.md for verified details.