Shards

What Shards is
Shards is a free dependency manager for Crystal applications and libraries, running on Linux, macOS, and Windows. Projects describe metadata and dependencies in a shard.yml file at the repository root. Shards resolves dependencies from local paths and Git repositories, including GitHub, GitLab, Bitbucket, and Codeberg, with selections based on version requirements, tags, branches, or commits. Git-hosted libraries are expected to use semver-like tags beginning with v. The shards install command installs dependencies and records their versions in shard.lock, allowing later installations to reuse locked versions. Other documented commands include build, check, init, list, prune, update, and version. Build installs dependencies before passing options to crystal build. Development dependencies apply only to the project itself. A shard.override.yml file can replace sources or version restrictions. Shards has no central registry, is generally distributed with Crystal, and its public repository uses the Apache-2.0 license.
Who it suits
Shards suits Crystal developers maintaining applications or libraries with declared dependencies. It is useful when projects need dependency locking, Git-based sources, and reproducible installs across computers.
What it does well
- Free plan with no listed charge
- Runs on Linux, macOS, and Windows
- Supports Git and local dependency sources
- Lockfile records selected dependency versions
- Includes dependency override configuration
What to know first
- Requires Crystal and libyaml to compile
- Git libraries are expected to use v-prefixed tags
- No central package registry
Verdict
Shards provides Crystal projects with dependency resolution, installation, locking, and build-related commands across three desktop platforms. Its decentralized model and Git-oriented sources fit teams managing dependencies directly in project files and repositories.
Facts from Shards's own pages
- Authorship
- The shard.yml documentation credits Julien Portalier and the Crystal project as authors. · github.com, 11 Oct 2026
- Build behavior
- The build command ensures dependencies are installed and delegates build options to crystal build. · crystal-lang.org, 11 Oct 2026
- Build requirements
- The repository lists Crystal and libyaml as requirements for compiling Shards. · github.com, 11 Oct 2026
- Commands
- The documented commands include build, check, init, install, list, prune, update, and version. · crystal-lang.org, 11 Oct 2026
- Dependency installation
- The `shards install` command installs dependencies and records them in shard.lock for reproducible installations across computers. · github.com, 11 Oct 2026
- Dependency resolution
- Yes · github.com, 21 Sept 2026
- Dependency sources
- The README shows dependencies fetched from Git repositories, including GitHub repositories. · github.com, 11 Oct 2026
- Development dependencies
- Development dependencies are installed for the project itself and are not installed when its library is used as another project's dependency. · github.com, 11 Oct 2026
- Discovery model
- The Crystal community page describes Shards as a decentralized dependency system with no central registry. · crystal-lang.org, 11 Oct 2026
- Distribution
- Shards is usually distributed with Crystal, and a separate shards package may be available for a user's system. · github.com, 11 Oct 2026
- Free plan
- Yes · github.com, 21 Sept 2026
- Install options
- Shards is usually distributed with Crystal, including through Homebrew and Debian packages; source tarballs can also be built and installed. · github.com, 11 Oct 2026
- Intended users
- The project README describes its use for Crystal applications and libraries. · github.com, 11 Oct 2026
- License
- The repository states that Shards is licensed under Apache License, Version 2.0. · github.com, 11 Oct 2026
- Lockfile
- shards install writes locked dependency versions to shard.lock so subsequent installs can use the same versions across computers. · github.com, 11 Oct 2026
- Lockfile support
- Yes · github.com, 21 Sept 2026
- Overrides
- A shard.override.yml file can override dependency sources and version restrictions, and its location can be configured with SHARDS_OVERRIDE. · crystal-lang.org, 11 Oct 2026
- Package formats
- Crystal shards defined in shard.yml · github.com, 21 Sept 2026
- Platform notes
- The installation instructions mention Debian or Ubuntu Linux and Mac OS X, and say a shards package may be available for a user's system. · github.com, 11 Oct 2026
- Platforms
- The Crystal install page lists Shards in package instructions for Linux, macOS, Windows tooling, FreeBSD, and OpenBSD. · crystal-lang.org, 11 Oct 2026
- Postinstall scripts
- A shard can define a postinstall shell command that runs when the dependency is installed or upgraded. · github.com, 11 Oct 2026
- Project files
- Crystal applications and libraries are expected to have a shard.yml file at their root to describe dependencies. · github.com, 11 Oct 2026
- Project type
- The GitHub repository is public and licensed under Apache-2.0. · github.com, 11 Oct 2026
- Project users
- Crystal applications and libraries use a shard.yml file to describe project metadata and dependencies. · github.com, 11 Oct 2026
Where Shards stands on Freedom251
- Package Managers#56 of 93