Open source

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.
  • Operatorlook() (tiled screen OCR) → decide (cheap LLM, stamped decided_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.ts shape — same locator-resolution order, same {param}-to-process.env secrets 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

RequirementWhy
Node 22Runtime for the flow runner, Operator, and adapters.
Playwright (Chromium)Drives the real browser.
macOS or a 27B-class vision modelApple 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.

FAQ

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.

See it against QA Wolf, feature by feature

Read: QA Wolf alternative →