Skip to content

Environment Variables

This reference lists the environment variables that affect VIBE's runtime, logging, configuration, and test harnesses. Unless otherwise noted, variables can be supplied through a .env file or the host environment.

Note: Many settings that were previously controlled via environment variables have been migrated to config.yml keys. See doc/configuration-reference.md for the full config.yml reference. Specifically, VIBE_DISABLE_ASSISTANT_LOGGING, VIBE_MODEL_CACHE_DIR, and all VIBE_REVIEW_* env vars are now config.yml keys (assistant_logging_enabled, model_cache_dir, review.*, review_backends.*). Assistant and Review settings only apply when those extensions are enabled.


Runtime Configuration

  • VIBE_CONFIG_PATH Path to the configuration file. Defaults to config.yml in the current working directory. Can also be set via the --config flag on vibe run.

  • VIBE_APP_BASE_URL Base URL used when constructing redirect links in the Zen authentication helper. Defaults to http://localhost:5001.

  • VIBE_PASETO_KEY Enables token-based authentication for both the main application and the Zen helper. Must be a valid PASETO shared secret; if unset, token auth is disabled in the core app and Zen raises an error on startup.

  • OIDC_CLIENT_ID, OIDC_CLIENT_SECRET, OIDC_TENANT_ID Required to activate the optional Microsoft Entra OIDC login flow in the Zen helper.

  • FLASK_SECRET_KEY Overrides the Flask session signing key used by the Zen helper. Falls back to the value in config.yml when unset.

  • DATABASE_URI Overrides the SQLAlchemy connection string for Zen's user database. Defaults to the bundled SQLite database inside zen/instance/.

  • VIBE_DATA_DIR Redirects the data directory root. When provided, all session, draft, log, and cache paths resolve under this directory instead of .vibe_data in the current working directory.


Logging and CLI Behavior

  • VIBE_LOG_LEVEL Sets the console log level. Valid values are DEBUG, INFO, WARNING, or ERROR. Defaults to INFO. Use DEBUG to see detailed diagnostic messages such as OCR cache keys and pipeline internals. Example: VIBE_LOG_LEVEL=DEBUG vibe run

  • VIBE_QUIET_MODE When set to "1", silences console logging by installing a no-op logger. The CLI automatically enables this during validate commands unless --verbose is supplied.

  • TEST_LOGGING Treats test runs like production mode and emits full logging output. Accepts truthy values ("true", "1", "yes").

  • PYTEST_CURRENT_TEST Detected automatically by pytest. Its presence tells the logging stack to suppress log file creation that is otherwise enabled for non-test runs.

  • FLASK_DEBUG When set to "1", instantiates the Flask application at import time so that Flask's debugger and IDE integrations can discover it.


LLM Provider Credentials

These keys populate the LLM endpoint definitions declared in config.yml. Leave an endpoint out of production use unless the corresponding key is available.

  • OPENAI_API_KEY
  • BERGET_API_KEY
  • GOOGLE_API_KEY
  • ANTHROPIC_CLAUDE_API_KEY
  • MISTRAL_API_KEY

Each key must grant access to the respective provider; missing keys disable those endpoints at runtime.


Test Harness Controls

  • DEBUGPY_RUNNING Indicates the tests are running under the VS Code debugger. Forces Chrome into headed mode to simplify interactive debugging.

  • BROWSER_HEADLESS Controls headless Chrome during Playwright browser tests. Any value other than "false" keeps the browser headless.

  • VIBE_BROWSER_HELPER_TIMING, BROWSER_HELPER_TIMING Enable timing instrumentation in the browser assistant helper when set to a truthy value.

E2E LLM tests are now controlled via pytest markers (@pytest.mark.e2e_llm) and command-line options (--e2e-llm-endpoint, --e2e-record-to, --e2e-playback-from, --e2e-max-turns). Run them with pytest -m e2e_llm --e2e-llm-endpoint=<alias>.