Natural-language tests
Write actions and assertions in plain English; agent-qa resolves them against the live interface.
Learn about natural language testsThe self-improving QA agent for your software factory.
Give your coding agents a QA agent that learns your app. Run natural-language tests across web and mobile, build memory with every run, and catch regressions before you ship.
Write actions and assertions in plain English; agent-qa resolves them against the live interface.
Learn about natural language testsTurn successful runs into reviewable, evidence-backed memory that makes every future run faster.
Learn about memoryA run leaves evidence
Elements that resolved, a flow that worked, and timings that are real, all attached to the steps that produced them.
Run the same natural-language flow across web, Android, and iOS with Playwright or Appium.
Learn about mobile testingFour products, four platforms
Each row names its own target, and a target is what decides where a test runs. This one names a web target, so it carries a URL.
Humans and agents author the same reviewable YAML, backed by your repository, skills, and MCP.
Learn about MCP and skillsagent-qa diagnoses each run, learns only from valid evidence, and proves every lesson before using it.
Learn about the curatorEvery run is evidence
A finished run hands over its steps, artifacts, and timings. The verdict is already final, so nothing downstream can change whether it passed.
When an action fails, agent-qa re-observes the screen and finds another route to the same outcome.
Learn about self-healingRun the 12 tests in the smoke suite.
suite Smoke
Timeline
A step, and the screen it runs on
A sample smoke suite with 12 tests, and a step that asks to run them. The Run suite control is where it should be.
Reuse validated actions while the screen still matches, cutting tokens and runtime without generating scripts.
Learn about cachingExecution speed
42s to 8s
A run that meets screens it has already proved spends its time acting rather than deciding.
Token saving
less token usage
A reused action never reaches the model, so the only thinking billed is the thinking your app made necessary.
2,600 Manual testing hours saved
Tests, knowledge, and rules stay as reviewable files shared by teammates, agents, and CI.
Learn about configurationRun Node, Bun, Python, or Bash hooks in isolated containers and pass structured results back into the test.
Learn about hooksThe step calls the hook by ID
Inline runHook syntax runs a hook at one exact point in the step list. Every step after it can use whatever that hook exported.
Switch providers, endpoints, or models in config without rewriting a single test.
Learn about LLM providers
Cloud model access through compatible endpoints.
Desktop local model workflows via compatible servers.
Ling open models through compatible endpoints.Yes. Give it the complete setup prompt and it can initialize a workspace without menus, configure an authorized model, write a meaningful test, run it through CLI or local MCP, and inspect the evidence. Your agent may need your help with a model credential or subscription sign-in. The same tests and results remain available to humans in the repository and local dashboard.
Set up with your agentNo. There is no generated script and no selector file. Every run reads the live screen and works out what to do from there, which sounds like repeating yourself and is not: no run is wasted, because each one feeds what it learned back in and the agent gets more accurate about your product over time. A validated action plan is cached and replayed while the screen still matches, which can reduce planning work on repeat runs, and the moment the interface changes under it the stale plan is purged and that step is worked out again. Measure the runtime and token savings on your own suite, and none of that speed comes from freezing it into a recording.
How caching worksWhat it learned about your product, written to disk as markdown under a memory root in your repository and organised by product, suite and test. It is not hidden model state. You read it in a pull request like any other file, and a new observation has to hold up against past runs before a planner is allowed to use it.
How memory worksYes, which is the point of describing behaviour instead of selectors. You name the control the way you would say it out loud, the Checkout button or the issues table, and agent-qa resolves it against whatever is in front of it. Web runs use browser runtimes it installs and manages, leaving the browsers you already have alone. Android and iOS run through Appium drivers and the usual platform tooling, against an emulator, a simulator or a device on your desk.
Mobile testing guideAny OpenAI-compatible or Anthropic-compatible endpoint, Gemini, or a local model served through something like Ollama or LM Studio. Codex and Claude Code subscriptions work too, through the optional subscription auth package. Pick a multimodal one: runs read screenshots, so text-only models are a poor fit for visual QA.
Connect a modelYes. It is free to install and free to run, the source is public, and no feature is held back behind a paid tier. The tests you write and the memory it builds are ordinary files in your own repository. There is no license fee for FSL-permitted use. You supply the execution infrastructure and pay any model inference costs, which the cache can help reduce.
Read the license