Skip to main content

Universal Dependency Resolver

PyPI version Python versions License CI

Your Python backend needs PyPI. Your React frontend needs npm. Your Rust CLI needs crates.io. Your Go service needs Go modules. One udr lock gives you one lock file for all of them.

# Resolve across ecosystems in one command
udr resolve flask>=2.0 torch@pypi react@^18

# Lock your project across all manifests
udr lock

# Check system + CVE + deprecated packages — 18 ecosystems at once
udr check --cve --deprecated

Install

pip install ud-resolver

# For full capacity — Rust-backed PubGrub + Z3 + richer system data:
pip install "ud-resolver[z3,pubgrub,system]"

The base install resolves dependencies, detects GPU/OS/CPU, and handles GPU variant selection — no extras needed. The extras add speed (Rust PubGrub on large graphs), conflict detection (Z3 for CUDA XOR rules), and richer telemetry (GPU temperature, per-process memory). All solvers fall back gracefully when an extra is missing.

Optional extras

Extra What it adds
[system] Richer system data via Python libs (pynvml → GPU temp/util, psutil → per-process memory, cpuinfo → detailed model). Base ud-resolver already detects GPU/OS/CPU via nvidia-smi/lspci/platform — no extra needed for constraint resolution.
[z3] Z3 SAT solver (46MB) for CUDA XOR conflict rules + cross-eco constraints. GPU version filtering works without Z3 (pre-filtered before solver).
[pubgrub] Rust-backed PubGrub solver (faster CDCL on 100+ package graphs). Falls back to pure-Python automatically if wheel unavailable / build fails.
[postgres] PostgreSQL support
[monitoring] OpenTelemetry, Sentry, Prometheus instrumentation
[all] Everything above

Features

Capability Detail
25 ecosystems (18 resolvable + 7 query-only) Resolvable: PyPI, Conda, npm, Crates.io, Maven, Go Modules, APT, APK, CocoaPods, Homebrew, NuGet, Packagist, RubyGems, Pub, Gradle, Swift, Hex, Haskell — Query-only (version info, manifest parsing, no SAT traversal): Nix, GNU Guix, Docker, Helm, Terraform, Vcpkg, Conan — Internal: Docs DB, Custom DB
SAT-solver resolution AutoSolver (default, profiles graph → Z3/PubGrub/Hybrid per workload) with per-ecosystem isolation, CUDA-aware conflict detection.
System-aware Detects OS, CPU, GPU, CUDA, Python, Node.js, GCC, Java — resolution adapts to your environment.
GPU-aware Automatically selects CUDA variants (e.g. torch 2.1.2+cu121) when NVIDIA GPU detected. Supports CUDA, ROCm, Intel GPU, and Metal. For PyPI torch, consults the pytorch wheel index and caps + rewrites to the matching +cu<ver> build (e.g. --cuda 12.1torch 2.5.1+cu121).
15 export formats requirements.txt, package.json, Dockerfile, docker-compose.yml, pyproject.toml, environment.yml, Cargo.toml, build.gradle, pom.xml, CMakeLists.txt, install.sh, install.bat, Gemfile, composer.json, go.mod
24 CLI commands serve, check, resolve, lock, graph, verify, list-ecosystems, update, install, init, migrate, completion, scan, why, outdated, diff, search, sbom, export, details, system-info, auth, index, tools
59 REST API endpoints Full programmatic API with auto-generated Swagger docs.
Desktop GUI Standalone Electron app — no Python or Node.js needed.
Zero config SQLite by default, in-memory cache, no Docker required.
Lock file Reproducible udr.lock with full system snapshot, integrity hashes, and dependency provenance.

Why UDR?

  • Cross-ecosystem resolution: A Python package that transitively depends on an npm package gets solved in one pass, not two.
  • SAT-solver engine: Real Z3/PubGrub CDCL solver, not greedy backtracking. Finds valid solutions dependency graph heuristics miss.
  • System-aware: GPU type + CUDA version are resolution constraints — torch 2.1.2+cu121 selected automatically when NVIDIA GPU detected; for PyPI torch the pytorch wheel index is consulted to cap and rewrite to the matching +cu<ver> build (e.g. --cuda 12.1torch 2.5.1+cu121).
  • Supply chain built-in: CVE scanning, license compliance, deprecation checks, lock-file signing (Ed25519), SBOM export (SPDX/CycloneDX), policy engine.
  • 3 solver backends: AutoSolver profiles your graph and selects Z3, PubGrub, or Hybrid — with fallback chain if the first choice fails.

Quick Start

# Resolve cross-ecosystem packages
udr resolve numpy pandas scikit-learn
udr resolve react vue -e npm
udr resolve serde tokio -e crates

# Lock a project's dependencies
udr lock
udr lock --manifest requirements.txt --dry-run

# Validate lock file
udr verify

# Show dependency tree
udr graph flask django

# Scan a GitHub repo without cloning
udr scan --github https://github.com/user/repo

# List all supported ecosystems
udr list-ecosystems

🐍 Use as a Python Library

import asyncio
from backend.core.data_aggregator import DataAggregator
from backend.core.system_scanner import SystemScanner
from backend.orchestrator.resolve import create_solver

async def main():
    scanner = SystemScanner()
    system_info = await scanner.scan_all()

    aggregator = DataAggregator()
    info = await aggregator.get_package_info(
        "torch", ecosystem="pypi",
        include_dependencies=True, include_versions=True,
    )

    resolver = create_solver()
    result = resolver.resolve_dependencies(
        packages=[{"name": "flask", "version": ">=2.0"}],
        system_info=system_info,
    )

asyncio.run(main())

🔄 How It Works

Your request ──► Fetch metadata from registry APIs
                      │
                      ▼
              Scan target system (OS, GPU, CUDA, runtimes)
                      │
                      ▼
               Resolve conflicts with AutoSolver (Z3 / PubGrub / Hybrid)
                      │
                      ▼
               Export to 15 formats or write lock file

Links

Release files for ud-resolver 1.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ud-resolver 1.4.1
File Size Uploaded
ud_resolver-1.4.1.tar.gz 432.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ud-resolver 1.4.1
File Interpreter ABI Platform
ud_resolver-1.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 942.5 kB

Release files / ud_resolver-1.4.1.tar.gz

Download URL ud_resolver-1.4.1.tar.gz
Size 432.4 kB
Tags Source
SHA-256 checksum
How to use checksums
e34d0686ae9df77f3149f8c2581e5e40f59143550f20d2fc12fdeb19393760eb
BLAKE2b-256 checksum
How to use checksums
b7326d3a81bf715ffd86ba9a8e6aa2d81a9adee78a9c7f5d8899e7a0a59fffd5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 6, 2026.

Transparency log

Release files / ud_resolver-1.4.1-py3-none-any.whl

Download URL ud_resolver-1.4.1-py3-none-any.whl
Size 510.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
84fd91af9d52f1a1608de1f5f832db13c5935e81aec0704c2a3765cbe08d14e3
BLAKE2b-256 checksum
How to use checksums
ccc6cc3d455ba4238f77c11f6a61fcd77030cdf7434a05b6f73f9209f6772978
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 6, 2026.

Transparency log

Release history Release notifications | RSS feed

1.4.3

2 release files

1.4.2

2 release files

This release

1.4.1 This release

2 release files

1.4.0

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.5

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.20

2 release files

1.1.19

2 release files

1.1.18

2 release files

1.1.17

2 release files

1.1.16

2 release files

1.1.15

2 release files

1.1.14

2 release files

1.1.13

2 release files

1.1.12

2 release files

1.1.11

2 release files

1.1.10

2 release files

1.1.9

2 release files

1.1.8

2 release files

1.1.7

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page