vet

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit e47fe19d210798935b02e6cbb61ef0c5e58d8e29
parent 3c2947094700e1f36993d9e85d33f2f5e741371e
Author: Andrew Laack <andrew@laack.co>
Date:   Sat,  7 Mar 2026 23:42:13 +0000

Merge pull request #180 from andrewlaack-collab/andrew/messaging

Inform users about subscription support via --agentic
Diffstat:
MREADME.md | 11+++++++++--
Mvet/cli/main.py | 10++++++++++
2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md @@ -17,8 +17,9 @@ - **Reviews intent and code**: checks agent conversations for goal adherence and code changes for correctness. - **Runs anywhere**: from the terminal, as an agent skill, or in CI. -- **Bring-your-own-model**: works with any provider using your own API keys, no subscription ever. -- **No data collection**: requests go directly to inference providers, never through our servers. +- **Bring-your-own-model**: works with any provider using your own API keys. +- **Works with existing subscriptions**: supports Anthropic and OpenAI subscriptions using [`--agentic`](#usage). +- **Free and open source**: no account, fees, or data collection. Requests go directly to your inference provider. Licensed under the AGPL-3.0. <p align="center"> <a href="https://github.com/imbue-ai/vet"> @@ -112,6 +113,12 @@ Compare against a base ref/commit: vet "Refactor storage layer" --base-commit main ``` +Use Claude Code or Codex instead of LLM APIs (`--agent-harness`: `claude`, `codex`): + +```bash +vet "Implement X without breaking Y" --agentic --agent-harness claude +``` + ## GitHub PRs (Actions) Vet reviews pull requests using a reusable GitHub Action. diff --git a/vet/cli/main.py b/vet/cli/main.py @@ -660,6 +660,11 @@ def main(argv: list[str] | None = None) -> int: validate_api_key_for_model(model_id, user_config, registry_config) except Exception as e: print(f"vet: {e}", file=sys.stderr) + print( + "hint: If you have a Claude or Codex subscription, try --agentic to use your\n" + " locally installed coding agent CLI instead.", + file=sys.stderr, + ) return 2 # TODO: Support OFFLINE, UPDATE_SNAPSHOT, and MOCKED modes. @@ -721,6 +726,11 @@ def main(argv: list[str] | None = None) -> int: return 1 except MissingAPIKeyError as e: print(f"vet: {e}", file=sys.stderr) + print( + "hint: If you have a Claude or Codex subscription, try --agentic to use your\n" + " locally installed coding agent CLI instead.", + file=sys.stderr, + ) return 2 # TODO: This should be refactored so we only need to handle prompt too long errors when context is overfilled. except (PromptTooLongError, BadAPIRequestError) as e: