Skip to main content

Configuration

A self-hosted TestVibe is configured entirely from the environment — there is no configuration file to edit. You set values in the bundle's .env file (or inject them as container environment variables), and the compose stack wires them into the right services.

The Configuration Model

  • Environment only. Everything the app needs comes from environment variables. The .env template documents the required values and the common optional ones.
  • Secret files. Any secret can instead be provided as a file by setting {NAME}_FILE to a mounted path (Docker or Kubernetes secrets). The file's contents are used — handy when you don't want secrets in .env.
  • Disabled-by-default optionals. Any optional integration you leave unset is simply switched off; the app still runs.

Required Values

These are the values you must set before the stack will start:

ValuePurpose
Database passwordThe PostgreSQL password, shared by the database, the schema job, and the app.
Object-storage signing keySigns the short-lived read/write URLs the app and runner use for artifacts.
Object-storage admin keyAuthenticates the app's server-to-server calls to the object store.
Runner keyShared secret so only your app can dispatch test runs to the runner.
Public base URLThe URL users reach the app at — also used for OAuth callbacks and webhooks.
info

The database, object-storage, and runner wiring (which provider, internal URLs) is already set by the compose file. You only supply the secrets and your public URL.

Optional Integrations

Set these only if you want the feature. Unset means the feature is off and the app still runs.

AreaWhat it enables
GitHub / Google sign-inSocial sign-in. Without it, accounts are local email/password.
AI providersTest generation and vision compare. Hosted Claude/OpenAI keys, or a local model — see AI models.
EmailVerification and password-reset emails. Without it, those links are written to the app's logs instead of sent.
Source repositoriesConnecting GitHub/GitLab repos as a project's source code.

Billing Is Off On-Prem

The cloud SaaS meters usage (session-seconds and AI tokens) and bills via Stripe. On a self-hosted instance, credit gating and token metering are disabled — there are no credits to buy and nothing is metered. Your only cost controls are your own AI provider's usage and the infrastructure you run.