Skip to main content

vulkro portfolio

Pro

vulkro portfolio is part of Pro: Portfolio (portfolio), every repository at once, rolled up. On Free it stops before doing any work, prints what it needs and where to get it, and exits 1. See Pricing.

Walk a directory of git repos, scan each, and roll the results up into a portfolio view. For security leads tracking risk across many projects at once.

Sub-commands

vulkro portfolio scan <path> # scan every repo under <path>, write the rollup
vulkro portfolio show # print the latest rollup as a table
vulkro portfolio trend # portfolio burndown from persisted history
vulkro portfolio dashboard <dir> # dashboard from a directory of scan JSON files
Sub-commandDescription
scanWalk every git repo under <path>, scan each, and write the rollup to your local portfolio file.
showPrint the latest portfolio rollup as a terminal table.
trendRender a portfolio burndown trend from persisted scan history.
dashboardRender a multi-project dashboard from a directory of per-project vulkro scan --format json outputs.

Run vulkro portfolio scan --help and the other sub-commands' --help for their exact flags.

Example

# Scan a directory of repos, then view the rollup.
vulkro portfolio scan ~/work/repos
vulkro portfolio show

Command reference

Generated from vulkro help portfolio on vulkro 0.26.0. This block is the authoritative flag, usage, and exit-code reference for this command; the prose above is the friendly explanation. Do not edit this block by hand; run npm run docs:cli after a release.

[Pro] Scan a folder of repositories and roll the results into one portfolio.

[Pro] Walk a directory of git repos and roll up scan results into a portfolio JSON.

Exit codes: `0` rollup / view produced and no criticals in the latest snapshot; `1` the most recent snapshot still carries critical findings (`portfolio trend` / `portfolio dashboard`); `2` bad args or a scan / IO error. See each sub-action for its exact contract.

Usage: vulkro portfolio [OPTIONS] <COMMAND>

Commands:
scan Walk every git repo under `<path>`, scan each, and write the rollup to `~/.vulkro/portfolio.json`
show Print the latest portfolio rollup as a terminal table
trend Render a portfolio burndown trend from persisted scan history
dashboard Render a multi-project portfolio dashboard from a directory of per-project `vulkro scan --format json` outputs
help Print this message or the help of the given subcommand(s)

Options:
--offline
Hard-disable every outbound network call for this run (sets VULKRO_OFFLINE=1). Blocks the CVE feed, the license heartbeat, the update check, webhooks, and any cloud AI endpoint; a loopback model (http://127.0.0.1, http://localhost) is still allowed. Equivalent to exporting VULKRO_OFFLINE=1, and the flag wins when both are set

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

$ vulkro portfolio scan --help
------------------------------------------------------------
Walk every git repo under `<path>`, scan each, and write the rollup to `~/.vulkro/portfolio.json`.

Exit codes: 0 portfolio scanned, no critical or high findings across any repo. 1 portfolio scanned and at least one critical or high was reported. 2 error: bad args, path not found, scan or IO failure.

Usage: vulkro portfolio scan [OPTIONS] [PATH]

Arguments:
[PATH]
[default: .]

Options:
--offline
Hard-disable every outbound network call for this run (sets VULKRO_OFFLINE=1). Blocks the CVE feed, the license heartbeat, the update check, webhooks, and any cloud AI endpoint; a loopback model (http://127.0.0.1, http://localhost) is still allowed. Equivalent to exporting VULKRO_OFFLINE=1, and the flag wins when both are set

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

$ vulkro portfolio show --help
------------------------------------------------------------
Print the latest portfolio rollup as a terminal table.

Exit codes: 0 a rollup was found and printed, or none exists yet. 2 error: no home dir, unreadable portfolio file. This is a pure reporting surface and never returns 1: use `portfolio scan` or `portfolio trend` to gate CI.

Usage: vulkro portfolio show [OPTIONS]

Options:
--offline
Hard-disable every outbound network call for this run (sets VULKRO_OFFLINE=1). Blocks the CVE feed, the license heartbeat, the update check, webhooks, and any cloud AI endpoint; a loopback model (http://127.0.0.1, http://localhost) is still allowed. Equivalent to exporting VULKRO_OFFLINE=1, and the flag wins when both are set

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

$ vulkro portfolio trend --help
------------------------------------------------------------
Render a portfolio burndown trend from persisted scan history.

Each `portfolio scan` appends a point to `~/.vulkro/scans.db` (tagged with the scan root). This reads them back, oldest first, and prints a burndown table (or JSON with `--format json`) showing how project count, criticals, highs, and total findings have moved over time for `<path>`.

Exit codes: 0 trend rendered and the most recent snapshot has no criticals. 1 trend rendered and the most recent snapshot still has criticals. 2 error: bad args, no home dir, database failure.

Usage: vulkro portfolio trend [OPTIONS] [PATH]

Arguments:
[PATH]
Portfolio root to read history for. Defaults to the current dir

[default: .]

Options:
--limit <LIMIT>
Maximum number of most-recent runs to include

[default: 20]

--offline
Hard-disable every outbound network call for this run (sets VULKRO_OFFLINE=1). Blocks the CVE feed, the license heartbeat, the update check, webhooks, and any cloud AI endpoint; a loopback model (http://127.0.0.1, http://localhost) is still allowed. Equivalent to exporting VULKRO_OFFLINE=1, and the flag wins when both are set

--format <FORMAT>
Output format: `table` (default) or `json`

[default: table]

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

$ vulkro portfolio dashboard --help
------------------------------------------------------------
Render a multi-project portfolio dashboard from a directory of per-project `vulkro scan --format json` outputs.

Layout expected under `<input-dir>`:

acme_api/ findings.json # vulkro scan --format json project_metadata.json # optional: {"name": "...", "type": "..."} acme_web/ findings.json ...

`findings.json` is leniently parsed: it can be a full `ScanResult` document (the standard `vulkro scan --format json` shape) or a bare `Vec<SecurityFinding>` array. The optional sidecar names the project for display and tags it with a type (`production`, `staging`, `dev`, ...).

Output: a self-contained HTML report (inline CSS, no JavaScript, no external assets) covering per-project risk, cross-project finding groups (same finding shared across N projects), and a cross-project severity normalisation panel. JSON output is available via `--format json`.

Exit codes: 0 no findings across any project. 1 one or more projects have findings. 2 error: bad input layout, parse failure, file system error.

Usage: vulkro portfolio dashboard [OPTIONS] <INPUT_DIR>

Arguments:
<INPUT_DIR>
Parent directory containing one subfolder per project

Options:
-o, --output <PATH>
Path to write the rendered output. When omitted, writes to stdout (HTML when --format html, JSON when --format json)

--offline
Hard-disable every outbound network call for this run (sets VULKRO_OFFLINE=1). Blocks the CVE feed, the license heartbeat, the update check, webhooks, and any cloud AI endpoint; a loopback model (http://127.0.0.1, http://localhost) is still allowed. Equivalent to exporting VULKRO_OFFLINE=1, and the flag wins when both are set

--format <FORMAT>
Output format: `html` (default) or `json`

[default: html]

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