← Back to Blog

VersionOps 1.12.0 — Multi-Language Dependency Scanning: Python, Go and PHP

Track versions and scan for CVEs across Python (pip, poetry, uv), Go and PHP Composer projects — alongside npm, with the same import flows, CI/CD webhook and notifications you already use.

Overview

Release 1.12.0 brings multi-language dependency scanning — the biggest expansion of the Dependencies section since launch. Until today VersionOps tracked JavaScript dependencies only. Now Python (pip / poetry / uv), Go and PHP Composer projects get the same treatment: latest-version tracking, update recommendations, and CVE detection via the OSV database — through the exact same import flows, CI/CD webhook and notification rules you already use for npm.

No new plans, no new feature flags: if your plan includes Dependency Tracking, you have all four ecosystems today.

The Problem

Most teams don't run a single-language stack. A typical setup pairs a JavaScript frontend with a Python or Go backend and a few PHP services that never went away. Until now VersionOps could only watch the JavaScript half — the rest of your dependency surface was invisible: no outdated-version tracking, no CVE alerts, no audit trail.

How It Works

Supported Ecosystems

EcosystemFilesVersion SourceCVE Source
JavaScriptpackage.json, package-lock.json, yarn.locknpm registryOSV
Pythonrequirements.txt, poetry.lock, uv.lockPyPIOSV
Gogo.modGo module proxyOSV
PHPcomposer.lockPackagistOSV

Drop a File — We Detect the Rest

Importing a project is now a single drag-and-drop: drop a poetry.lock, go.mod, requirements.txt or composer.lock into the import dialog and VersionOps detects the ecosystem automatically — no language picker, no configuration. The Dependencies list shows an ecosystem badge per project, and a filter appears once you track more than one ecosystem.

For Python and PHP you can optionally attach the project manifest (pyproject.toml / composer.json) — VersionOps then distinguishes your direct dependencies from transitive ones, exactly like package.json does for npm projects.

Honest Handling of Version Ranges

requirements.txt often pins nothing: requests>=2.28 tells us a range, not a version. VersionOps resolves such ranges to the minimum matching version on the registry — the most conservative assumption — scans that, and marks the dependency with a warning badge so you know the result is inferred rather than exact. Upload a lockfile any time for exact results. If a range can't be resolved at all, the dependency stays in your inventory flagged as "version not checked" instead of silently disappearing.

CI/CD Webhook for Every Ecosystem

The /api/public/cicd/scan webhook now accepts lockfiles from all four ecosystems. package_json became optional — a Python service sends just its lockfile:

{
  "project_name": "billing-service",
  "lock_file_text": "<contents of poetry.lock>",
  "lock_file_name": "poetry.lock",
  "manifest_text": "<contents of pyproject.toml>",
  "manifest_name": "pyproject.toml",
  "commit_sha": "abc123"
}

Existing npm pipelines keep working unchanged, and the exit-code contract (0 — clean, 1 — critical CVEs, 2 — error) is the same for every language.

Notifications Included

Your existing dependency_vulnerability and dependency_outdated notification rules fire for the new ecosystems automatically — no reconfiguration. Findings from non-npm projects carry an ecosystem label so mixed-stack channels stay readable.

Getting Started

Step 1: Import a Project

Go to Dependencies → Import and drop any supported file. The ecosystem badge confirms what was detected.

Step 2 (optional): Attach the Manifest

For poetry / uv / Composer projects, attach pyproject.toml or composer.json when prompted to split direct vs transitive dependencies.

Step 3: Wire Up CI

Point your pipeline at the CI/CD webhook with a service token and send the lockfile on every build — your dependency inventory stays in sync with every commit.

Step 4: Check Your Alerts

Existing notification rules already cover the new ecosystems. Review severity thresholds under Settings → Notifications if you want per-project filters.

What's Next

1.12.0 is Stage 1 of our Security Platform initiative. Coming next:

  • Git integration — connect GitHub/GitLab repositories directly, rescan on every push
  • SAST — static analysis of your application code, not just dependencies
  • Automated update PRs — Renovate-style merge requests that bump vulnerable dependencies for you

Links

Ready to try VersionOps?

Start tracking software versions across your infrastructure today.

Start Free Trial