Skip to main content
Reference

Registry, auth, and network

The messages vg prints when a registry, sign-in, or upload fails, and the next command for each.

Three failures

Match the message to the failure, then run the next command.

What failedWhat you seeNext command
No network, or registry.npmjs.org refused the checkVibgrate cannot connect to the npm registry to check package versions.npm view npm dist-tags.latest, then either fix registry access or vg scan --offline --package-manifest <file>
Upload has no DSN, a bad DSN, or the server rejected itNo DSN provided for push. / Invalid DSN format. / Upload failed: HTTP 401 or 403vg login, or set VIBGRATE_DSN
You asked for no networkno registry banner; drift for packages outside the manifest is unknownvg scan --offline --package-manifest <file>

Examples use placeholders (<token>, <key_id>, <secret>, <file>, <host>, <path>). They are not real values.

A DSN, an npm token, an Authorization header, and a URL that contains a username and password are credentials. They must not appear in vg output or in CI logs. vg removes those shapes from registry and upload errors before it prints them. If a log already contains one, rotate it. In CI, set VIBGRATE_DSN in the secret store. --dsn puts the value in the process list. vg dsn create prints the new DSN once so you can store it. That line is the secret. Do not run vg dsn create in a job whose log is kept.

Runtime errors are prefixed with error: and a line (ref <id>). The id is a correlation id for that process, not a credential.

Offline scan

vg scan --offline does not call a package registry, does not call OSV, and does not upload, even when a DSN is set. The npm registry banner below is not printed.

Without --package-manifest, latest versions are not looked up. Dependency drift for those packages is unknown. A missing latest version is not a score of zero.

vg scan --offline --package-manifest <file>

<file> is JSON, or a ZIP that contains package-versions.json, manifest.json, or index.json. One published bundle is https://github.com/vibgrate/manifests/latest-packages.zip.

A bad manifest stops the command (exit code 1) before the scan:

SituationMessage
Missing pathPackage manifest not found: <path>. Pass a readable JSON or ZIP package-version manifest to --package-manifest.
Not readablePackage manifest is not readable: <path>. Check permissions and pass a readable JSON or ZIP package-version manifest to --package-manifest.
A directoryPackage manifest is not a file: <path>. Pass a JSON or ZIP package-version manifest to --package-manifest.
Not a manifestPackage manifest is not usable: <path>. Expected a JSON object of package versions, or a ZIP containing package-versions.json, manifest.json, or index.json.
ZIP has none of those filesPackage manifest is not usable: <path>. The ZIP must contain package-versions.json, manifest.json, or index.json.
ZIP over the size limitRefusing to read archive <path>: <bytes> bytes exceeds the 256 MiB limit. Exclude this path or pass a smaller archive, then run the command again. Set VG_MAX_ARCHIVE_BYTES to raise the limit (0 disables it).
ZIP whose uncompressed output exceeds the limitRefusing to read archive <path>: uncompressed output exceeds the 256 MiB limit. Exclude this path or pass a smaller archive, then run the command again. Set VG_MAX_ARCHIVE_BYTES to raise the limit (0 disables it).
ZIP over the entry limitRefusing to read archive <path>: it declares <count> entries, over the 10000-entry limit. Exclude this path or pass a smaller archive, then run the command again. Set VG_MAX_ARCHIVE_ENTRIES to raise the limit (0 disables it).

npm registry check

An online vg scan checks https://registry.npmjs.org/npm/latest before it scores.

  • A network failure (no response: DNS, timeout, connection refused) falls back to npm view npm dist-tags.latest, which uses your .npmrc.
  • An HTTP response that is not OK, including 401 and 403, fails the check immediately. That path does not fall back to npm view, and it does not send your npm token.

Either failure stops the scan (exit code 1) with this banner:

✖ Vibgrate cannot connect to the npm registry to check package versions.

  Possible causes:
  • No internet connection
  • Corporate proxy/firewall blocking registry.npmjs.org
  • npm is not installed or not in PATH

  Try running: npm view npm dist-tags.latest

The process also prints error: and (ref <id>) — re-run with --json for detail, or report at https://vibgrate.com/help.

Next step:

  1. Run npm view npm dist-tags.latest.
  2. If that command cannot resolve a host or times out, you are offline or blocked. Download a package-version manifest and run vg scan --offline --package-manifest <file>.
  3. If npm says it is not authorized (HTTP 401 or 403), the registry answered and your npm config is wrong. Fix the registry in .npmrc, or sign in with your package manager.
  4. If npm view succeeds and vg still prints the banner, registry.npmjs.org returned a non-OK status, so the npm fallback did not run. Allow that host, or use the offline manifest.

PyPI, NuGet, Maven Central, RubyGems, crates.io, the Go module proxy, Packagist, pub.dev, Hex, Docker Hub, Artifact Hub, and the Terraform Registry do not print this banner. A failed lookup leaves that package's drift as unknown.

npm view stderr is not printed on this banner. If a later error keeps that stderr and it contains a token, an authorization header, or a URL with a password, that text is removed before it is shown.

vg update uses a separate check. When that check returns nothing, it prints this and exits 1:

Could not reach the npm registry. Check your network connection.

Confirm npm view npm dist-tags.latest, then re-run vg update.

Vulnerability feed

vg scan --vulns queries OSV. When a batch cannot be completed, the vulnerability step says:

OSV unreachable — not checked

That line means the feed was not reached. It does not mean the tree has no vulnerabilities. The command still exits 0 unless another gate fails.

vg scan --vulns --offline does not contact OSV. Advisories come from --package-manifest. When that file has no matching advisories, the step says none found.

Upload authentication

vg scan uploads when you pass --push, or when a DSN is already available, unless you passed --offline. DSN resolution order:

  1. --dsn <dsn>
  2. VIBGRATE_DSN
  3. The VIBGRATE_CREDENTIALS file, if set; otherwise <project>/.vibgrate/credentials.json when that file exists; otherwise ~/.vibgrate/credentials.json

No DSN, from vg scan --push (and from a scan that expected to upload), prints:

No DSN provided for push.

A following line tells you to sign in, set VIBGRATE_DSN, or pass --dsn. Run vg login, or set VIBGRATE_DSN. A claim link is also printed: https://dash.vibgrate.com/claim?vid=<id>&job=scan_drift&channel=cli. It identifies this install. It is not a DSN.

vg push prints No DSN provided. and the same hints. With --strict, the command exits 1. Without --strict, the local result is kept and nothing is uploaded.

Invalid DSN:

Invalid DSN format.

vg push also prints:

Expected: vibgrate+https://<key_id>:<secret>@<host>/<workspace_id>

vg scan --push does not print the expected format. Next step: vg login, or replace VIBGRATE_DSN. Do not print the old value.

When the upload request fails:

Upload failed: HTTP <status>: <body>

A network error uses the same Upload failed: prefix and the client error text. Tokens, authorization headers, and credential-bearing URLs are removed from <body> and from that client text. HTTP 401 or 403 means the DSN was rejected. Next step: vg login, or check VIBGRATE_DSN (key, secret, host, and workspace). With --strict, exit code is 1. Without it, the local scan result remains.

Before an upload, scan calls preflight. A transport or HTTP failure prints:

Preflight check failed: <message>

<message> is HTTP <status>: <body> or the client error, with the same redaction. Without --strict, the scan continues. With --strict, the command exits 1 before the scan.

A plan limit is a separate warning. It names the limit (repository cap, scan credits, or VM minutes), says results will not be uploaded, and the local scan still runs.

vg login network failures:

Failed to start login (HTTP <status>).
Could not reach <host>: <message>

<host> is the ingest host (us.ingest.vibgrate.com or eu.ingest.vibgrate.com, or the host of --ingest). Next step: check the network, then retry vg login. --region selects us or eu. An unknown region prints Unknown region "<id>". Supported: us, eu. A region that is not live yet prints Region "<id>" (<label>) is not yet available. Supported: us, eu. A bad --ingest value prints Invalid ingest URL: <input> with credentials removed from <input>.

If the browser denies the request, the line is ✖ Login was denied in the browser. Next step: vg login.

If the request expires or the wait times out, the message says so and tells you to sign in again. Next step: vg login.

Signed in, workspace not created:

✖ Signed in, but workspace setup failed: Failed to provision workspace: <error>

A following line tells you to finish setup with vg dsn create --workspace new. That command prints Failed to provision DSN: <error> when the provision call fails. <error> is the server text or HTTP <status>, with credentials removed. Next step: confirm the ingest host, then retry.

Build and module install

vg build fetches the Architecture module when it is missing, unless you passed --offline or --local. When the registry cannot provide it, and the output is not --json or --quiet, build prints:

architecture module could not be installed — role/purpose lines are omitted; vg retries automatically (disable with VIBGRATE_NO_KERNEL=1)

The build still finishes. Role and purpose lines are omitted. --offline skips the fetch and does not print this line.

vg module install <name> (names: relevance, hcs, arch):

install failed: <detail> — check network access to the registry, or retry later

Exit code 1. <detail> is one of registry <status> (for example registry 401 or registry 403), tarball <status>, no published version, or an integrity message (integrity mismatch (sha512), integrity mismatch (shasum), malformed integrity metadata, registry provided no integrity metadata). HTTP 401 or 403 means the registry refused the request. A thrown fetch error is <detail> as well, cut at 200 characters, with credentials removed.

vg update, after the CLI itself is current, prints a module line when a refresh fails:

<package> module could not be updated — registry unreachable or no published version

registry <status> or tarball <status> appears in that same position when the registry answered. The CLI update itself still succeeds. Next step: restore registry access, then vg update or vg module install <name>.

vg install --login with --offline or --local exits 5:

--login needs the network; it cannot run under --local/--offline

Next step: run vg install without --login while you are offline, or drop --offline / --local when you want the device login.

No live demo for this command

These failures need a missing network, a refused registry, or a rejected upload, so they cannot be replayed as a fixed public run. The messages below are what vg prints today.

Related Documentation

Vibgrate CLI

See a real scan run

A replay of the actual CLI running against our test repositories — live progress, real findings, a genuine DriftScore. Nothing executes in your browser.

Replay
demo@vibgrate — bash
❯ npx @vibgrate/cli scan
 
╭──────────────────────────────────────────╮
│ Vibgrate Drift Report │
╰──────────────────────────────────────────╯
 
── node-turborepo (node) .
Runtime: >=18.0.0 (6 majors behind)
Frameworks:
Turbo: 1.13.4 → 2.11.7 (1 behind)
TypeScript: 5.9.3 → 7.0.2 (2 behind)
Dependencies:
1 current 1 1-behind 3 2+ behind 1 unknown
 
── @repo/admin (node) apps/admin
Frameworks:
TanStack Query: 5.104.1 → 5.104.1 (current)
React: 18.3.1 → 19.3.0 (1 behind)
React DOM: 18.3.1 → 19.3.0 (1 behind)
TypeScript: 5.9.3 → 7.0.2 (2 behind)
Vite: 5.4.21 → 8.3.3 (3 behind)
Dependencies:
3 current 9 1-behind 3 2+ behind 4 unknown
 
── @repo/api (node) apps/api
Frameworks:
Express: 4.22.3 → 5.2.1 (1 behind)
TypeScript: 5.9.3 → 7.0.2 (2 behind)
Vitest: 1.6.1 → 5.0.3 (4 behind)
Dependencies:
7 current 4 1-behind 4 2+ behind 4 unknown
 
── @repo/web (node) apps/web
Frameworks:
Next.js: 14.2.35 → 16.4.0 (2 behind)
React: 18.3.1 → 19.3.0 (1 behind)
React DOM: 18.3.1 → 19.3.0 (1 behind)
TypeScript: 5.9.3 → 7.0.2 (2 behind)
Dependencies:
2 current 6 1-behind 3 2+ behind 5 unknown
 
── @repo/config (node) packages/config
Frameworks:
TypeScript: 5.9.3 → 7.0.2 (2 behind)
Dependencies:
2 current 2 1-behind 5 2+ behind 0 unknown
 
── @repo/database (node) packages/database
Frameworks:
Prisma: 5.22.0 → 7.10.0 (2 behind)
TypeScript: 5.9.3 → 7.0.2 (2 behind)
Dependencies:
1 current 0 1-behind 3 2+ behind 1 unknown
 
── @repo/types (node) packages/types
Frameworks:
TypeScript: 5.9.3 → 7.0.2 (2 behind)
Dependencies:
0 current 0 1-behind 1 2+ behind 1 unknown
 
── @repo/ui (node) packages/ui
Frameworks:
React: 18.3.1 → 19.3.0 (1 behind)
TypeScript: 5.9.3 → 7.0.2 (2 behind)
React: 18.3.1 → 19.3.0 (1 behind)
Dependencies:
1 current 4 1-behind 1 2+ behind 1 unknown
 
── @repo/utils (node) packages/utils
Frameworks:
TypeScript: 5.9.3 → 7.0.2 (2 behind)
Vitest: 1.6.1 → 5.0.3 (4 behind)
Dependencies:
0 current 1 1-behind 2 2+ behind 1 unknown
 
Tech Stack
Frontend: React, React DOM
Meta-frameworks: Next.js
Bundlers: tsx, Turbo, Vite
CSS / UI: Autoprefixer, PostCSS, Tailwind CSS
Backend: Express
ORM / Database: Prisma, Prisma Client
Testing: Vitest
Lint & Format: ESLint, ESLint Prettier, ESLint React, Prettier, typescript-eslint
 
Services & Integrations
Auth: JWT 9.0.3
Databases: Prisma 5.22.0
 
TypeScript
v5.3.3 · strict ✔ · MIXED · target: ES2022
 
Build & Deploy
Package Managers: pnpm
Monorepo: npm-workspaces, pnpm-workspaces, turbo
 
Product Purpose Signals
Frameworks: react, nextjs
Evidence: 177
Top Signals:
- [heading] Dashboard (apps/admin/src/pages/Dashboard.tsx)
- [title] Revenue Overview (apps/admin/src/pages/Dashboard.tsx)
- [copy] workspace:* (packages/ui/package.json)
- [copy] ./dist (packages/ui/tsconfig.json)
- [copy] ./src/index.ts (packages/ui/package.json)
- [copy] @repo/config/tsconfig-base.json (packages/ui/tsconfig.json)
- [copy] @repo/ui (packages/ui/package.json)
- [copy] #3b82f6 (apps/admin/src/pages/Dashboard.tsx)
Unknowns:
- No pricing or billing evidence found.
- No integrations/connectors evidence found.
- No route structure evidence found.
 
Security Posture
Lockfile ✖ · .env ✔ · node_modules ✔
 
Platform
Native modules: turbo
 
Code Quality
Files: 36 · Functions: 183 · Avg complexity: 2.62 · Avg length: 21.13 lines
Max nesting: 2 · Circular deps: 0 · Dead code: 0%
God files: apps/admin/src/pages/Products (448 lines)
 
Database Schema
postgresql · 8 models · 1 enum
Models: Address, CartItem, Category, Order, OrderItem (+3 more)
 
Findings (16 errors, 11 warnings)
✖ Node.js runtime ">=18.0.0" reached end-of-life on 2025-04-30 (latest: 24.0.0).
vibgrate/runtime-eol in .
⚠ TypeScript is 2 major versions behind (current: 5.9.3, latest: 7.0.2).
vibgrate/framework-major-lag in .
✖ 60% of dependencies are 2+ major versions behind in node-turborepo.
vibgrate/dependency-rot in .
✖ @types/node is 6 major versions behind (spec: ^20.11.0, latest: 26.6.4).
vibgrate/dependency-major-lag in .
⚠ TypeScript is 2 major versions behind (current: 5.9.3, latest: 7.0.2).
vibgrate/framework-major-lag in apps/admin
✖ Vite is 3 major versions behind (current: 5.4.21, latest: 8.3.3).
vibgrate/framework-major-lag in apps/admin
✖ vite is 3 major versions behind (spec: ^5.0.12, latest: 8.3.3).
vibgrate/dependency-major-lag in apps/admin
⚠ TypeScript is 2 major versions behind (current: 5.9.3, latest: 7.0.2).
vibgrate/framework-major-lag in apps/api
✖ Vitest is 4 major versions behind (current: 1.6.1, latest: 5.0.3).
vibgrate/framework-major-lag in apps/api
✖ @types/node is 6 major versions behind (spec: ^20.11.0, latest: 26.6.4).
vibgrate/dependency-major-lag in apps/api
✖ vitest is 4 major versions behind (spec: ^1.2.1, latest: 5.0.3).
vibgrate/dependency-major-lag in apps/api
⚠ Next.js is 2 major versions behind (current: 14.2.35, latest: 16.4.0).
vibgrate/framework-major-lag in apps/web
⚠ TypeScript is 2 major versions behind (current: 5.9.3, latest: 7.0.2).
vibgrate/framework-major-lag in apps/web
✖ @types/node is 6 major versions behind (spec: ^20.11.0, latest: 26.6.4).
vibgrate/dependency-major-lag in apps/web
⚠ TypeScript is 2 major versions behind (current: 5.9.3, latest: 7.0.2).
vibgrate/framework-major-lag in packages/config
✖ 56% of dependencies are 2+ major versions behind in @repo/config.
vibgrate/dependency-rot in packages/config
✖ eslint-plugin-react-hooks is 3 major versions behind (spec: ^4.6.0, latest: 7.1.1).
vibgrate/dependency-major-lag in packages/config
⚠ Prisma is 2 major versions behind (current: 5.22.0, latest: 7.10.0).
vibgrate/framework-major-lag in packages/database
⚠ TypeScript is 2 major versions behind (current: 5.9.3, latest: 7.0.2).
vibgrate/framework-major-lag in packages/database
✖ 75% of dependencies are 2+ major versions behind in @repo/database.
vibgrate/dependency-rot in packages/database
⚠ TypeScript is 2 major versions behind (current: 5.9.3, latest: 7.0.2).
vibgrate/framework-major-lag in packages/types
✖ 100% of dependencies are 2+ major versions behind in @repo/types.
vibgrate/dependency-rot in packages/types
⚠ TypeScript is 2 major versions behind (current: 5.9.3, latest: 7.0.2).
vibgrate/framework-major-lag in packages/ui
⚠ TypeScript is 2 major versions behind (current: 5.9.3, latest: 7.0.2).
vibgrate/framework-major-lag in packages/utils
✖ Vitest is 4 major versions behind (current: 1.6.1, latest: 5.0.3).
vibgrate/framework-major-lag in packages/utils
✖ 67% of dependencies are 2+ major versions behind in @repo/utils.
vibgrate/dependency-rot in packages/utils
✖ vitest is 4 major versions behind (spec: ^1.2.1, latest: 5.0.3).
vibgrate/dependency-major-lag in packages/utils
 
╭──────────────────────────────────────────╮
│ Top Priority Actions │
╰──────────────────────────────────────────╯
 
1. Upgrade EOL runtime in node-turborepo
End-of-life runtimes no longer receive security patches and block ecosystem upgrades.
./.
>=18.0.0 → 24.0.0 (6 majors behind)
Impact: −10 drift points (runtime & EOL)
 
2. Fix security posture: no lockfile found
Without a lockfile, installs are non-deterministic. Run the install command to generate one and commit it.
./
Missing: package-lock.json, pnpm-lock.yaml, or yarn.lock
 
3. Upgrade Vitest 1.6.1 → 5.0.3 in @repo/api (+2 more)
4 major versions behind. Major framework drift increases breaking change risk and blocks access to security fixes and performance improvements.
./apps/api
Vitest: 1.6.1 → 5.0.3 (4 majors behind)
./packages/utils
Vitest: 1.6.1 → 5.0.3 (4 majors behind)
./apps/admin
Vite: 5.4.21 → 8.3.3 (3 majors behind)
Impact: −5–15 drift points
 
4. Reduce dependency rot in @repo/types (100% severely outdated)
1 of 1 dependencies are 2+ majors behind. Run `npm outdated` and prioritise packages with known CVEs or breaking API changes.
./packages/types
typescript: 5.9.3 → 7.0.2 (2 majors behind)
Impact: −5–10 drift points
 
5. Reduce dependency rot in @repo/database (75% severely outdated)
3 of 4 dependencies are 2+ majors behind. Run `npm outdated` and prioritise packages with known CVEs or breaking API changes.
./packages/database
@prisma/client: 5.22.0 → 7.10.0 (2 majors behind)
prisma: 5.22.0 → 7.10.0 (2 majors behind)
typescript: 5.9.3 → 7.0.2 (2 majors behind)
Impact: −5–10 drift points
 
╭──────────────────────────────────────────╮
│ Architecture Layers │
╰──────────────────────────────────────────╯
 
Archetype: nextjs (80% confidence)
Files classified: 24 (11 unclassified)
Folders classified: 8
apps/admin/src presentation 100% 4 files
apps/admin/src/pages presentation 100% 2 files
apps/api/src/middleware middleware 100% 2 files
apps/api/src/routes routing 100% 2 files
apps/web/src/app presentation 100% 4 files
apps/web/src/app/products presentation 100% 2 files
apps/web/src/app/products/[id] presentation 100% 1 file
packages/ui/src presentation 100% 6 files
Unclassified source (sample): 11
 
presentation 15 files drift ████████████████████ 100 risk high
routing 4 files drift ████████████████████ 100 risk high
middleware 2 files drift ███████▍░░░░░░░░░░░░ 37 risk moderate
config 2 files drift ░░░░░░░░░░░░░░░░░░░░ 0 risk none
shared 1 file drift ████████████████████ 100 risk high
 
╭──────────────────────────────────────────╮
│ DriftScore Summary │
╰──────────────────────────────────────────╯
 
DriftScore: 70/100
Risk Level: HIGH
Projects: 9
Classified: 8 nano · 1 micro · 0 small · 0 standard
Billable: 0.42 · 9 detected → 0.42 billable projects (micro-project pricing)
0.1 micro · 0.32 nano
These fractions add up across repositories, then round down to whole billable projects.
 
Score Breakdown
Runtime: ████████████████████ 100
Frameworks: ███████████▊░░░░░░░░ 59
Dependencies: ██████▌░░░░░░░░░░░░░ 33
EOL Risk: ████████████████████ 100
 
Scanned at 2026-10-07T12:34:03.236Z · 6.6s · 286 files scanned · 56 workspace files · 27 dirs
❯
Press Run to start.