JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 21
  • Score
    100M100P100Q76023F
  • License MIT

A beautiful, zero-config visual CVE dashboard for npm, Python, Go, and Rust. Run 'npx osv-ui' to scan or 'npx osv-ui -d' to auto-discover services. Repo: https://github.com/toan203/osv-ui

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (osv-ui) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    osv-ui dashboard

    osv-ui

    A beautiful, zero-config visual CVE dashboard for npm, Python, Go, and Rust projects.
    One command. No signup. No API key. Runs 100% locally β€” your code never leaves your machine.

    npm version npm downloads License: MIT PRs Welcome Node.js

    πŸ‡»πŸ‡³ TiαΊΏng Việt Β· πŸ‡ΊπŸ‡Έ English Β· πŸ‡¨πŸ‡³ δΈ­ζ–‡ Β· πŸ‡―πŸ‡΅ ζ—₯本θͺž


    The problem

    $ npm audit
    
    # ... 300 lines of this ...
    # moderate  Regular Expression Denial of Service in semver
    # package   semver
    # patched in >=7.5.2
    # ...
    # 12 vulnerabilities (3 moderate, 6 high, 3 critical)

    Nobody reads that. Security gets ignored. Dependencies stay vulnerable.

    The solution

    npx osv-ui

    β†’ Opens a dashboard. Every CVE, every fix, all your services. Done.

    Why give it a try?

    • Zero-config: No complex setup, no signup, no API key required.
    • Privacy First: Analysis is done 100% on your machine.
    • Fast & Visual: Real-time Risk Scores, vulnerability charts, and clear upgrade guides in seconds.
    • Multi-platform: Native support for Node.js (npm), Python, Go, and Rust.

    Features

    🟨 npm + 🐍 Python + πŸ”΅ Go + πŸ¦€ Rust Scans package-lock.json, Pipfile.lock, poetry.lock, requirements.txt, go.sum, Cargo.lock
    πŸ“‘ Live CVE data Powered by OSV.dev β€” updated daily from NVD, GitHub Advisory, PyPI Advisory. No API key.
    🏒 Multi-service Scan your entire monorepo in one command β€” frontend, backend, workers, ML services
    πŸ’Š Fix guide Dependabot-style upgrade table: current version β†’ safe version + one-click copy command
    πŸ”Œ Built-in REST API Power your own security dashboards with GET /api/data or CLI export flags
    🎯 Risk score 0–100 per service so you know where to focus first
    πŸ” CVE drill-down Click any row β€” CVSS score, description, NVD link, GitHub Advisory link
    πŸŒ™ Dark Mode Eye-friendly security audits, day or night

    Quick start

    Scan current directory:

    npx osv-ui

    Scan a monorepo (multiple services at once):

    npx osv-ui ./frontend ./api ./worker ./ml-service

    Auto-discover all services under the current directory:

    npx osv-ui -d

    Add to your package.json scripts:

    {
      "scripts": {
        "audit:ui":  "npx osv-ui",
        "audit:all": "npx osv-ui ./frontend ./api ./worker"
      }
    }
    --discover, -d    Auto-find service dirs that contain a supported manifest
    --port=2003       Use a custom port (default: 2003)
    --json[=file]     Save report as JSON without opening browser (defaults to osv-report.json)
    --html[=file]     Save report as HTML without opening browser (defaults to osv-report.html)
    --no-open         Don't auto-open the browser
    --offline         Skip OSV.dev lookup β€” parse manifests only
    -h, --help        Show help message

    πŸ”Œ Powerful built-in API

    osv-ui isn't just a dashboard; it's a security data engine.
    Once the dashboard is running, you can pull the raw security data for your whole project:

    # Get full JSON payload for all services
    curl http://localhost:2003/api/data
    
    # Use it in your custom scripts
    curl -s http://localhost:2003/api/data | jq '.[0].vulns'

    Supported manifest files

    Ecosystem Files
    npm package-lock.json (lockfileVersion 1, 2, 3)
    Python requirements.txt Β· Pipfile.lock Β· poetry.lock Β· pyproject.toml
    Go go.sum
    Rust Cargo.lock

    More ecosystems coming β€” see Roadmap.


    How it works

    Your project files
        β”‚
        β”œβ”€ package-lock.json   ──┐
        β”œβ”€ Pipfile / poetry    ─────► parser ──► package list
        β”œβ”€ go.sum / Cargo.lock β”€β”€β”˜
                                        β”‚
                                        β–Ό
                                 OSV.dev batch API  (free, no key)
                                        β”‚
                                        β–Ό
                                 CVE matches + fix versions
                                        β”‚
                                        β–Ό
                             Express server β†’ browser dashboard
                                  http://localhost:2003

    CVE data comes from OSV.dev β€” a free, open database maintained by Google that aggregates:

    Updated daily. No account. No rate limit. No vendor lock-in.


    vs alternatives

    osv-ui npm audit Snyk Dependabot
    Visual dashboard βœ… ❌ terminal only βœ… βœ…
    npm support βœ… βœ… βœ… βœ…
    Python support βœ… ❌ βœ… βœ…
    Multi-service in one view βœ… ❌ βœ… paid βœ…
    No signup required βœ… βœ… ❌ ❌
    Works on GitLab Free βœ… βœ… ❌ ❌
    Self-hosted / local βœ… βœ… ❌ ❌
    Fix commands βœ… partial βœ… βœ…
    Open source βœ… βœ… ❌ ❌

    GitLab CI β€” block deploys on critical CVEs

    No Dependabot on GitLab Free? Add this to .gitlab-ci.yml:

    audit:
      stage: test
      image: node:20-alpine
      script:
        - npm audit --json > /tmp/audit.json || true
        - |
          node -e "
            const r = require('/tmp/audit.json');
            const crit = Object.values(r.vulnerabilities || {})
              .filter(v => v.severity === 'critical').length;
            if (crit > 0) {
              console.error('BLOCKED: ' + crit + ' critical CVE(s). Run: npx osv-ui');
              process.exit(1);
            }
            console.log('OK: no critical vulnerabilities');
          "
      artifacts:
        paths: [/tmp/audit.json]
        when: always

    Requirements

    • Node.js >= 16
    • Internet access for OSV.dev queries β€” or use --offline
    • npm projects: run npm install first so package-lock.json exists
    • Python projects: any of the supported manifest files listed above

    Roadmap

    All contributions are welcome. If you want to work on something, open an issue first so we can coordinate.

    • Go support β€” parse go.sum / go.mod
    • Rust support β€” parse Cargo.lock
    • Export report β€” save as HTML / JSON
    • Dark mode β€” eye-friendly dashboard UI
    • Java / Maven β€” parse pom.xml
    • GitHub Actions β€” post a CVE diff comment on PRs
    • SBOM export β€” CycloneDX / SPDX format
    • Watch mode β€” re-scan on manifest file changes
    • Slack / webhook β€” notify on new critical CVEs

    Contributing

    This project is built by the community. All skill levels welcome.

    Good first issues:

    • Add Java/Maven parser (pom.xml) β€” follow the pattern in src/parsers.js
    • Write unit tests for the parsers
    • Improve Python parser edge cases
    # Clone and run locally
    git clone https://github.com/toan203/osv-ui
    cd osv-ui
    npm install
    
    # Run against your own project
    node bin/cli.js /path/to/your/project
    
    # Run against multiple services
    node bin/cli.js ./frontend ./backend

    Please read CONTRIBUTING.md for code style and PR process.


    License

    MIT β€” use it, fork it, embed it, build on it. Attribution appreciated but not required.


    Did osv-ui catch a real CVE in your project?
    A ⭐ helps other developers find this tool.

    Sponsor this project

    Share on Twitter Β· Post on Reddit