# Meld - A CLI tool to manage shards

**URL:** <https://forum.crystal-lang.org/t/meld-a-cli-tool-to-manage-shards/8429>\
**Category:** Community\
**Created:** [September 26, 2025, 5:36am UTC](https://forum.crystal-lang.org/t/meld-a-cli-tool-to-manage-shards/8429 "2025-09-26T05:36:21Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![cmittal790](https://avatars.discourse-cdn.com/v4/letter/c/22d042/32.png) [@cmittal790](https://forum.crystal-lang.org/u/cmittal790)\
**Post date:** [September 26, 2025, 5:36am UTC](https://forum.crystal-lang.org/t/meld-a-cli-tool-to-manage-shards/8429/1 "2025-09-26T05:36:21Z")

</div>

Hi Crystallizers,

My name is Chetan Mittal, and I have been a Ruby and Rails developer since 2005. Just a few days back I started gaining interest in Crsytal Lang after I started using LavinMQ message broker.

While learning how to program in Crystal I found out that it lacked an easy tool like Bundler is to Ruby, and Cargo is to Rust. So I started developing Meld.

Currently, it still a work in progress, but you can:-

```auto
$ crystal run src/meld.cr -- help

```

```auto
Meld - Crystal Lang Package Manager

```

```auto
Usage:

```

```auto
  meld [options] <command> [command options]

```

```auto
Commands:

```

```auto
  init Initialize project (shard.yml)

```

```auto
  add <shard> [-v|-b|-t|-c] [--dev] Add a shard (pin with version/branch/tag/commit)

```

```auto
  remove <shard> Remove a shard from shard.yml and lib/

```

```auto
  search <query> Search for available shards

```

```auto
  install Install dependencies

```

```auto
  update [shard] Update all or a specific shard

```

```auto
  exec <cmd> Run a command in project context

```

```auto
  binstubs <shard> Generate executable wrappers

```

```auto
  global install <shard> [...] Build and install shard executables globally

```

```auto
  help [command] Show help (global or for a command)

```

```auto
Options:

```

```auto
    -v, --version Show version

```

```auto
    -h, --help Show help

```

The basic features like meld add \<shard\_name\>, remove, install, etc work except a few such as creating binstubs. Also, it can build and install a package such as LavinMQ globally without using make.

Give it a go or contribute here - [https://github.com/cmittal790/meld](https://github.com/cmittal790/meld)

Regards, Chetan.

---

<div class="post-metadata">

**Author:** ![zw963](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/zw963/32/1623_2.png) [@zw963](https://forum.crystal-lang.org/u/zw963)\
**Post date:** [September 26, 2025, 7:06am UTC](https://forum.crystal-lang.org/t/meld-a-cli-tool-to-manage-shards/8429/2 "2025-09-26T07:06:31Z")

</div>

There is a existed shards almost same as you.

> **[GitHub - navid-m/sword: Layer over shards to increase usability and...](https://github.com/navid-m/sword)**
>
> Layer over shards to increase usability and decrease shittiness

Maybe you want share ideas with him.

---

<div class="post-metadata">

**Author:** ![cmittal790](https://avatars.discourse-cdn.com/v4/letter/c/22d042/32.png) [@cmittal790](https://forum.crystal-lang.org/u/cmittal790)\
**Post date:** [September 26, 2025, 8:55am UTC](https://forum.crystal-lang.org/t/meld-a-cli-tool-to-manage-shards/8429/3 "2025-09-26T08:55:23Z")

</div>

Thanks for sharing this. I wasn’t aware of sword.

---

<div class="post-metadata">

**Author:** ![kojix2](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/kojix2/32/1583_2.png) [@kojix2](https://forum.crystal-lang.org/u/kojix2)\
**Post date:** [September 26, 2025, 9:31am UTC](https://forum.crystal-lang.org/t/meld-a-cli-tool-to-manage-shards/8429/4 "2025-09-26T09:31:31Z")

</div>

I’ve seen this idea several times since joining the Crystal community.  
Even though it looks simple, is it actually a difficult problem…?

> [@I wrote a CLI over shards that adds and removes shards from a project, can search for shards, visualize dependency trees of shards, and more](https://forum.crystal-lang.org/t/i-wrote-a-cli-over-shards-that-adds-and-removes-shards-from-a-project-can-search-for-shards-visualize-dependency-trees-of-shards-and-more/8040):
>
> Since shards CLI lacks the add and remove commands for shard.yml, along with others like shards info, etc… [Demo](https://streamable.com/mbiul0)

---

<div class="post-metadata">

**Author:** ![RespiteSage](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/respitesage/32/793_2.png) [@RespiteSage](https://forum.crystal-lang.org/u/RespiteSage)\
**Post date:** [September 26, 2025, 11:58am UTC](https://forum.crystal-lang.org/t/meld-a-cli-tool-to-manage-shards/8429/5 "2025-09-26T11:58:04Z")

</div>

Also, just FYI, there’s a reasonably popular visual diff/merge tool with the same name: [Meld Merge](https://meldmerge.org/).

Nothing inherently wrong with using the same name, but I thought it would be good to let you know. 🙂

---

<div class="post-metadata">

**Author:** ![Blacksmoke16](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/blacksmoke16/32/1241_2.png) [@Blacksmoke16](https://forum.crystal-lang.org/u/Blacksmoke16)\
**Post date:** [September 26, 2025, 1:04pm UTC](https://forum.crystal-lang.org/t/meld-a-cli-tool-to-manage-shards/8429/6 "2025-09-26T13:04:30Z")

</div>

There’s also [GitHub - devnote-dev/geode: An alternative Crystal package manager](https://github.com/devnote-dev/geode) 😅.
