Skip to main content

dependency-check-updates

CI Codecov deps.rs License: MIT

crates.io npm PyPI Rust 1.85+ Python 3.11+ Node

crates.io downloads npm downloads PyPI downloads

GitHub stars GitHub forks GitHub issues GitHub PRs Last commit Contributors

Dependency Check & Update — a fast, multi-ecosystem dependency updater written in Rust.

Like npm-check-updates, but for every language.

$ dcu
Checking Cargo.toml
 toml_edit  0.22  ->  0.25.4

Checking .github/workflows/CI.yml
 actions/checkout    v4  ->  v5
 actions/setup-node  v4  ->  v5

Checking Dockerfile
 node  20-alpine  ->  22-alpine

Run dcu -u to upgrade

dcu is a short alias installed alongside dependency-check-updates. Both commands are identical — use whichever you prefer.

Quick Start (Zero Install)

No install needed — run straight from your package manager's ephemeral runner:

# Node.js ecosystem
bunx @dependency-check-updates/cli
npx  @dependency-check-updates/cli

# Python ecosystem
uvx dependency-check-updates
pipx run dependency-check-updates

All four accept the same flags described in Usage.

Features

  • Multi-ecosystempackage.json, Cargo.toml, pyproject.toml, .github/workflows/*.yml, Dockerfile, and compose.yaml all handled by a single binary
  • Format-preserving — surgical byte-range patching for JSON / YAML / Dockerfiles; toml_edit for TOML. Your indentation, comments, trailing newlines, and key ordering stay intact
  • Fast — concurrent registry lookups across all manifests via futures::join_all
  • Smart range checking — skips false positives where the resolved version already satisfies the current range (^3 already covers 3.5.1)
  • Deep scan-d recursively finds manifests in monorepos, respecting .gitignore
  • ncu-compatible UX — the same flags you already know from npm-check-updates
  • Short alias — type dcu instead of dependency-check-updates; both are installed by every distribution
  • CI-friendly-e 2 exits non-zero when updates exist; --format json emits machine-readable output

Supported Ecosystems

Ecosystem Manifest Registry Package
Node.js package.json npm @dependency-check-updates/cli
Rust Cargo.toml crates.io dependency-check-updates
Python pyproject.toml PyPI dependency-check-updates
GitHub Actions .github/workflows/*.yml, action.yml GitHub Tags API (built-in)
Containers Dockerfile, compose.yaml OCI Distribution (Docker Hub, ghcr.io, quay.io, …) (built-in)

GitHub Actions specifics

  • Discovers every *.yml / *.yaml under .github/workflows/ and any action.yml / action.yaml at the repo root automatically. Composite actions nested under .github/actions/**/ are picked up with -d.
  • Scans uses: owner/repo@ref directives. Refs without version digits — @main, @master, branch names, and full commit SHAs — are left untouched on purpose; they pin a moving target intentionally.
  • Tag prefix is preserved: @v5 updates to @v6 (major float), @v5.1.0 updates to @v6.0.0 (full precision). Bare semver without the v (@1.2.3, @5) is recognised and tracked the same way.
  • Duplicate rows are collapsed in the output — if actions/checkout@v5 appears in 12 jobs, you see one row, not twelve. The patch engine still updates every occurrence in the file.
  • Rate limit: unauthenticated runs use GitHub's 60 req/hr ceiling. Hitting it produces an explicit error pointing to the fix — set GITHUB_TOKEN (or GH_TOKEN) in your environment to raise the limit to 5 000 req/hr.
  • Tag fetch is bounded to the first 100 tags per action (newest-first). This comfortably covers every mainstream action; deliberately not paginating keeps API consumption predictable so deep scans don't spike into the rate-limit ceiling.

Container image specifics

Scans Dockerfile FROM instructions and the image: key of Compose services. Workflow job container: / services: images are picked up too — a single .github/workflows/CI.yml can have its uses: refs resolved against GitHub and its image: pins against a container registry in the same run.

Build variants are never crossed. A container tag is a version plus a variant, and bumping node:20-alpine to node:22 would silently swap Alpine for Debian. Candidate tags are grouped by the verbatim suffix after the leading numeric run, and only tags in the same group are ever considered:

node:20-alpine      →  node:22-alpine       (not node:22)
python:3.12-slim    →  python:3.13-slim
postgres:16.0       →  postgres:16.15       (-t minor)

Your pin precision is preserved as long as a real tag backs it: node:20 becomes node:22, not node:22.3.0. If the registry never published the shorter form, the tag is escalated to the shortest one that actually exists, so the emitted tag always pulls.

Registries. Any OCI Distribution registry works from the same code path — Docker Hub, ghcr.io, quay.io, mcr.microsoft.com, public.ecr.aws, or a self-hosted localhost:5000 (plain HTTP for localhost / 127.0.0.1, HTTPS otherwise). Public images authenticate through the registry's anonymous Bearer-token exchange automatically; private repositories are reported as an error rather than guessed at.

Left untouched on purpose — each of these means you opted out of tag tracking:

Pin Why it is skipped
FROM node · image: redis No tag: an implicit latest, a moving target
:latest · :bookworm · :stable Not a version
node:20@sha256:… The digest decides what is pulled; moving the tag alone changes nothing
node:${NODE_VERSION} · app:${TAG} The real value lives in a build arg or .env
FROM builder A multi-stage build stage, not an image
app:1a2b3c4 A build hash, same heuristic that skips commit SHAs in workflows

Discovery covers Dockerfile, Dockerfile.<suffix>, <prefix>.Dockerfile, compose.y(a)ml, and docker-compose.y(a)ml including profile variants (docker-compose.override.yml). Plain dcu probes the canonical names at the root; -d finds the rest anywhere in the tree.

-t newest falls back to greatest: the OCI tag list carries no publish dates, and recovering them would cost one manifest fetch per tag.

Installation

Every distribution below ships the exact same binary. Pick whichever matches your toolchain.

Rust (Cargo)

cargo install dependency-check-updates

Installs commands: dependency-check-updates and dcu (short alias).

Node.js (npm / bun / pnpm / yarn)

Permanent global install:

npm  install   -g @dependency-check-updates/cli
bun  add       -g @dependency-check-updates/cli
pnpm add       -g @dependency-check-updates/cli
yarn global add   @dependency-check-updates/cli

Installs commands: dependency-check-updates and dcu (short alias).

One-off execution (no install):

bunx @dependency-check-updates/cli [flags]
npx  @dependency-check-updates/cli [flags]

Python (pip / uv / pipx)

Permanent isolated install:

pipx install dependency-check-updates
uv tool install dependency-check-updates

Install inside a virtualenv:

pip    install dependency-check-updates
uv pip install dependency-check-updates

Installs commands: dependency-check-updates and dcu (short alias).

One-off execution (no install):

uvx dependency-check-updates [flags]
pipx run dependency-check-updates [flags]

Usage

Run from a directory containing at least one of package.json, Cargo.toml, pyproject.toml, .github/workflows/*.yml, Dockerfile, or compose.yaml. Every supported manifest in the current directory is auto-detected.

All examples below use the short dcu alias. The long form dependency-check-updates works identically.

Basic

# Check for outdated dependencies (read-only, nothing is written)
dcu

# Apply updates in place (format-preserving)
dcu -u

# Recursively scan subdirectories (monorepo-friendly, respects .gitignore)
dcu -d
dcu -d -u

All Options

Usage: dcu [OPTIONS] [FILTER]...
Flag Description Default
[FILTER]... Positional package names to include (allowlist; repeatable) (all)
-u, --upgrade Write updated versions back to the manifest file off
-d, --deep Recursively scan subdirectories, respecting .gitignore off
-t, --target <LEVEL> Version target: patch · minor · latest · newest · greatest latest
-x, --reject <PATTERN> Exclude packages by name (repeatable)
--manifest <PATH> Operate on a single specific manifest file (auto)
--format <FORMAT> Output format: table or json table
--remove-lockfile Delete lockfiles next to each manifest so the package manager re-resolves transitive deps on the next install off
--remove-installed Delete installed-dependency directories next to each manifest for a clean install off
--rm Shortcut for --remove-lockfile --remove-installed — wipes both in one go off
-e, --error-level <N> 1 = always exit 0 · 2 = exit 1 when updates exist (CI gate) 1
-v, --verbose Increase verbosity: -v info · -vv debug · -vvv trace off
-h, --help Print help
-V, --version Print version

-t, --target values

Value Behavior
patch Only patch bumps (e.g., 1.0.1 → 1.0.2)
minor Patch + minor bumps (e.g., 1.0.0 → 1.1.0)
latest Latest stable version; prereleases are skipped (default)
newest Most recently published version by publish date (npm time, crates.io created_at, PyPI upload time). For GitHub Actions this falls back to greatest — the Tags API exposes no per-tag dates.
greatest Highest version number, including prereleases

All five targets apply to every ecosystem, including Python (pyproject.toml / PyPI), which resolves PEP 440 versions from the full release list.

Examples

# Target specific update level
dcu -t patch           # patch only
dcu -t minor           # minor + patch
dcu -t latest          # default: latest stable
dcu -t greatest        # include prereleases

# Filter packages — positional args act as an include-list
dcu react eslint       # only check react and eslint
dcu -x typescript      # exclude typescript
dcu -x typescript -x lodash

# Filter GitHub Actions by owner — same filter syntax works across ecosystems
dcu actions            # only actions/checkout, actions/setup-node, …

# Operate on a specific manifest
dcu --manifest path/to/Cargo.toml
dcu --manifest apps/web/package.json
dcu --manifest .github/workflows/CI.yml
dcu --manifest services/api/Dockerfile
dcu --manifest docker-compose.override.yml

# Machine-readable output for scripting/CI
dcu --format json

# CI gate: exit 1 if any updates are available
dcu -e 2

# Verbose logging (accumulating)
dcu -v    # info
dcu -vv   # debug
dcu -vvv  # trace

# Combining flags — recursive, patch-only upgrade in a monorepo
dcu -d -u -t patch

# Force a full transitive refresh: bump manifests, wipe lockfiles, wipe
# installed copies. The next `bun install` / `cargo build` / `uv sync`
# rebuilds the dep tree from scratch and picks up the latest dep-of-dep.
dcu -u --rm                                      # shortcut for both removals
dcu -d -u --rm                                   # same, monorepo-wide
dcu -u --remove-lockfile                         # lockfiles only, keep installed
dcu -u --remove-installed                        # installed only, keep lockfiles

# Files / directories removed (per manifest discovered):
#   package.json   → bun.lock, bun.lockb, package-lock.json, pnpm-lock.yaml,
#                    yarn.lock, node_modules/
#   Cargo.toml     → Cargo.lock, target/
#   pyproject.toml → uv.lock, poetry.lock, Pipfile.lock, .venv/, venv/,
#                    __pypackages__/, .tox/, .nox/

# GitHub Actions: pin a higher rate limit by exporting a token
GITHUB_TOKEN=ghp_xxx dcu -d -u

Zero-Install Examples

Every example above works identically via the ephemeral runners, too:

bunx @dependency-check-updates/cli                  # check
bunx @dependency-check-updates/cli -u               # apply updates
bunx @dependency-check-updates/cli -d -t minor      # deep scan, minor bumps
bunx @dependency-check-updates/cli react eslint     # filter
npx  @dependency-check-updates/cli --format json

uvx dependency-check-updates
uvx dependency-check-updates -d -u -t patch
pipx run dependency-check-updates --format json

Architecture

Follows the changepacks pattern — one crate per language ecosystem, with bridge crates for cross-language distribution:

.
├── crates/
│   ├── cli/           # Binary + async CLI orchestration (installs `dcu` + `dependency-check-updates`)
│   ├── core/          # Shared traits (ManifestHandler, RegistryClient, Scanner)
│   ├── node/          # Node.js: package.json parser + npm registry
│   ├── rust/          # Rust: Cargo.toml parser (toml_edit) + crates.io
│   ├── python/        # Python: pyproject.toml parser (toml_edit) + PyPI
│   ├── github/        # GitHub Actions: workflow YAML parser + GitHub Tags API
│   └── docker/        # Containers: Dockerfile / Compose scanners + OCI registry
├── bridge/
│   ├── node/          # napi-rs N-API binding → npm: @dependency-check-updates/cli
│   └── python/        # maturin bin binding → PyPI: dependency-check-updates
├── Cargo.toml         # Workspace root
└── package.json       # Bun workspace (build/lint/test scripts)

Format Preservation

  • JSON (package.json): Surgical byte-range replacement — finds exact byte offsets of version values and replaces only those bytes. Indent, line endings, trailing newline, and key ordering are preserved byte-for-byte.
  • TOML (Cargo.toml, pyproject.toml): toml_edit document model preserves comments, table ordering, inline-table formatting, and whitespace.
  • YAML (.github/workflows/*.yml, action.yml, compose.yaml): Line-based uses: / image: scanning with byte-range replacement of only the @ref or :tag portion. Anchors, comments, blank lines, quoting style, and unrelated @main / :latest / digest pins are never touched.
  • Dockerfile: Line-based FROM scanning with byte-range replacement of only the tag. --platform flags, AS <stage> tails, and the # syntax= directive survive byte-for-byte.

Shared Traits

Each ecosystem crate implements two core traits from dependency-check-updates-core:

  • ManifestHandler — parse manifests, collect dependencies, apply format-preserving updates
  • RegistryClient — resolve versions from package registries with concurrency control

Range Satisfaction

Before reporting an update, the resolver checks whether the selected version already satisfies the current range (e.g., ^3 already covers 3.5.1). This eliminates the false positives that plague naive string comparison.

Development

Build prerequisites:

  • Rust 1.85+ (stable toolchain)
  • Bun 1.0+ (or Node.js 18+ with npm)
  • Python 3.11+ with maturin (only for the Python wheel step)
  • Windows: Visual Studio 2022 Build Tools (MSVC linker)
# First-time setup: install JS toolchain deps (@napi-rs/cli, etc.)
bun install

# Build everything (native CLI + napi .node + maturin wheel)
bun run build

# Dev build (faster, unoptimized)
bun run build:dev

# Lint (cargo clippy + rustfmt + bun workspace lints)
bun run lint
bun run lint:fix

# Test (cargo test --workspace + bun workspace tests)
bun run test

# Run CLI from source
bun run run -- --help
bun run run -- --manifest Cargo.toml -v
bun run run:release -- -d

Inspirations

  • npm-check-updates — the original ncu that inspired this tool's UX and flag design
  • changepacks — the workspace architecture pattern (crates/* + bridge/*), multi-language bridge distribution via napi-rs and maturin, and the overall project structure

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dependency_check_updates-0.2.0-py3-none-win_amd64.whl (6.7 MB view details)

Uploaded Python 3Windows x86-64

dependency_check_updates-0.2.0-py3-none-win32.whl (5.7 MB view details)

Uploaded Python 3Windows x86

dependency_check_updates-0.2.0-py3-none-musllinux_1_2_x86_64.whl (7.3 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

dependency_check_updates-0.2.0-py3-none-musllinux_1_2_i686.whl (7.0 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

dependency_check_updates-0.2.0-py3-none-musllinux_1_2_armv7l.whl (6.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

dependency_check_updates-0.2.0-py3-none-musllinux_1_2_aarch64.whl (6.8 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

dependency_check_updates-0.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

dependency_check_updates-0.2.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (8.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

dependency_check_updates-0.2.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (7.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

dependency_check_updates-0.2.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (6.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

dependency_check_updates-0.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (6.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

dependency_check_updates-0.2.0-py3-none-macosx_11_0_arm64.whl (6.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

dependency_check_updates-0.2.0-py3-none-macosx_10_12_x86_64.whl (6.9 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file dependency_check_updates-0.2.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.2.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a6ee27e4d5bb8e0efd04ada9bbca188d1f1230cb84a94c5d38aa084e75578156
MD5 f430ed5d9d1fa923cbbadae66e38ed7d
BLAKE2b-256 76a331307680fe4d2d5f25f04da5e64b3b429523dc026007440979ecae0c6ec6

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.2.0-py3-none-win32.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.2.0-py3-none-win32.whl
Algorithm Hash digest
SHA256 aa19055000c87b7d117c8358292f3bd0fbef721237b1aabe6dc7b45bec9e6735
MD5 7a17be82112805514de6cfae8d152917
BLAKE2b-256 cf96fe6352e67ea2dee2cda9e2a1eee35bf2d01977bd48c7f7e3d8c897d49859

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.2.0-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.2.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 559d2c95a28b9d7171fc57d740d61ca69786318a3c358f39dc104b30bc7daa09
MD5 5e6e222f1a7d1b7913a9a2ed4e7c3186
BLAKE2b-256 f0dcd901e9fef2084d9896261f6065f57badc48aef9479777ff4a16b65d6c644

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.2.0-py3-none-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.2.0-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c4e4f5f05c7bb652fee35674d78d9e942e84c69fd09057f258505e00ec618636
MD5 ab58ae93765620604aa1fed333be706d
BLAKE2b-256 9968eb3b83d255ebc660434bc6dc3d57173c106d989b358f419fda62af3ddd77

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.2.0-py3-none-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.2.0-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 d1653bb232e645669903bf42cafadb1b8f072ef726751113732c0bbd570df6a1
MD5 e4db0f846d871aa90765406dfae4563d
BLAKE2b-256 cdc94d731dabafa1f69ec8d54d1e8b0dde802b613a085966aee6ec66719e0b8c

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.2.0-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.2.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bf85f03a45bec5375e3b186f24708aca60a7e658b0682d51b9e4a9cd0674bd43
MD5 731825a0139a2de0ff33d2cbe4468347
BLAKE2b-256 6ffe31cc22de76ea0a437cb003e9a1d3acff92e43523b34ca1b4fd973358e684

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3fa81f615cedbb321c9e671e41e6e0c075f9c32ab9e500e942716556ad03e8b1
MD5 145e70894422147b6cf7bc92087b13a7
BLAKE2b-256 1b17c45f01a12c0df05df888094fddc74dbc77ced7c6303ecce77eb0410bfb4a

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.2.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.2.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 f2ee84e90651a07b644ec8f3c4bd169dbf13a8cde71b8574210815dc53111a89
MD5 ece80f03c21c0d982619222b7f1e00e6
BLAKE2b-256 c59a82a71de9109d88dc7f4a6390a33c3fccdbfeae1c7edee3f6ad50ffcb4e20

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.2.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.2.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ed57a63c6022017fe62056d6bff0b885f59a59399f0c9d8d497a0a05c83f71b6
MD5 c40e19df6f6465417f5a359120ef276c
BLAKE2b-256 ec9d1174b42ec2d95b9ac595605ec00bac2700bb1c19e5e2857a715e1fea302c

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.2.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.2.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 72813711d721eef1d960a3f1a347a5c735a87c2f5d86a6ee6101d2fac97d8773
MD5 0d68e4d760bfef08c94207c7d18d8d4b
BLAKE2b-256 0674c55cd5c02b8fddccb89c02a844018ec618aca00b6c50fe6fa94bc2ce2c13

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 281f427da7a9bfd88eaa7507beaaff74a8069f5c1791cd5f63a90c63d41f1e25
MD5 d36300a5e1c8870fa1e2a14da37ed7bf
BLAKE2b-256 c326f5c037fd3de5de91b3bef931a8936afbaf6d9cd816e8d99ad3035d246547

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.2.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.2.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4496adf7aeea3ec58524f3d9ade3678b077e0c2786e451484869219bb2d89195
MD5 89490e08e9cd3b1810808dc103607481
BLAKE2b-256 604e1529397b54b3190bc6dc37af2ee274d4a5ad246f4c60c884a1207a308608

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.2.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.2.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1fdc7bd572a8bf6ca4e7569c836879377a99c23234f7ae4cc003ebfbe200bf43
MD5 75b4b04807631f1bf1ab67b6c797355a
BLAKE2b-256 d4cd95d8aa4c7cc51f11554f5647a1e605c0b6ee1ae385a7afdf60f6f04bb30f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.0 This release

13 files

0.1.15

13 files

0.1.14

13 files

0.1.13

13 files

0.1.12

13 files

0.1.10

13 files

0.1.5

13 files

0.1.4

13 files

0.1.3

13 files

0.1.2

13 files

0.1.1

13 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page