Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Vyges CLI

vyges is the single command-line entry point to the Vyges hardware-IP toolchain. It promotes a small set of tools and dispatches, git-style, to external vyges-<name> binaries on your PATH:

CommandBinaryWhat it does
vygesvygesTop-level CLI: list modules, agent guide, bug/feature/sponsor
vyges pdk-storevyges-pdk-storeConsistent PDK presentation + resolution
vyges catalogvyges-catalogSearch and fetch IPs from the Vyges IP catalog

All three binaries ship together in a single release, so installing vyges installs the whole suite (see Installation).

This documentation is built from the CLI itself — the command reference pages are generated from each binary’s --help output.

Installation

Vyges is distributed as prebuilt binaries (the source is private). Every release bundles all three binaries — vyges, vyges-pdk-store, vyges-catalog — and installs them into ~/.vyges/bin.

These instructions describe the intended public install flow. The public release repo (vyges/cli) and Homebrew tap (vyges/homebrew-tap) go live with the first published release.

Homebrew (macOS / Linux)

brew install vyges/tap/vyges

This installs all three binaries in one shot.

curl installer (macOS / Linux)

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/vyges/cli/releases/latest/download/vyges-installer.sh | sh

The installer places the binaries in ~/.vyges/bin. Add it to your PATH if it isn’t already:

export PATH="$HOME/.vyges/bin:$PATH"

Windows (PowerShell)

irm https://github.com/vyges/cli/releases/latest/download/vyges-installer.ps1 | iex

Verify

vyges --version
vyges modules        # shows which Vyges modules are installed

Supported platforms

  • macOS (Apple Silicon and Intel)
  • Linux (x86-64 and arm64)
  • Windows (x86-64)

Output & logging

Vyges follows the Unix output contract, so its output composes cleanly with pipes, redirection, and other tools:

  • stdout — data. Command results: tables, JSON, resolved paths, URLs. This is what you capture, pipe, or parse.
  • stderr — diagnostics. Progress notes, hints, warnings, and errors. This is what you read while a command runs, or send to a log.

Because the two streams are separate, you control logging with the shell — there is no --log-file flag, and you don’t need one.

Redirecting output

vyges catalog search uart > results.txt      # data only → file
vyges catalog search uart 2> run.log         # diagnostics only → file
vyges catalog search uart > out.txt 2>&1     # both → one file (data + diagnostics)
vyges catalog search uart 2>&1 | tee run.log # both to screen AND a log
vyges catalog search uart --json | jq '.[]'  # data is clean JSON → pipe to a parser

Because data and diagnostics are separated, ... > results.txt gives you a file with only the results — no progress chatter mixed in — while 2> run.log keeps a clean log of what happened. This is the recommended way to “save a log”: let the shell do it.

Tip: for machine consumption, prefer --json (supported by most commands) over scraping human output. Combined with 2>/dev/null you get a pure JSON stream.

Verbosity

How much goes to stderr is controlled by a level. It never affects stdout — your data is never suppressed.

FlagLevelShows on stderr
-q -q -qoffnothing (exit code still signals errors)
-q -qerrorerrors only
-qwarnerrors + warnings
(default)infoerrors + warnings + info/hints
-vdebug+ debug detail
-v -vtrace+ trace detail

-v and -q are repeatable and combine (the net of the two steps from info).

The VYGES_LOG environment variable

Set the level by name or number (05) without flags:

export VYGES_LOG=debug      # or: off | error | warn | info | trace | 0..5
vyges pdk-store resolve sky130A lib --corner tt_025C_1v80

VYGES_LOG is inherited by child processes, so when vyges <tool> … dispatches to a vyges-<tool> binary, the whole command tree runs at the same level — set it once.

Precedence (highest first): -v/-q flags → VYGES_LOG → default (info). So a flag on an invocation overrides the environment for that process; the environment configures everything else, including dispatched tools.

A flag binds to the process you give it to. vyges -v <tool> … makes vyges verbose; the flag is consumed before dispatch, so the child tool is unaffected. To make the child verbose, either set VYGES_LOG (it covers the whole tree) or pass the flag after the tool name so it goes through to the child:

VYGES_LOG=debug vyges pdk-store list    # whole tree verbose (env — simplest)
vyges -v modules                        # the `vyges` command itself, verbose
vyges pdk-store -v list                 # flag passes through → vyges-pdk-store verbose

vyges

Generated from vyges --help. Do not edit by hand — run scripts/gen-cli-reference.sh.

Vyges — one CLI for the Vyges hardware-IP toolchain.

`vyges modules` lists the promoted tools; `vyges agents` prints the agent guide. An
unknown subcommand dispatches to an external `vyges-<name>` binary on PATH (e.g.
`vyges pdk-store …` runs vyges-pdk-store). Report bugs/features centrally with
`vyges --bug-report` / `--feature-request`, or support Vyges with `vyges --sponsor`.

Usage: vyges [OPTIONS] [COMMAND]

Commands:
  modules  List the promoted Vyges modules and whether each is installed
  agents   Print the operating guide for AI IDE agents
  help     Print this message or the help of the given subcommand(s)

Options:
  -v, --verbose...
          Increase diagnostic verbosity (stderr): -v debug, -vv trace. Repeatable

  -q, --quiet...
          Reduce diagnostics (stderr): -q warnings-only, -qq errors-only, -qqq silent. Repeatable. Overrides VYGES_LOG. (Data on stdout is never suppressed.)

      --bug-report
          File a bug report (central — vyges/community issues)

      --feature-request
          File a feature request (central — vyges/community issues)

      --sponsor
          Sponsor Vyges (github.com/sponsors/vyges-ip)

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

vyges pdk-store

Generated from vyges-pdk-store --help. Do not edit by hand — run scripts/gen-cli-reference.sh.

vyges-pdk-store — consistent PDK presentation + resolution

usage:
  vyges-pdk-store list                                   list registered PDKs
  vyges-pdk-store show     <name|file.pdk.json>          show a PDK + its collateral
  vyges-pdk-store validate <file.pdk.json>               schema-validate a descriptor
  vyges-pdk-store add      <file.pdk.json> [--force]     register into the user store
  vyges-pdk-store deregister <name>                      remove a registration (keeps data)
  vyges-pdk-store use      <name> [--local]              set the selected (*) PDK (global, or ./.vyges)
  vyges-pdk-store resolve  <name|file> <key> [--corner C] [--library L]
                                                         print collateral path(s) for a flow
  vyges-pdk-store verify   <name|file>                   check collateral paths exist
  vyges-pdk-store fetch    <name|file> [--dry-run]       materialize PDK data (git mirror / Ciel)
  vyges-pdk-store refresh  [--dry-run]                   refresh the catalog from vyges-tools/pdk-catalog

keys for resolve: tech_lef | extract_rules | drc_deck | lvs_deck | primitives_spice |
                  models (per --corner) | lib (per --corner + --library) |
                  spice | gds | lef | verilog (per --library) | <any collateral key>

flags: --corner <name> · --library <name> · --force · --dry-run · --local · -h/--help · -V/--version
       -v/--verbose · -q/--quiet (stderr diagnostics; or set VYGES_LOG=off|error|warn|info|debug|trace)

vyges catalog

Generated from vyges-catalog --help. Do not edit by hand — run scripts/gen-cli-reference.sh.

vyges-catalog — search the Vyges IP catalog

usage:
  vyges-catalog search <query> [--category C] [--keyword K] [--json]
                                             find IPs by name / category / keyword
  vyges-catalog show     <name> [--json]     show one IP (incl. license)
  vyges-catalog license  <name>              print one IP's license (SPDX)
  vyges-catalog categories [--json]          list categories (with counts)
  vyges-catalog sources  [--json]            list configured sources + cache status
  vyges-catalog refresh  [--source N] [--dry-run]
                                             fetch source indexes (like `apt update`)

  vyges-catalog fetch    <ip[@version]> [--force] [--dry-run]
                                             materialize an open IP into ~/.vyges/catalog/ip/<name>/<version>
  vyges-catalog fetch --private <url|path>[@version]
                                             materialize a private/NDA IP into ~/.vyges/catalog/private_ip/ (segregated)
                                             from a repo URL/org-repo (clone) or a local directory (import);
                                             version optional — derived from vyges-metadata.json if omitted
  vyges-catalog cached   [--json]            list locally installed (cached) IPs + versions
                                             (aliases: installed, ls)
  vyges-catalog path     <ip[@version]>      print a cached IP's path (for flows)
  vyges-catalog verify   <ip[@version]>      check a cached IP is intact
  vyges-catalog rm       <ip[@version]>      remove cached version(s) of an IP
  vyges-catalog prune    [--dry-run]         remove the whole local IP cache

Search-first by design (no bulk dump). Sources: a built-in `oss` catalog plus any
enterprise catalogs in ~/.vyges/catalog/sources.conf (line: `name url [TOKEN_ENV]`).
flags: --category <c> · --keyword <k> · --source <n> · --private · --force · --json · --dry-run · -h · -V
       -v/--verbose · -q/--quiet (stderr diagnostics; or set VYGES_LOG=off|error|warn|info|debug|trace)