agent-qa

Understand the file-backed configuration system that powers agent-qa projects.

agent-qa is designed to keep your QA system under complete team control. Configuration, tests, suites, hooks, custom rules, local bindings, auth metadata, and memory are all represented as files, so teams can review, version, and collaborate on QA changes the same way they review application code.

The dashboard can create and edit those files for you, but the files remain the source of truth. You can change config toggles in the UI, write a test by hand, update a suite in a pull request, or let an AI coding agent propose a diff. The next run reads the same files.

File map

Most teams start with this set of files:

agent-qa.config.yaml       # global workspace, services, registry, plugins, and use defaults
tests/**/*.yaml            # single natural-language test definitions
suites/**/*.suite.yaml     # ordered groups of tests
hooks.yaml                 # hook registry
scripts/*.mjs              # hook implementation files
.env                       # non-secret variables used by steps and hooks
.env.secrets.local         # secret values used through {{secret:NAME}}
agent-qa.local.yaml        # local device, app, and provider bindings
agent-rules.md             # additional QA agent instructions
~/.agent-qa/auth.json      # saved LLM credentials, outside the project by default

Generated runtime data also remains file-backed. Dashboard state, artifacts, cache, and memory live under the configured paths, usually inside .agent-qa/ or agent-qa-memory/.

Configuration layers

agent-qa resolves configuration from a small set of explicit layers:

  1. agent-qa.config.yaml defines project-wide defaults.
  2. Suite YAML can override supported use settings for every test in the suite.
  3. Test YAML can override supported use settings for that test.
  4. CLI flags such as --device, --no-cache, --no-memory, --headless, --no-headless, and --var KEY=VALUE apply to the current command.

Use the dashboard when you want a guided editor. Use file edits when you want reviewable diffs. Both paths update the same source files.