{"id":51602137,"url":"https://github.com/vibgrate/cli","last_synced_at":"2026-07-11T23:00:23.621Z","repository":{"id":340997964,"uuid":"1168363390","full_name":"vibgrate/cli","owner":"vibgrate","description":"The Vibgrate CLI scans your codebase for upgrade drift — the gap between the dependency versions you run and the versions you should run. It produces a deterministic Upgrade Drift Score (0–100), a full context-aware dependency graph, and actionable findings enriched with AI-assisted upgrade guidance to help you maintain a healthy, secure codebase.","archived":false,"fork":false,"pushed_at":"2026-07-09T15:56:03.000Z","size":1767,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-07-09T17:25:19.468Z","etag":null,"topics":["ai-assisted","cli","codebase-analysis","dependency-graph","dependency-management","drift-score","mcp","nodejs","security","typescript","upgrade-drift"],"latest_commit_sha":null,"homepage":"https://vibgrate.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vibgrate.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-27T09:53:37.000Z","updated_at":"2026-07-09T15:55:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vibgrate/cli","commit_stats":null,"previous_names":["vibgrate/cli"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/vibgrate/cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vibgrate%2Fcli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vibgrate%2Fcli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vibgrate%2Fcli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vibgrate%2Fcli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vibgrate","download_url":"https://codeload.github.com/vibgrate/cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vibgrate%2Fcli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35377013,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-11T02:00:05.354Z","response_time":104,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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-assisted","cli","codebase-analysis","dependency-graph","dependency-management","drift-score","mcp","nodejs","security","typescript","upgrade-drift"],"created_at":"2026-07-11T23:00:14.578Z","updated_at":"2026-07-11T23:00:23.611Z","avatar_url":"https://github.com/vibgrate.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://vibgrate.com\"\u003e\u003cimg src=\"https://vibgrate.com/img/vibgrate-logo-512.png\" alt=\"Vibgrate\" width=\"96\" height=\"96\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003e@vibgrate/cli\u003c/strong\u003e\n  \u003cbr /\u003e\n  Local codebase intelligence for AI coding agents — graph, drift, and version-correct docs on your machine\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@vibgrate/cli\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/@vibgrate/cli?color=blue\u0026label=npm\" alt=\"npm version\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@vibgrate/cli\"\u003e\u003cimg src=\"https://img.shields.io/npm/dm/@vibgrate/cli?color=green\" alt=\"npm downloads\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://vibgrate.com/cli\"\u003e\u003cimg src=\"https://img.shields.io/badge/live%20demo-vibgrate.com%2Fcli-3FB0A4\" alt=\"live demo\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://vibgrate.com/mcp\"\u003e\u003cimg src=\"https://img.shields.io/badge/Vibgrate%20MCP%20(hosted)-vibgrate.com%2Fmcp-8B5CF6\" alt=\"Vibgrate MCP (hosted)\" /\u003e\u003c/a\u003e\n  \u003ca href=\"./LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-Apache%202.0-blue\" alt=\"Apache 2.0\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/node-%3E%3D22-brightgreen\" alt=\"node 22+\" /\u003e\n\u003c/p\u003e\n\n`vg` answers two questions for any repo:\n\n1. **What is this codebase?** — A deterministic [code graph](https://vibgrate.com/graph): call trees, import paths, impact surfaces, dependency facts.\n2. **How far behind is it?** — A ranked **[DriftScore](https://vibgrate.com/driftscore)** (0–100) with runtime/framework lag, dependency age and EOL proximity, and a prioritised fix list.\n\nEverything runs **on your machine**. No API key, no network call, no data leaving your repo unless you explicitly push. The `vibgrate` command is an alias for `vg` — they are interchangeable.\n\n---\n\n## See it run\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://vibgrate.com/cli\"\u003e\n    \u003cimg src=\"docs/demo/cli-demo.svg\" alt=\"Animated terminal replay: npx @vibgrate/cli scan produces a 74/100 drift score, a score breakdown, and ranked upgrade priorities.\" width=\"620\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eA real \u003ccode\u003evg scan\u003c/code\u003e replay — drift score, breakdown, and ranked priorities in one command. Animation plays right here on GitHub; nothing runs in your browser.\u003c/sub\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://vibgrate.com/cli\"\u003e\u003cstrong\u003e▶ Try the live, interactive CLI simulator →\u003c/strong\u003e\u003c/a\u003e\u003cbr /\u003e\n  \u003csub\u003eStep through every command (\u003ccode\u003escan\u003c/code\u003e, \u003ccode\u003ebuild\u003c/code\u003e, \u003ccode\u003eask\u003c/code\u003e, \u003ccode\u003ewhy\u003c/code\u003e, …) against real sample repos.\u003c/sub\u003e\n\u003c/p\u003e\n\n---\n\n## Try it in 10 seconds\n\nNo install, no signup:\n\n```bash\nnpx @vibgrate/cli scan          # drift score + upgrade priorities\nnpx @vibgrate/cli build         # build the code graph\nnpx @vibgrate/cli ask \"what does AuthService do?\"\n```\n\nInstall for repeat runs:\n\n```bash\nnpm install -D @vibgrate/cli\nnpx vg scan                     # vg is the primary command; vibgrate is an alias\n```\n\n\u003e Local binaries live in `node_modules/.bin` — use `npx vg` (or an npm script) unless you install globally.\n\n---\n\n## Use it with your AI assistant\n\n`vg serve` starts **[Vibgrate AI Context](https://vibgrate.com/library)** — a local-first [MCP](https://vibgrate.com/glossary/model-context-protocol) server that\ngives any MCP-compatible assistant (Claude, Cursor, Windsurf, Copilot, Gemini\nCLI, …) your code map, **offline drift**, local models, and **version-correct\nlibrary docs**, all from your machine (no account, nothing uploaded; thin\nlocal docs fall through to the hosted catalog unless you pass `--local`). No\ncontext-window stuffing, no hallucinated APIs. The map **keeps itself fresh**:\nwhen files change — including edits the assistant itself just made — the next\ntool call rebuilds it incrementally before answering, with no watcher or\ndaemon involved.\n\nWire it up in one command:\n\n```bash\nvg install                      # interactive: pick your assistant(s) and done\nvg install --all                # install for every detected assistant at once\n```\n\nThis writes the MCP config for your chosen tool(s) and installs a skill that teaches the assistant how to query the graph. After reloading your assistant you get graph-aware answers: call trees, impact analysis, drift findings, version-correct library docs — all from local data. The token savings are measured and published, methodology included, at [vibgrate.com/cli/benchmarks/token-savings](https://vibgrate.com/cli/benchmarks/token-savings).\n\nBrowse all 21+ supported assistants and their skill descriptions at **[vibgrate.com/skills](https://vibgrate.com/skills)**.\n\n---\n\n## Understand any codebase\n\nBuild the graph once, query it continuously:\n\n```bash\nvg build                        # index the repo (incremental; re-run after changes)\nvg show src/auth/service.ts     # what this file does, calls, and is called by\nvg ask \"where is rate limiting enforced?\"\nvg impact src/db/connection.ts  # what breaks if this changes + tests to run\nvg path src/api/handler.ts src/db/query.ts   # shortest call path between two files\nvg tree src/server.ts           # call tree rooted at a node\nvg insights                     # overview: hubs, hotspots, untested paths\n```\n\nThe graph is byte-deterministic and reproducible — the same repo always produces the same graph on every machine.\n\n```bash\nvg share                        # make the graph committable + auto-updating for the team\nvg serve                        # start Vibgrate AI Context (local-first MCP: code map + drift + version-correct docs)\n```\n\n---\n\n## Measure and manage upgrade drift\n\n```bash\nvg scan                         # drift score + risk level + ranked priorities\nvg scan --push                  # same, and upload to Vibgrate Cloud for trend tracking\nvg baseline                     # snapshot current drift for regression gating\nvg report                       # generate a report from a saved scan artifact\n```\n\nOne scan gives you:\n\n- **Overall score** (0–100) and risk level (**Low / Moderate / High**)\n- **Score breakdown** — runtime, frameworks, dependencies, EOL\n- **Per-project detail** across Node.js/TypeScript, .NET, Python, and Java\n- **Actionable findings** ranked by likely impact\n- **[SBOM](https://vibgrate.com/glossary/sbom) export** (CycloneDX / SPDX)\n- **Known vulnerabilities** (opt in with `--vulns`) — severity, CVSS, the fixing version, and, in a git repo, who introduced them\n\n---\n\n## Find known vulnerabilities and who introduced them\n\n`vg scan --vulns` checks your installed dependencies against the public [OSV](https://vibgrate.com/glossary/osv) database and reports each known vulnerability with its severity, CVSS score, and the version that fixes it — as text, JSON, or SARIF. Add `--package-manifest` to run it fully offline from a local advisory bundle.\n\n```bash\nvg scan --vulns                 # drift score + known vulnerabilities\nvg scan --full                  # drift + vulnerabilities + a banned-dependency report\n```\n\nIn a git repository, every finding is attributed from history: who introduced the vulnerable version, in which commit, and how long you have been exposed. Those exposure windows roll up into remediation metrics framed around the [EU Cyber Resilience Act (CRA)](https://vibgrate.com/compliance/cra) — per-severity time-exposed and SLA breaches — so \"are we fixing things fast enough?\" has a number.\n\n```bash\nvg why lodash                   # who added a dependency, every version since, and any open vulnerabilities\nvg bisect lodash 4.17.21        # the commit where lodash crossed a version line (e.g. reached the fix)\n```\n\nDetection and attribution span the whole npm ecosystem (npm, pnpm, yarn) plus pip/poetry, cargo, composer, bundler, go, pub, hex, NuGet, and Maven/Gradle — read from each project's lockfile, so it works whatever you build in.\n\nYour AI assistant sees this too: `vg serve` exposes `list_vulnerabilities`, `vuln_attribution`, and an `upgrade_impact` tool that tells an agent what an upgrade will cost — version distance, how many files import the package, the vulnerabilities it fixes, and (online, opt in) the breaking-change notes between your version and the latest.\n\n---\n\n## Track drift over time → create a free workspace\n\nThe CLI is fully useful offline. When you want **trends across runs and repos** — so drift becomes a metric you manage, not a surprise you discover — push scans to a [Vibgrate Cloud](https://vibgrate.com/cloud) workspace:\n\n1. **Create a workspace** at **[dash.vibgrate.com](https://dash.vibgrate.com)** and copy your DSN.\n2. **Connect and push:**\n\n```bash\nVIBGRATE_DSN=\"vibgrate+https://\u003ckey_id\u003e:\u003csecret\u003e@us.ingest.vibgrate.com/\u003cworkspace_id\u003e\" \\\n  vg scan --push\n```\n\nUpload is opt-in — nothing leaves your machine until you run `--push`. Store the DSN as a CI secret, never commit it.\n\n**[→ Create your workspace](https://dash.vibgrate.com)**\n\n---\n\n## CI integration\n\nDrop `vg` into any pipeline to turn drift scoring into a quality gate:\n\n```yaml\n# GitHub Actions — drift gate + SARIF upload\n- name: Vibgrate scan\n  env:\n    VIBGRATE_DSN: ${{ secrets.VIBGRATE_DSN }}\n  run: npx @vibgrate/cli scan --push --format sarif --out vibgrate.sarif --fail-on error\n\n- name: Upload SARIF\n  if: always()\n  uses: github/codeql-action/upload-sarif@v3\n  with:\n    sarif_file: vibgrate.sarif\n```\n\nGate on drift budgets and regression relative to a baseline:\n\n```bash\nvg baseline\nvg scan --baseline .vibgrate/baseline.json --drift-budget 40 --drift-worsening 5\n```\n\n- `--drift-budget \u003cscore\u003e` fails the build if drift exceeds your budget.\n- `--drift-worsening \u003cpercent\u003e` fails the build if drift worsens by more than X% vs baseline.\n\nCopy-paste CI templates live in `examples/github-actions/`. Azure DevOps and GitLab CI snippets are in [DOCS.md](./DOCS.md#ci-integration).\n\n---\n\n## Version-correct library docs\n\n`vg lib` fetches usage docs pinned to the **exact version in your lockfile** — never a newer API your code can't call yet:\n\n```bash\nvg lib react                    # React docs at your installed version\nvg lib express --fn middleware  # specific function reference\n```\n\nAI assistants connected via MCP use `vg lib` automatically when answering questions about library APIs in your project.\n\n---\n\n## SBOM and OpenVEX\n\n```bash\nvg sbom export --format cyclonedx --out sbom.cdx.json\nvg sbom export --format spdx     --out sbom.spdx.json\nvg sbom delta  --from .vibgrate/baseline.json --to .vibgrate/scan_result.json --out delta.txt\nvg vex                          # generate an OpenVEX document for attestation\n```\n\n---\n\n## Privacy \u0026 offline-first\n\n- No data leaves your machine unless you run `--push` / `vg push`.\n- Core graph analysis and drift scoring read manifests and configs — **not your source code**.\n- Works without login and without any SaaS dependency.\n- `--offline` disables registry/network lookups; `--package-manifest \u003cfile\u003e` feeds drift scoring a local version bundle.\n- `--max-privacy` suppresses local artifact writes and high-context scanners; `--no-local-artifacts` skips writing `.vibgrate/*.json` to disk.\n\n```bash\nvg scan --offline --package-manifest ./package-versions.zip --max-privacy --format json --out scan.json\n```\n\nAdd `.vibgrate/` to your `.gitignore` — those are regenerated local outputs.\n\nMore on how Vibgrate handles code and data: [vibgrate.com/security](https://vibgrate.com/security).\n\n---\n\n## Quick start with AI assistants\n\nPaste this into your AI coding tool (Claude, Cursor, Copilot, Gemini CLI, …):\n\n```\nSet up Vibgrate for local codebase intelligence:\n1. Install: npm install -g @vibgrate/cli@latest\n2. Build the graph: vg build\n3. Wire your assistant: vg install\n4. Ask: vg ask \"what are the main entry points?\"\nThen explain the architecture and my top 3 upgrade priorities.\n```\n\nSee [docs/QUICKSTART-PROMPT.md](./docs/QUICKSTART-PROMPT.md) for the full prompt.\n\n---\n\n## Command reference\n\n### Code graph\n\n| Command | Description |\n| --- | --- |\n| `vg ask \"\u003cquestion\u003e\"` | Query the map in natural language |\n| `vg benchmark` | Reproducible build + memory + token-reduction benchmark (honest estimates) |\n| `vg build [path]` | Build / update the code map (incremental, deterministic) |\n| `vg bundle` | Build an air-gapped bundle (grammars + graph + library catalog) |\n| `vg embed` | Precompute the semantic index for instant `vg ask` |\n| `vg export` | Export the map (json / ndjson / graphml / dot / cypher / md / html / SBOM) |\n| `vg facts \u003cfile\u003e` | Deterministic facts for a node (contracts, invariants) |\n| `vg guide \u003cfile\u003e` | Cited standards / practices for a node (free pack) |\n| `vg impact \u003cfile\u003e` | What breaks if you change it — and the tests to run |\n| `vg install` / `vg uninstall` | Wire (or remove) **Vibgrate AI Context** + skill in your AI assistant |\n| `vg lib \u003cpackage\u003e` | Version-correct, drift-annotated library docs |\n| `vg map` / `vg hubs` / `vg areas` / `vg oddities` | Map insights: overview, most-depended-on code, natural groupings, cross-area smells |\n| `vg models` | The local model fleet (Ollama / LM Studio / gguf), discovered offline |\n| `vg path \u003cfrom\u003e \u003cto\u003e` | How A connects to B (shortest path) |\n| `vg savings` | Local report of tokens/$ saved vs a grep baseline (estimates) |\n| `vg serve` | Start **Vibgrate AI Context** (local-first MCP: code map + drift + version-correct docs) |\n| `vg share` | Make the graph committable + auto-updating for your team |\n| `vg show \u003cfile\u003e` | Explain a node: what it is, what it calls, what calls it |\n| `vg status` | Cache/freshness, counts, staleness |\n| `vg tests \u003cfile\u003e` | Which tests cover a node |\n| `vg tree \u003cfile\u003e` | Call tree rooted at a node |\n| `vg unknowns` | What the graph cannot resolve, ranked by blast radius |\n\n### Drift reporting\n\n| Command | Description |\n| --- | --- |\n| `vg baseline [path]` | Create a drift baseline |\n| `vg bisect \u003cpackage\u003e \u003cconstraint\u003e` | The commit where a dependency crossed a version line (`--assert` to gate CI) |\n| `vg drift` | What is outdated across dependencies (offline; `--online` for currency) |\n| `vg dsn create` | Generate a DSN token |\n| `vg fix` | Ranked, risk-tiered upgrade plans from the hosted planner — then apply the one you choose |\n| `vg init [path]` | Initialise config and `.vibgrate/` |\n| `vg login` / `vg logout` | Authenticate the CLI with your Vibgrate workspace (or clear stored credentials) |\n| `vg push` | Upload scan results to Vibgrate Cloud |\n| `vg report` | Generate a report from a scan artifact |\n| `vg sbom export` / `delta` / `vex` | Export CycloneDX/SPDX SBOM, diff two artifacts, or emit an OpenVEX document |\n| `vg scan [path]` | Scan for upgrade drift |\n| `vg scan --vulns` | Also detect known vulnerabilities (OSV; offline via `--package-manifest`) |\n| `vg scan --full` | Comprehensive scan: drift + vulnerabilities + a banned-dependency report |\n| `vg scan --push` | Scan and push results to Vibgrate Cloud |\n| `vg update` | Check for and install updates |\n| `vg why \u003cpackage\u003e` | Who introduced a dependency, its version history, and any open vulnerabilities |\n\n```bash\nvg scan [path] [--vulns] [--full] [--format text|json|sarif|md] [--out \u003cfile\u003e] [--fail-on warn|error] \\\n  [--offline] [--package-manifest \u003cfile\u003e] [--no-local-artifacts] [--max-privacy] \\\n  [--drift-budget \u003cscore\u003e] [--drift-worsening \u003cpercent\u003e] [--baseline \u003cfile\u003e]\n```\n\nFull flag and configuration reference: **[DOCS.md](./DOCS.md)** · **[vibgrate.com/cli](https://vibgrate.com/cli)**.\n\n---\n\n## Why teams adopt Vibgrate\n\nMost systems don't fail all at once — they accumulate upgrade debt and architectural [drift](https://vibgrate.com/glossary/code-drift) silently until migrations become expensive. `vg` makes that debt measurable and repeatable — the practice we call [Code Drift Intelligence](https://vibgrate.com/code-drift-intelligence) — and gives AI assistants the local context they need to be useful:\n\n| Mode | What you get | Best for |\n| --- | --- | --- |\n| **One-off scan** | Fast snapshot of drift score, lag, and findings | Audits, due diligence, migration planning |\n| **CI-integrated scan** | Continuous drift signal, SARIF annotations, regression guardrails | Keeping upgrade debt under control long-term |\n| **MCP + graph** | AI assistant with real-time, offline codebase context | Day-to-day development, code review, refactoring |\n\nRecommended rollout: `vg build` + `vg install` now, add `vg scan` to CI this week.\n\n---\n\n## Requirements\n\n- Node.js **22+**\n- macOS, Linux, Windows\n\n## Command name conflicts\n\n`vg` is short and occasionally conflicts with other tools (`virtualgo`, `vugu`, the oh-my-zsh `git verify-commit` alias, custom shell aliases, etc.).\n\n**`vibgrate` is an identical alias** — same binary, same flags, same behaviour. If `vg` is taken on your system, use `vibgrate` everywhere instead:\n\n```bash\nvibgrate scan          # same as: vg scan\nvibgrate build         # same as: vg build\nvibgrate serve         # same as: vg serve\n```\n\nWhen `@vibgrate/cli` is installed, it registers **both** bin entries unconditionally. If it detects at install time that `vg` is already claimed by another tool, it prints a one-line notice pointing you to `vibgrate`.\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://dash.vibgrate.com\"\u003e\u003cstrong\u003eCreate a free workspace →\u003c/strong\u003e\u003c/a\u003e\n  \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://vibgrate.com/cli\"\u003eTry the live demo\u003c/a\u003e\n  \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://vibgrate.com/cli/benchmarks\"\u003eBenchmarks\u003c/a\u003e\n  \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://vibgrate.com/library\"\u003eVibgrate AI Context (local MCP)\u003c/a\u003e\n  \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://vibgrate.com/mcp\"\u003eVibgrate MCP (hosted)\u003c/a\u003e\n  \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"https://vibgrate.com/skills\"\u003eAI agent skills\u003c/a\u003e\n  \u0026nbsp;·\u0026nbsp;\n  \u003ca href=\"./DOCS.md\"\u003eFull docs\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eApache-2.0 licensed · Copyright © 2026 Vibgrate\u003c/sub\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvibgrate%2Fcli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvibgrate%2Fcli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvibgrate%2Fcli/lists"}