# Vessel - a package manager for motoko

**URL:** <https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764>\
**Category:** Programs & Applications\
**Created:** [June 24, 2020, 10:33am UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764 "2020-06-24T10:33:07Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![cryptoschindler](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/cryptoschindler/32/26_2.png) [@cryptoschindler](https://forum.dfinity.org/u/cryptoschindler)\
**Post date:** [June 24, 2020, 10:33am UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764/1 "2020-06-24T10:33:07Z")

</div>

I just stumbled on this in the docs! We now have a package manager for motoko 🌱

> **[kritzcreek/vessel](https://github.com/kritzcreek/vessel)**
>
> Simple package management for Motoko. Contribute to kritzcreek/vessel development by creating an account on GitHub.

---

<div class="post-metadata">

**Author:** ![senior.joinu](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/senior.joinu/32/9240_2.png) [@senior.joinu](https://forum.dfinity.org/u/senior.joinu)\
**Post date:** [June 24, 2020, 11:27am UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764/2 "2020-06-24T11:27:10Z")

</div>

It would be cool if someone also manage to implement something like a “canister registry” where you can find a canister that does something that you need and already populated with data from other canisters using it.

---

<div class="post-metadata">

**Author:** ![KevLoui](https://avatars.discourse-cdn.com/v4/letter/k/839c29/32.png) [@KevLoui](https://forum.dfinity.org/u/KevLoui)\
**Post date:** [June 24, 2020, 11:56am UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764/3 "2020-06-24T11:56:12Z")

</div>

Maybe we can make one?

---

<div class="post-metadata">

**Author:** ![Ori](https://avatars.discourse-cdn.com/v4/letter/o/ecae2f/32.png) [@Ori](https://forum.dfinity.org/u/Ori)\
**Post date:** [June 24, 2020, 4:29pm UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764/4 "2020-06-24T16:29:53Z")

</div>

That’s strange timing—I‘m just building something like that, it should be ready for Tungsten!

---

<div class="post-metadata">

**Author:** ![Ori](https://avatars.discourse-cdn.com/v4/letter/o/ecae2f/32.png) [@Ori](https://forum.dfinity.org/u/Ori)\
**Post date:** [June 26, 2020, 8:30am UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764/5 "2020-06-26T08:30:35Z")

</div>

Any features that might be particularly useful? Essentially going for something that’s of use to us all here for tungsten.

(Slight thread hijack going on here, sorry Moritz!)

---

<div class="post-metadata">

**Author:** ![senior.joinu](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/senior.joinu/32/9240_2.png) [@senior.joinu](https://forum.dfinity.org/u/senior.joinu)\
**Post date:** [June 26, 2020, 9:00am UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764/6 "2020-06-26T09:00:32Z")

</div>

As a guy who wants to share a canister I’d expect a UI where I can save some information about my deployed canister (name, `canisterId`, some docs). Maybe it would be useful to be able to also upload a `.did` file of my canister and see some automatically generated API spec for it. It would be also useful to force canisters to have some `healthcheck` function and periodically check for their availability.

As a guy who wants to use some of shared canisters I’d like to search for key words, find something that is popular, get the `canisterId` and download it’s `.did` file (so I could generate client-code by myself).

What do you think?

---

<div class="post-metadata">

**Author:** ![Ori](https://avatars.discourse-cdn.com/v4/letter/o/ecae2f/32.png) [@Ori](https://forum.dfinity.org/u/Ori)\
**Post date:** [June 26, 2020, 9:14am UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764/7 "2020-06-26T09:14:58Z")

</div>

Pretty close to my thinking, ok thanks, great input. I like the healthcheck idea, on this I was wondering how much devs would want to muddy their IDLs with additional functions like this? A healthcheck’s probably ok, since it’s generally useful to have.

---

<div class="post-metadata">

**Author:** ![morrolan](https://avatars.discourse-cdn.com/v4/letter/m/f05b48/32.png) [@morrolan](https://forum.dfinity.org/u/morrolan)\
**Post date:** [August 28, 2020, 12:18pm UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764/8 "2020-08-28T12:18:12Z")

</div>

Does any of you have a sane way of using vessel when building an IC canister by means of `dfx build`?

The way (recent versions of) Vessel seem to work, is that it (via `vessel sources`) provides a set of additional flags to pass to `moc` - similar to how you’d eg link a library with `gcc`.

However when building an IC canister, it doesn’t seem intended (nor reasonable) to call `moc` directly. Rather one uses `dfx build`, which will call `moc` internally.

---

<div class="post-metadata">

**Author:** ![kritzcreek](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/kritzcreek/32/267_2.png) [@kritzcreek](https://forum.dfinity.org/u/kritzcreek)\
**Post date:** [August 28, 2020, 5:19pm UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764/9 "2020-08-28T17:19:20Z")

</div>

You can tell dfx to call `vessel` by changing `defaults->build->packtool` to `vessel sources` in your `dfx.json`. I’m in the process of properly documenting the `dfx + vessel` workflow.

---

<div class="post-metadata">

**Author:** ![morrolan](https://avatars.discourse-cdn.com/v4/letter/m/f05b48/32.png) [@morrolan](https://forum.dfinity.org/u/morrolan)\
**Post date:** [August 28, 2020, 5:28pm UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764/10 "2020-08-28T17:28:26Z")

</div>

Oh, that’s great! Thanks for the heads-up. Looking forward to the updated docs on that part, then. 🙂

---

<div class="post-metadata">

**Author:** ![gajendraks](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/gajendraks/32/4252_2.png) [@gajendraks](https://forum.dfinity.org/u/gajendraks)\
**Post date:** [February 24, 2022, 12:30am UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764/11 "2022-02-24T00:30:12Z")

</div>

@here @ggreif @matthewhammer  
As @kritzcreek is not maintaining this anymore, please can anyone of you update `dfx + vessel` workflow.

Happy to contribute if you guide me.

---

<div class="post-metadata">

**Author:** ![ggreif](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/ggreif/32/301_2.png) [@ggreif](https://forum.dfinity.org/u/ggreif)\
**Post date:** [February 24, 2022, 1:22pm UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764/12 "2022-02-24T13:22:03Z")

</div>

There is [Release v0.6.3 · dfinity/vessel · GitHub](https://github.com/dfinity/vessel/releases/tag/v0.6.3) now. Please check if it is working for you. We are happy to review PRs that improve the interplay.

---

<div class="post-metadata">

**Author:** ![ggreif](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/ggreif/32/301_2.png) [@ggreif](https://forum.dfinity.org/u/ggreif)\
**Post date:** [June 22, 2022, 8:17am UTC](https://forum.dfinity.org/t/vessel-a-package-manager-for-motoko/764/13 "2022-06-22T08:17:10Z")

</div>

I made a pre-relase [Release v0.6.4 · dfinity/vessel · GitHub](https://github.com/dfinity/vessel/releases/tag/v0.6.4) to address an issue with recent Linuxen, namely the lack of `openssl-1.1.1`. Functionally it is identical, but I am interested to hear feedback (esp. from owners of freshly installed machines), so that I can finalise the release.
