Skip to main content

Connect agent-qa to Claude or Codex subscriptions, OpenAI-compatible, Anthropic-compatible or Gemini APIs, or a local model, and manage credentials.

agent-qa uses one model entry for a run. It plans and checks every step, then writes up analysis and knowledge after the verdict. Model entries live in registry.llms, and use.llm names the default.

registry:
  llms:
    - name: claude-code
      provider: anthropic-subscription
      model: claude-sonnet-5-5
use:
  llm: claude-code

Providers

ProviderConnects toSigns in withinit --llm
anthropic-subscriptionA Claude subscriptionBrowser sign-inclaude-code
openai-subscriptionA Codex subscriptionBrowser sign-incodex
openai-compatibleAny OpenAI Chat Completions endpoint: OpenAI, OpenRouter, a local serverAPI key, or none for a local serveropenai-compatible
anthropic-compatibleAny Anthropic Messages endpointAPI key or bearer token, or none for a local serveranthropic-compatible
geminiGoogle GeminiAPI keygemini

Provider plugins can add more. See Plugins.

Entry fields

FieldRequiredMeaning
nameYesThe entry's name. Lowercase letters, digits, dots and hyphens. Credentials are stored under it.
providerYesOne of the providers above, or a plugin's provider ID.
modelYesThe model ID your provider expects.
baseURLFor the two compatible providersThe endpoint, such as https://api.openai.com/v1.
providerHeadersNoExtra headers for anthropic-compatible only. Headers that carry credentials are refused.
visionNotrue by default. false runs text-only: no screenshots are sent.
contextWindowNoThe model's context window, such as 200k. agent-qa sizes the knowledge brief from it.

Examples

registry:
  llms:
    # A Codex subscription
    - name: codex
      provider: openai-subscription
      model: gpt-6.1-sol

    # OpenAI's API
    - name: openai
      provider: openai-compatible
      model: gpt-5.5
      baseURL: https://api.openai.com/v1

    # OpenRouter
    - name: openrouter
      provider: openai-compatible
      model: anthropic/claude-sonnet-4.6
      baseURL: https://openrouter.ai/api/v1

    # A local server, such as LM Studio or Ollama, with no key
    - name: local
      provider: openai-compatible
      model: qwen3-vl-8b
      baseURL: http://127.0.0.1:1234/v1

    # Gemini
    - name: gemini
      provider: gemini
      model: gemini-3-flash-preview

A test or suite can use another entry with its own use.llm. In chat, /model <name> switches for the conversation.

Choosing a model

Use a model that accepts images. agent-qa sends a screenshot with each decision, which lets it check what is actually on the screen. services.vision limits how large those screenshots are.

A text-only model works with vision: false. agent-qa then reads the page structure and accessibility tree only, so it cannot check purely visual details such as colors or layout, and runs record no screenshots.

Credentials

Credentials are stored outside your project, in ~/.agent-qa/auth.json, or in $XDG_DATA_HOME/agent-qa/auth.json when that is set. The file is readable by you only, and each credential is stored under its entry's name. agent-qa does not read API keys from environment variables or from the config.

CommandUse it to
agent-qa auth set --config <name> --type api-keySave an API key. It asks at a hidden prompt.
agent-qa auth set --config <name> --type bearer-tokenSave a bearer token for an Anthropic-compatible endpoint.
agent-qa auth login --config <name>Sign in a subscription entry.
agent-qa auth statusSee which entries have credentials.
agent-qa auth test --config <name>Send one short request and confirm the connection.
agent-qa auth logout --config <name>Remove a credential.

For CI, pass the key as the last argument from a secret: agent-qa auth set --config default --type api-key "$MODEL_API_KEY". See Run in CI.

Subscriptions

Claude and Codex subscriptions need the sign-in plugin, installed in the project and declared in the config:

npm install -D @vostride/agent-qa-subscription-auth
plugins:
  auth:
    - package: "@vostride/agent-qa-subscription-auth"

init --llm claude-code or --llm codex writes the declaration and adds the plugin to package.json. Then sign in:

npx agent-qa auth login --config claude-code

agent-qa prints a sign-in URL and opens your browser. For Claude, paste the code the page shows back into the terminal. For Codex, the browser hands the sign-in back to agent-qa on your machine. A person has to complete either one.

Local models

The two compatible providers work with local servers. When baseURL points anywhere other than api.openai.com or api.anthropic.com, agent-qa runs without a saved key, and auth test reports Testing without a saved credential. Save a key with auth set if your server needs one.

When something is missing

agent-qa printsFix
Sign in to "<provider>" for the "<name>" confignpx agent-qa auth login --config <name>
Save an API key for the "<name>" confignpx agent-qa auth set --config <name> --type api-key
needs the subscription-auth pluginInstall and declare @vostride/agent-qa-subscription-auth.
Provider "<id>" has been removedUse openai-compatible or anthropic-compatible with a baseURL. The old anthropic, openai, google, ollama, lmstudio and custom providers are gone.
use.llm "<name>" does not match any name in registry.llmsFix the name in use.llm.