{"id":44261577,"url":"https://github.com/imbue-ai/vet","last_synced_at":"2026-04-13T01:00:59.826Z","repository":{"id":336546368,"uuid":"1144257001","full_name":"imbue-ai/vet","owner":"imbue-ai","description":"Find issues worth your attention.","archived":false,"fork":false,"pushed_at":"2026-03-31T20:01:38.000Z","size":4621,"stargazers_count":179,"open_issues_count":2,"forks_count":10,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-04-07T12:07:21.740Z","etag":null,"topics":["ai","ai-agents","ai-code-review","ai-coding-tools","code-review","coding-assistant"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imbue-ai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-28T13:40:29.000Z","updated_at":"2026-04-02T09:31:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/imbue-ai/vet","commit_stats":null,"previous_names":["imbue-ai/vet"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/imbue-ai/vet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imbue-ai%2Fvet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imbue-ai%2Fvet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imbue-ai%2Fvet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imbue-ai%2Fvet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imbue-ai","download_url":"https://codeload.github.com/imbue-ai/vet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imbue-ai%2Fvet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31735542,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T22:19:12.206Z","status":"ssl_error","status_checked_at":"2026-04-12T22:18:33.088Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-agents","ai-code-review","ai-coding-tools","code-review","coding-assistant"],"created_at":"2026-02-10T17:12:21.558Z","updated_at":"2026-04-13T01:00:59.817Z","avatar_url":"https://github.com/imbue-ai.png","language":"Python","funding_links":[],"categories":["Testing \u0026 Security","Skills Catalog"],"sub_categories":["Other IDEs","Workflow (110)"],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/imbue-ai/vet\"\u003e\n    \u003cimg alt=\"Vet: Verify Everything\" src=\"https://raw.githubusercontent.com/imbue-ai/vet/main/images/Vet.svg\" width=\"21%\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://pypi.python.org/pypi/verify-everything/\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/verify-everything.svg\" alt=\"PyPi\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.gnu.org/licenses/agpl-3.0\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-AGPL_v3-blue.svg\" alt=\"License: AGPL v3\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://github.com/imbue-ai/vet/actions/workflows/test-unit.yml/badge.svg\" alt=\"Build Status\"\u003e\n  \u003ca href=\"https://discord.gg/sBAVvHPUTE\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord-Join%20us-5865F2?logo=discord\u0026logoColor=white\" alt=\"Discord\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eVet is a standalone verification tool for \u003cb\u003ecode changes\u003c/b\u003e and \u003cb\u003ecoding agent behavior\u003c/b\u003e.\u003c/p\u003e\n\n## Why Vet\n\n- **Reviews intent and code**: checks agent conversations for goal adherence and code changes for correctness.\n- **Runs anywhere**: from the terminal, as an agent skill, or in CI.\n- **Bring-your-own-model**: works with any provider using your own API keys.\n- **Works with existing subscriptions**: supports Anthropic and OpenAI subscriptions using [`--agentic`](#usage).\n- **Free and open source**: no account, fees, or data collection. Requests go directly to your inference provider. Licensed under the AGPL-3.0.\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/imbue-ai/vet\"\u003e\n    \u003cimg alt=\"Vet: Verify Everything\" src=\"https://raw.githubusercontent.com/imbue-ai/vet/main/images/vet_example.png\" width=\"100%\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Using Vet with Coding Agents\n\nVet includes an agent skill. When installed, agents will proactively run vet after code changes to find issues with the new code and mismatches between the user's request and the agent's actions.\n\n### Install the skill\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/imbue-ai/vet/main/install-skill.sh | bash\n```\n\nYou will be prompted to choose between:\n\n- **Project level**: installs into `.agents/skills/vet/`, `.opencode/skills/vet/`, `.claude/skills/vet/`, and `.codex/skills/vet/` at the repo root (run from your repo directory)\n- **User level**: installs into `~/.agents/`, `~/.opencode/`, `~/.claude/`, and `~/.codex/` skill directories, discovered globally by all agents\n\n### Demo\n\n![demo](https://raw.githubusercontent.com/imbue-ai/vet/main/images/demo.gif)\n\n\u003cdetails\u003e\n\u003csummary\u003eManual installation\u003c/summary\u003e\n\n#### Project Level\n\nFrom the root of your git repo:\n\n```bash\nfor dir in .agents .opencode .claude .codex; do\n  mkdir -p \"$dir/skills/vet/scripts\"\n  for file in SKILL.md scripts/export_opencode_session.py scripts/export_codex_session.py scripts/export_claude_code_session.py; do\n    curl -fsSL \"https://raw.githubusercontent.com/imbue-ai/vet/main/skills/vet/$file\" \\\n      -o \"$dir/skills/vet/$file\"\n  done\ndone\n```\n\n#### User Level\n\n```bash\nfor dir in ~/.agents ~/.opencode ~/.claude ~/.codex; do\n  mkdir -p \"$dir/skills/vet/scripts\"\n  for file in SKILL.md scripts/export_opencode_session.py scripts/export_codex_session.py scripts/export_claude_code_session.py; do\n    curl -fsSL \"https://raw.githubusercontent.com/imbue-ai/vet/main/skills/vet/$file\" \\\n      -o \"$dir/skills/vet/$file\"\n  done\ndone\n```\n\n\u003c/details\u003e\n\n### Security note\n\nThe `--history-loader` option executes the specified shell command as the current user to load the conversation history. It is important to review history loader commands and shared config presets before use.\n\n## Install the CLI\n\n```bash\npip install verify-everything\n```\n\nOr with [pipx](https://pipx.pypa.io/):\n\n```bash\npipx install verify-everything\n```\n\nOr with [uv](https://docs.astral.sh/uv/):\n\n```bash\nuv tool install verify-everything\n```\n\n### Usage\n\nRun Vet in the current repo:\n\n```bash\nvet \"Implement X without breaking Y\"\n```\n\nCompare against a base ref/commit:\n\n```bash\nvet \"Refactor storage layer\" --base-commit main\n```\n\nUse Claude Code, Codex, or OpenCode instead of LLM APIs (`--agent-harness`: `claude`, `codex`, `opencode`):\n\n```bash\nvet \"Implement X without breaking Y\" --agentic --agent-harness claude\n```\n\n## GitHub PRs (Actions)\n\nVet reviews pull requests using a reusable GitHub Action.\n\nCreate `.github/workflows/vet.yml`:\n\n```yaml\nname: Vet\n\npermissions:\n  contents: read\n  pull-requests: write\n\non:\n  pull_request:\n    types: [opened, edited, synchronize, reopened]\n\njobs:\n  vet:\n    if: github.event.pull_request.draft == false\n    runs-on: ubuntu-latest\n    env:\n      ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          ref: ${{ github.event.pull_request.head.sha }}\n          fetch-depth: 0\n      - uses: imbue-ai/vet@main\n        with:\n          agentic: false\n```\n\nThe action handles Python setup, vet installation, merge base computation, and posting the review to the PR. `ANTHROPIC_API_KEY` must be set as a repository secret when using Anthropic models (the default). See [`action.yml`](https://github.com/imbue-ai/vet/blob/main/action.yml) for all available inputs.\n\n## How it works\n\nVet snapshots the repo and diff, optionally adds a goal and agent conversation, runs LLM checks, then filters/deduplicates findings into a final list of issues.\n\n![architecture](https://raw.githubusercontent.com/imbue-ai/vet/main/images/architecture.svg)\n\n## Output \u0026 exit codes\n\n- Exit code `0`: no issues found\n- Exit code `1`: unexpected runtime error\n- Exit code `2`: invalid usage/configuration error\n- Exit code `10`: issues found\n\nOutput formats:\n- `text`\n- `json`\n- `github`\n\n## Configuration\n\n### Model configuration\n\nVet supports custom model definitions using OpenAI-compatible endpoints via JSON config files searched in:\n\n- `$XDG_CONFIG_HOME/vet/models.json` (or `~/.config/vet/models.json`)\n- `.vet/models.json` at your repo root\n\n#### Example `models.json`\n\n```json\n{\n  \"providers\": {\n    \"openrouter\": {\n      \"name\": \"OpenRouter\",\n      \"api_type\": \"openai_compatible\",\n      \"base_url\": \"https://openrouter.ai/api/v1\",\n      \"api_key_env\": \"OPENROUTER_API_KEY\",\n      \"models\": {\n        \"gpt-5.2\": {\n          \"model_id\": \"openai/gpt-5.2\",\n          \"context_window\": 400000,\n          \"max_output_tokens\": 128000,\n          \"supports_temperature\": true\n        },\n        \"kimi-k2\": {\n          \"model_id\": \"moonshotai/kimi-k2\",\n          \"context_window\": 131072,\n          \"max_output_tokens\": 32768,\n          \"supports_temperature\": true\n        }\n      }\n    }\n  }\n}\n```\n\nThen:\n\n```bash\nvet \"Harden error handling\" --model gpt-5.2\n```\n\n### Model registry\n\nVet maintains a remote model registry with community-contributed model definitions. To fetch the latest definitions without upgrading vet:\n\n```bash\nvet --update-models\n```\n\nThis downloads model definitions from the [registry](https://github.com/imbue-ai/vet/blob/main/registry/models.json) and caches them locally at `~/.cache/vet/remote_models.json`. Once cached, registry models appear in `vet --list-models` and can be used with `--model` like any other model.\n\nModel resolution priority (highest to lowest):\n1. User config (`.vet/models.json` or `~/.config/vet/models.json`)\n2. Builtin models (Anthropic, OpenAI, Gemini)\n3. Registry models (cached via `--update-models`)\n\nSee [`registry/CONTRIBUTING.md`](https://github.com/imbue-ai/vet/blob/main/registry/CONTRIBUTING.md) for information about contributing model definitions to the registry.\n\n### Configuration profiles (TOML)\n\nVet supports named profiles so teams can standardize CI usage without long CLI invocations.\n\nProfiles set defaults like model choice, enabled issue codes, output format, and thresholds.\n\nSee [the example](https://github.com/imbue-ai/vet/blob/main/.vet/configs.toml) in this project.\n\n### Custom issue guides\n\nYou can customize the guide text for the issue codes via `guides.toml`. Guide files are loaded from:\n\n- `$XDG_CONFIG_HOME/vet/guides.toml` (or `~/.config/vet/guides.toml`)\n- `.vet/guides.toml` at your repo root\n\n#### Example `guides.toml`\n\n```toml\n[logic_error]\nsuffix = \"\"\"\n- Check for integer overflow in arithmetic operations\n\"\"\"\n\n[insecure_code]\nreplace = \"\"\"\n- Check for SQL injection: flag any string concatenation or f-string formatting used to build SQL queries rather than parameterized queries\n- Check for XSS: flag user-supplied data rendered into HTML templates without proper escaping or sanitization\n- Check for path traversal: flag file operations where user input flows into file paths without validation against directory traversal (e.g. ../)\n- Check for insecure cryptography: flag use of deprecated or weak algorithms (e.g. MD5, SHA1 for security purposes, DES, RC4)\n- Check for hardcoded credentials: flag passwords, API keys, or tokens embedded directly in source code\n\"\"\"\n```\n\nSection keys must be valid issue codes (`vet --list-issue-codes`). Each section supports three optional fields: `prefix` (prepends to built-in guide), `suffix` (appends to built-in guide), and `replace` (fully replaces the built-in guide). `prefix` and `suffix` can be used together, but `replace` is mutually exclusive with the other two. Guide text should be formatted as a list.\n\n## Community\n\nJoin the [Imbue Discord](https://discord.gg/sBAVvHPUTE) for discussion, questions, and support. For bug reports and feature requests, please use [GitHub Issues](https://github.com/imbue-ai/vet/issues).\n\n## License\n\nThis project is licensed under the [GNU Affero General Public License v3.0 (AGPL-3.0-only)](https://github.com/imbue-ai/vet/blob/main/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimbue-ai%2Fvet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimbue-ai%2Fvet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimbue-ai%2Fvet/lists"}