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 with2>/dev/nullyou 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.
| Flag | Level | Shows on stderr |
|---|---|---|
-q -q -q | off | nothing (exit code still signals errors) |
-q -q | error | errors only |
-q | warn | errors + warnings |
| (default) | info | errors + warnings + info/hints |
-v | debug | + debug detail |
-v -v | trace | + 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 (0–5) 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