Skip to content

Commit d1c91ed

Browse files
committed
feat(website): redesign homepage, add version switcher, refresh docs
Redesign homepage with hero section, 3 feature pillars (VDB, Scan, CI/CD), and Coming Soon enterprise broker banner. Add v1/v2 API version switcher with localStorage persistence and content gating. Create scan command reference page. Restructure VDB docs to canonical nested command names and add V2-only commands. Apply Vulnetix brand palette via CSS custom properties.
1 parent c52a3fd commit d1c91ed

15 files changed

Lines changed: 1430 additions & 116 deletions

File tree

website/assets/css/custom.css

Lines changed: 486 additions & 0 deletions
Large diffs are not rendered by default.

website/content/_index.md

Lines changed: 76 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,36 +10,86 @@ layout: hextra-home
1010

1111
<div class="hx-mt-6 hx-mb-6">
1212
{{< hextra/hero-headline >}}
13-
Automated Vulnerability&nbsp;<br class="sm:hx-block hx-hidden" />Management CLI
13+
Unified Vulnerability&nbsp;<br class="sm:hx-block hx-hidden" />Management CLI
1414
{{< /hextra/hero-headline >}}
1515
</div>
1616

17-
<div class="hx-mb-12">
17+
<div class="hx-mb-8">
1818
{{< hextra/hero-subtitle >}}
19-
Remediation over discovery. Collect, assess, triage, and remediate&nbsp;<br class="sm:hx-block hx-hidden" />vulnerabilities across your projects and CI/CD pipelines.
19+
Remediation over discovery. Collect, assess, triage, and remediate&nbsp;<br class="sm:hx-block hx-hidden" />vulnerabilities from a single command-line tool.
2020
{{< /hextra/hero-subtitle >}}
2121
</div>
2222

23-
<div class="hx-mb-6">
24-
{{< hextra/hero-button text="Get Started" link="docs/getting-started" >}}
25-
</div>
26-
27-
<div class="hx-mt-6"></div>
28-
29-
{{< hextra/feature-grid >}}
30-
{{< hextra/feature-card
31-
title="Multiple Installation Methods"
32-
subtitle="Install via Go modules, direct binary download, or build from source."
33-
style="background: radial-gradient(ellipse at 50% 80%,rgba(59,130,246,0.15),hsla(0,0%,100%,0));"
34-
>}}
35-
{{< hextra/feature-card
36-
title="CI/CD Integrations"
37-
subtitle="First-class support for GitHub Actions, GitLab CI, Bitbucket Pipelines, and Azure DevOps."
38-
style="background: radial-gradient(ellipse at 50% 80%,rgba(142,53,234,0.15),hsla(0,0%,100%,0));"
39-
>}}
40-
{{< hextra/feature-card
41-
title="Vulnerability Database"
42-
subtitle="Query CVEs, package vulnerabilities, and ecosystems via the built-in VDB command."
43-
style="background: radial-gradient(ellipse at 50% 80%,rgba(234,179,8,0.15),hsla(0,0%,100%,0));"
44-
>}}
45-
{{< /hextra/feature-grid >}}
23+
<div class="vx-cta-row hx-mb-4">
24+
<a href="docs/getting-started" class="vx-btn-primary">Get Started</a>
25+
<a href="https://app.vulnetix.com/login" class="vx-btn-secondary" target="_blank" rel="noopener">Sign In</a>
26+
</div>
27+
<a href="https://www.vulnetix.com" class="vx-subtle-link" target="_blank" rel="noopener">Learn more at vulnetix.com &rarr;</a>
28+
29+
<div class="hx-mt-16"></div>
30+
31+
<div class="vx-feature-section vx-feature-vdb">
32+
33+
## Vulnerability Intelligence
34+
35+
Query vulnerabilities by any identifier format — CVE, GHSA, PYSEC, RUSTSEC, and 75+ more. Get exploit intelligence, fix data, scoring metrics, and full remediation plans from aggregated multi-source data.
36+
37+
<ul>
38+
<li>Multi-source aggregation</li>
39+
<li>Exploit intelligence</li>
40+
<li>Fix recommendations</li>
41+
<li>Scoring metrics</li>
42+
<li>Remediation plans</li>
43+
</ul>
44+
45+
<a href="docs/cli-reference/vdb" class="vx-feature-link">VDB command reference &rarr;</a>
46+
47+
</div>
48+
49+
<div class="vx-feature-section vx-feature-scan">
50+
51+
## Software Composition Analysis
52+
53+
Auto-discover and scan manifest files and SBOMs for known vulnerabilities across supported ecosystems. Zero-config scanning with SPDX and CycloneDX support.
54+
55+
<ul>
56+
<li>Auto-discovery</li>
57+
<li>SPDX & CycloneDX</li>
58+
<li>Broad ecosystem coverage</li>
59+
<li>Zero-config scanning</li>
60+
</ul>
61+
62+
<a href="docs/cli-reference/scan" class="vx-feature-link">Scan command reference &rarr;</a>
63+
64+
</div>
65+
66+
<div class="vx-feature-section vx-feature-cicd">
67+
68+
## CI/CD Pipeline Integration
69+
70+
Native GitHub Actions support for automated vulnerability management. Upload SBOMs, SARIF, and VEX artifacts directly from your CI workflows. Also works with GitLab CI, Bitbucket Pipelines, and Azure DevOps.
71+
72+
<ul>
73+
<li>First-class GitHub Actions</li>
74+
<li>Artifact auto-collection</li>
75+
<li>GitLab CI</li>
76+
<li>Bitbucket Pipelines</li>
77+
<li>Azure DevOps</li>
78+
</ul>
79+
80+
<a href="docs/ci-cd" class="vx-feature-link">CI/CD integration guide &rarr;</a>
81+
82+
</div>
83+
84+
<div class="vx-coming-soon">
85+
<h3>Enterprise Broker <span class="vx-coming-soon-badge">Coming Soon</span></h3>
86+
<p>Keep all Vulnetix operations within your private network. The on-prem broker enables Enterprise customers to run vulnerability scanning, VDB queries, and remediation workflows entirely behind the firewall.</p>
87+
<a href="https://www.vulnetix.com" class="vx-contact-link" target="_blank" rel="noopener">Contact us &rarr;</a>
88+
</div>
89+
90+
<div class="vx-footer-links">
91+
<a href="https://github.com/Vulnetix/cli" target="_blank" rel="noopener">GitHub</a>
92+
<a href="https://www.vulnetix.com" target="_blank" rel="noopener">Vulnetix Home</a>
93+
<a href="https://app.vulnetix.com/login" target="_blank" rel="noopener">App Login</a>
94+
<a href="https://redocly.github.io/redoc/?url=https://api.vdb.vulnetix.com/v1/spec" target="_blank" rel="noopener">API Docs</a>
95+
</div>

website/content/docs/cli-reference/_index.md

Lines changed: 59 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ The root command runs an authentication healthcheck.
2222
|------|-------------|
2323
| `info` (default) | Authentication healthcheck across all credential sources |
2424

25+
**Global Flags:**
26+
27+
| Flag | Type | Description |
28+
|------|------|-------------|
29+
| `--org-id` | string | Organization ID (UUID) |
30+
| `--api-key` | string | Direct API key (overrides VULNETIX_API_KEY) |
31+
| `--help` | - | Help for any command |
32+
2533
---
2634

2735
### vulnetix auth
@@ -175,6 +183,26 @@ vulnetix gha status --uuid <UUID>
175183

176184
---
177185

186+
### vulnetix scan
187+
188+
Auto-discover and scan manifest files and SBOMs for known vulnerabilities. See the full [Scan Command Reference](scan/) for details.
189+
190+
```bash
191+
vulnetix scan [flags]
192+
vulnetix scan status <scan-id> [flags]
193+
```
194+
195+
| Flag | Description |
196+
|------|-------------|
197+
| `--path` | Directory to scan (default: `.`) |
198+
| `--depth` | Max recursion depth (default: `3`) |
199+
| `--file` | Scan a single file (skip auto-discovery) |
200+
| `--exclude` | Exclude paths matching glob (repeatable) |
201+
| `--no-poll` | Print scan IDs without waiting for results |
202+
| `-o, --output` | Output format: `json`, `pretty` |
203+
204+
---
205+
178206
### vulnetix vdb
179207

180208
Interact with the Vulnetix Vulnerability Database (VDB) API. See the full [VDB Command Reference](vdb/) for all subcommands and detailed usage.
@@ -191,19 +219,40 @@ vulnetix vdb <subcommand> [flags]
191219
| `vulns <package>` | Get vulnerabilities for a package |
192220
| `spec` | Get the OpenAPI specification |
193221
| `exploits <vuln-id>` | Get exploit intelligence for a vulnerability |
222+
| `exploits search` | Search exploits across all vulnerabilities |
223+
| `exploits sources` | List exploit intelligence sources |
224+
| `exploits types` | List exploit type classifications |
194225
| `fixes <vuln-id>` | Get fix data for a vulnerability |
226+
| `fixes distributions` | List supported Linux distributions for fix advisories |
195227
| `versions <package>` | Get all versions of a package across ecosystems |
196228
| `gcve` | Get vulnerabilities by date range |
229+
| `gcve issuances` | List GCVE issuance identifiers by calendar month |
197230
| `purl <purl-string>` | Query VDB using a Package URL (PURL) |
198-
| `gcve-issuances` | List GCVE issuance identifiers by calendar month |
199231
| `ids <year> <month>` | List CVE identifiers published in a calendar month |
200232
| `search <prefix>` | Search CVE identifiers by prefix |
201233
| `sources` | List all vulnerability data sources |
202-
| `metric-types` | List all vulnerability metric/scoring types |
203-
| `exploit-sources` | List all exploit intelligence sources |
204-
| `exploit-types` | List exploit type classifications |
205-
| `fix-distributions` | List supported Linux distributions for fix advisories |
234+
| `metrics types` | List all vulnerability metric/scoring types |
206235
| `status` | Check API health and display CLI/auth metadata |
236+
| `packages search <query>` | Full-text search across packages |
237+
| `ecosystem package <eco> <pkg>` | Get package info within an ecosystem |
238+
| `ecosystem group <eco> <grp> <art>` | Get group/artifact info (Maven-style) |
239+
240+
<div class="vdb-v2-only">
241+
242+
**V2-only subcommands** (use `-V v2`):
243+
244+
| Subcommand | Description |
245+
|------------|-------------|
246+
| `workarounds <vuln-id>` | Get workaround information |
247+
| `advisories <vuln-id>` | Get advisory data |
248+
| `cwe guidance <vuln-id>` | Get CWE-based guidance |
249+
| `kev <vuln-id>` | Get CISA KEV status |
250+
| `timeline <vuln-id>` | Get vulnerability timeline |
251+
| `affected <vuln-id>` | Get affected products/packages |
252+
| `scorecard <vuln-id>` | Get vulnerability scorecard |
253+
| `remediation plan <vuln-id>` | Get context-aware remediation plan |
254+
255+
</div>
207256

208257
---
209258

@@ -291,10 +340,11 @@ Credentials are stored as JSON in one of two locations:
291340

292341
The CLI loads credentials in this order (first match wins):
293342

294-
1. Environment variables: `VULNETIX_API_KEY` + `VULNETIX_ORG_ID` (Direct API Key)
295-
2. Environment variables: `VVD_ORG` + `VVD_SECRET` (SigV4)
296-
3. Project dotfile: `.vulnetix/credentials.json`
297-
4. Home directory: `~/.vulnetix/credentials.json`
343+
1. CLI flags: `--org-id` + `--api-key` or `--secret`
344+
2. Environment variables: `VULNETIX_API_KEY` + `VULNETIX_ORG_ID` (Direct API Key)
345+
3. Environment variables: `VVD_ORG` + `VVD_SECRET` (SigV4)
346+
4. Project dotfile: `.vulnetix/credentials.json`
347+
5. Home directory: `~/.vulnetix/credentials.json`
298348

299349
## Global Flags
300350

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
---
2+
title: "Scan Command Reference"
3+
weight: 4
4+
description: "Auto-discover manifest files and SBOMs, then scan for known vulnerabilities via the VDB API."
5+
---
6+
7+
The `scan` command auto-discovers package manifest files and SBOM documents in a directory tree, then submits them to the Vulnetix VDB API for vulnerability analysis.
8+
9+
> **Note:** The scan command always uses API v2 automatically.
10+
11+
## Usage
12+
13+
```bash
14+
vulnetix scan [flags]
15+
vulnetix scan status <scan-id> [flags]
16+
```
17+
18+
## Flags
19+
20+
| Flag | Type | Default | Description |
21+
|------|------|---------|-------------|
22+
| `--path` | string | `.` | Directory to scan |
23+
| `--depth` | int | `3` | Maximum recursion depth for file discovery |
24+
| `--file` | string | - | Scan a single file (skips auto-discovery) |
25+
| `--type` | string | auto | Override detected file type: `manifest`, `spdx`, `cyclonedx` |
26+
| `--manifest-type` | string | auto | Override manifest type (e.g. `package-lock.json`) |
27+
| `--ecosystem` | string | auto | Override ecosystem for manifest scan |
28+
| `--exclude` | stringArray | - | Exclude paths matching glob pattern (repeatable) |
29+
| `--no-poll` | bool | `false` | Print scan IDs without waiting for results |
30+
| `--poll-interval` | int | `5` | Polling interval in seconds |
31+
| `-o, --output` | string | `pretty` | Output format: `json`, `pretty` |
32+
33+
## Scan Status
34+
35+
Check the status of a previously submitted scan.
36+
37+
```bash
38+
vulnetix scan status <scan-id> [flags]
39+
```
40+
41+
| Flag | Type | Default | Description |
42+
|------|------|---------|-------------|
43+
| `--poll` | bool | `false` | Poll until scan completes |
44+
| `--poll-interval` | int | `5` | Polling interval in seconds |
45+
| `-o, --output` | string | `pretty` | Output format: `json`, `pretty` |
46+
47+
## Supported Manifest Files
48+
49+
The scanner recognizes these package manager manifest and lock files:
50+
51+
| Filename | Ecosystem | Language | Lock file? |
52+
|----------|-----------|----------|------------|
53+
| `package-lock.json` | npm | JavaScript | Yes |
54+
| `package.json` | npm | JavaScript | No |
55+
| `yarn.lock` | npm | JavaScript | Yes |
56+
| `pnpm-lock.yaml` | npm | JavaScript | Yes |
57+
| `requirements.txt` | PyPI | Python | No |
58+
| `Pipfile.lock` | PyPI | Python | Yes |
59+
| `poetry.lock` | PyPI | Python | Yes |
60+
| `uv.lock` | PyPI | Python | Yes |
61+
| `go.sum` | Go | Go | Yes |
62+
| `go.mod` | Go | Go | No |
63+
| `Gemfile.lock` | RubyGems | Ruby | Yes |
64+
| `Cargo.lock` | Cargo | Rust | Yes |
65+
| `pom.xml` | Maven | Java | No |
66+
| `gradle.lockfile` | Maven | Java | Yes |
67+
| `composer.lock` | Composer | PHP | Yes |
68+
| `packages.lock.json` | NuGet | C# | Yes |
69+
| `Package.resolved` | Swift | Swift | Yes |
70+
| `pubspec.lock` | Pub | Dart | Yes |
71+
| `mix.lock` | Hex | Elixir | Yes |
72+
| `build.lock` | Maven | Scala | Yes |
73+
| `build.gradle.kts` | Maven | Kotlin | No |
74+
75+
Not all manifest types are supported by the backend for vulnerability scanning yet. Currently supported for scanning:
76+
77+
- `package.json`, `package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`
78+
- `requirements.txt`, `Pipfile.lock`
79+
- `go.sum`, `go.mod`
80+
- `Cargo.lock`
81+
- `Gemfile.lock`
82+
- `pom.xml`
83+
- `composer.lock`
84+
85+
## Supported SBOM Formats
86+
87+
The scanner detects and supports these SBOM document formats:
88+
89+
| Format | Supported Versions |
90+
|--------|-------------------|
91+
| SPDX | 2.3 |
92+
| CycloneDX | 1.4, 1.5, 1.6 |
93+
94+
SBOM detection is performed on `.json` files by checking for format-specific fields (`spdxVersion`/`SPDXID` for SPDX, `bomFormat`/`specVersion` for CycloneDX).
95+
96+
## Auto-Discovery
97+
98+
When run without `--file`, the scanner walks the directory tree starting from `--path` up to `--depth` levels deep. It automatically skips common non-project directories:
99+
100+
- `node_modules`, `.git`, `.hg`
101+
- `__pycache__`, `.tox`, `.venv`
102+
- `vendor`, `.cargo`
103+
104+
Use `--exclude` to skip additional paths by glob pattern.
105+
106+
## Examples
107+
108+
### Auto-discover and scan the current directory
109+
110+
```bash
111+
vulnetix scan
112+
```
113+
114+
### Scan a specific project directory
115+
116+
```bash
117+
vulnetix scan --path /path/to/project --depth 5
118+
```
119+
120+
### Scan a single manifest file
121+
122+
```bash
123+
vulnetix scan --file package-lock.json
124+
```
125+
126+
### Scan a CycloneDX SBOM
127+
128+
```bash
129+
vulnetix scan --file sbom.cdx.json --type cyclonedx
130+
```
131+
132+
### Exclude test fixtures and vendor directories
133+
134+
```bash
135+
vulnetix scan --exclude "test/**" --exclude "vendor/**"
136+
```
137+
138+
### Fire-and-forget mode (no polling)
139+
140+
```bash
141+
vulnetix scan --no-poll
142+
# Returns scan IDs immediately — check later with:
143+
vulnetix scan status <scan-id> --poll
144+
```
145+
146+
### JSON output for scripting
147+
148+
```bash
149+
vulnetix scan --output json | jq '.results'
150+
```
151+
152+
### Check scan status
153+
154+
```bash
155+
# One-shot check
156+
vulnetix scan status abc123def
157+
158+
# Poll until complete
159+
vulnetix scan status abc123def --poll --poll-interval 10
160+
```

0 commit comments

Comments
 (0)