Find the latest version of any command, package, or library. Scans project files automatically.
# Install
cargo install --path .
# Scan current project
cd my-rust-project
latest
# Scanning Cargo.toml...
# tokio: 1.48.0 ✓
# serde: 1.0.228 ✓
# Check specific packages
latest node go rust- 17 sources: System (path, brew, apt), Python (uv, pip, conda), JavaScript (npm), Rust (cargo), Go (go), Ruby (gem), Elixir (hex), Dart (pub), PHP (composer), JVM (maven), Docker (docker), .NET (nuget), Swift (swift)
- Project scanning: Auto-detects Cargo.toml, package.json, uv.lock, pyproject.toml, go.mod
- Ecosystem-aware: Compares versions within the same ecosystem (won't flag npm's
goas newer than Go the language) - Context-aware install hints: Suggests
cargo addin a Cargo project,npm install(not-g) in a Node project - Multiple output formats: Human-readable, JSON, quiet mode
latest # Scan project files in current directory
latest <package> # Check specific package(s)
latest npm:express # Query specific source with prefix
latest --all node # Show all sources
latest -s cargo serde # Query specific source (alternative syntax)
latest --json # JSON output for scripting
latest -q node # Quiet: just version number
| Output | Meaning |
|---|---|
pip: 0.6.0 (installed) |
Up to date, shows source |
npm: 24.0.0 → 25.2.1 available |
Outdated |
not installed (available: ...) |
Not installed, with install hints |
not found |
Package doesn't exist in any source |
⚠ Also found in: brew, npm |
Package exists in multiple ecosystems |
| Code | Meaning |
|---|---|
| 0 | All packages up to date |
| 1 | Package not found or not installed |
| 2 | Package outdated |
| Source | Type | Ecosystem | Description |
|---|---|---|---|
| path | local | System | Commands in $PATH |
| brew | registry | System | Homebrew packages |
| apt | registry | System | APT packages (Debian/Ubuntu) |
| npm | registry | Npm | npm registry |
| uv | local | Python | uv project-local packages |
| pip | local | Python | Locally installed pip packages |
| conda | registry | Python | Conda packages |
| go | registry | Go | Go module proxy |
| cargo | registry | Cargo | crates.io |
| gem | registry | Ruby | RubyGems |
| hex | registry | Beam | Hex.pm (Elixir/Erlang) |
| pub | registry | Dart | pub.dev |
| composer | registry | Php | Packagist (PHP) |
| maven | registry | Jvm | Maven Central |
| docker | registry | Container | Docker Hub |
| nuget | registry | Dotnet | NuGet (.NET) |
| swift | registry | Swift | Swift Package Index |
When run without arguments, latest scans for project files in this order:
| File | Source | Language |
|---|---|---|
Cargo.toml |
cargo | Rust |
package.json |
npm | Node.js |
uv.lock |
pip | Python (uv) |
pyproject.toml |
pip | Python |
go.mod |
go | Go |
Create ~/.config/latest/config.toml to customize source precedence:
precedence = ["path", "brew", "apt", "npm", "uv", "pip", "conda", "go", "cargo", "gem", "hex", "pub", "composer", "maven", "docker", "nuget", "swift"]# Check if project dependencies are current
latest
# Check a package (shows source and cross-ecosystem warnings)
latest latest
# pip: 0.6.0 (installed)
# ⚠ Also found in: brew, npm, cargo, gem
# Query a specific ecosystem with prefix syntax
latest npm:latest
# npm: 0.2.0
# JSON output for scripting
latest --json | jq '.[] | select(.status != "up_to_date")'
# Check all sources for a package
latest --all node
# path: 25.2.1 (installed)
# brew: 25.2.1
# npm: 24.12.0
# Quiet mode for scripts (version only, no source prefix)
latest -q -s npm express
# 5.2.1cargo build # Build
cargo test # Run tests
cargo run -- node # Run directly
cargo bench # Run benchmarksBenchmarks use Criterion for statistical analysis. Results and HTML reports are saved to target/criterion/.
cargo bench # Run all benchmarks
cargo bench -- version_comparison # Run specific groupProperty tests use proptest for randomized input generation (works on stable Rust):
cargo test proptests # Run with default 256 cases
PROPTEST_CASES=10000 cargo test proptests # Run with more casesMIT