# 🥳 cloud.jolin.io - A new Pluto deployment, integrated with GitHub

**URL:** <https://discourse.julialang.org/t/cloud-jolin-io-a-new-pluto-deployment-integrated-with-github/101566>\
**Category:** Community\
**Tags:** announcement\
**Created:** [July 13, 2023, 8:20am UTC](https://discourse.julialang.org/t/cloud-jolin-io-a-new-pluto-deployment-integrated-with-github/101566 "2023-07-13T08:20:56Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![schlichtanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/schlichtanders/32/32145_2.png) [@schlichtanders](https://discourse.julialang.org/u/schlichtanders)\
**Post date:** [July 13, 2023, 8:20am UTC](https://discourse.julialang.org/t/cloud-jolin-io-a-new-pluto-deployment-integrated-with-github/101566/1 "2023-07-13T08:20:56Z")

</div>

[![](https://global.discourse-cdn.com/julialang/original/3X/1/3/137f1a3a9e061deea37f13a0ee057a129dabfa4e.jpeg "2 min introduction to cloud.jolin.io") ](https://www.youtube.com/watch?v=JvEAN9tJjCo)

# 🥳 NEW - Jolin Cloud 🥳

# Pluto.jl for your company

# 

Dear Julia and Pluto enthusiasts,

I am very happy to announce [Jolin Cloud](https://cloud.jolin.io).

- you can start right away - it is hosted at [cloud.jolin.io](https://cloud.jolin.io)

Awesome Extras on top of normal Pluto.jl:

- build self-updating notebooks for **real-time streaming** analysis
- integrated with GitHub for version control and **dev → test →prod** automation
- easily **authenticate** at AWS, Azure, Google Cloud, or HashiCorp Vault (using tokens)

Jolin Cloud is in alpha phase. Please [write me an email](mailto:stephan.sahm@jolin.io) if you have any questions.

best,  
Stephan Sahm  
Founder of [jolin.io](http://jolin.io)

> **[Jolin Cloud – add agility to your analysis](http://cloud.jolin.io)**
>
> Where explorations transform into products.

---

<div class="post-metadata">

**Author:** ![gvdr](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gvdr/32/6387_2.png) [@gvdr](https://discourse.julialang.org/u/gvdr)\
**Post date:** [July 13, 2023, 9:15am UTC](https://discourse.julialang.org/t/cloud-jolin-io-a-new-pluto-deployment-integrated-with-github/101566/2 "2023-07-13T09:15:10Z")

</div>

Very nice!

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [July 13, 2023, 10:44am UTC](https://discourse.julialang.org/t/cloud-jolin-io-a-new-pluto-deployment-integrated-with-github/101566/3 "2023-07-13T10:44:54Z")

</div>

Sounds cool, but I’m a bit surprised by the level of access I _need_ to give Jolin in order to subscribe 🤔

 ![image](https://global.discourse-cdn.com/julialang/original/3X/7/c/7c3018f57daa5c438486b72619bb7c3bfa564b79.png)

---

<div class="post-metadata">

**Author:** ![schlichtanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/schlichtanders/32/32145_2.png) [@schlichtanders](https://discourse.julialang.org/u/schlichtanders)\
**Post date:** [July 13, 2023, 2:20pm UTC](https://discourse.julialang.org/t/cloud-jolin-io-a-new-pluto-deployment-integrated-with-github/101566/4 "2023-07-13T14:20:34Z")

</div>

Thank you for the reply.  
**TLDR:** Access to private/public repos is crucial for [cloud.jolin.io](http://cloud.jolin.io) to provide its services. If you don’t want [cloud.jolin.io](http://cloud.jolin.io) to see your existing repos, you can create a new github user.

# How Jolin Cloud requests github rights

[cloud.jolin.io](http://cloud.jolin.io) currently requests github access tokens with the following scopes:

- “user repo”

Looking into it, I just changed this to

- “read:user user:email repo”

[Github docs](https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/scopes-for-oauth-apps) don’t show any useful subscopes for the “repo” scope for Jolin Cloud. Hence this needs to stay.

The changes are already live:

 ![image](https://global.discourse-cdn.com/julialang/original/3X/3/e/3e05ffaf83657431d7bbddff7a3405d0a8a61e60.png)

> Of course, your credentials are 100% secured from other users access, and I myself and also others working on Jolin Cloud will never use your credentials. They are only used in automated ways for the features of Jolin Cloud.  
> Also note that you can always reject the permissions for the github access token later on.

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [July 13, 2023, 2:37pm UTC](https://discourse.julialang.org/t/cloud-jolin-io-a-new-pluto-deployment-integrated-with-github/101566/5 "2023-07-13T14:37:36Z")

</div>

But why would Jolin require _write_ access to _all_ my repos? I mean, I wouldn’t give that to anyone 🤣  
Can’t it be on a case-by-case basis?

---

<div class="post-metadata">

**Author:** ![schlichtanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/schlichtanders/32/32145_2.png) [@schlichtanders](https://discourse.julialang.org/u/schlichtanders)\
**Post date:** [July 13, 2023, 2:42pm UTC](https://discourse.julialang.org/t/cloud-jolin-io-a-new-pluto-deployment-integrated-with-github/101566/6 "2023-07-13T14:42:39Z")

</div>

Please take a look at the mentioned Github docs. Github oauth tokens do not offer this possibility. Restricting access is really best done via the creation of a respective new user.

---

<div class="post-metadata">

**Author:** ![bilderbuchi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bilderbuchi/32/13562_2.png) [@bilderbuchi](https://discourse.julialang.org/u/bilderbuchi)\
**Post date:** [July 13, 2023, 5:28pm UTC](https://discourse.julialang.org/t/cloud-jolin-io-a-new-pluto-deployment-integrated-with-github/101566/7 "2023-07-13T17:28:52Z")

</div>

Note that it is against Github TOS to have more than one free (non-bot) account, so this might be relevant if you are currently using a free account.

---

<div class="post-metadata">

**Author:** ![schlichtanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/schlichtanders/32/32145_2.png) [@schlichtanders](https://discourse.julialang.org/u/schlichtanders)\
**Post date:** [July 13, 2023, 5:44pm UTC](https://discourse.julialang.org/t/cloud-jolin-io-a-new-pluto-deployment-integrated-with-github/101566/8 "2023-07-13T17:44:52Z")

</div>

Researching more about alternative options, JolinCloud may migrate from being an OAuth app to a Github App in the future. That would offer more fine grained permissions, but the transition is not straight forward, as different APIs are supported by each system, and the documentation misses some parts which are crucial for [cloud.jolin.io](http://cloud.jolin.io) (hence needs testing, and maybe contact to GitHub itself).

I put it onto the internal development board as a feature request. Thank you @gdalle for bringing this up.

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [July 13, 2023, 5:56pm UTC](https://discourse.julialang.org/t/cloud-jolin-io-a-new-pluto-deployment-integrated-with-github/101566/9 "2023-07-13T17:56:00Z")

</div>

> [@schlichtanders](#):
>
> Please take a look at the mentioned Github docs. Github oauth tokens do not offer this possibility.

Right, I was asking because I had the experience of apps like [codecov.io](http://codecov.io), to which I give repo-specific read-only permissions. Based on your follow up, it seems codecov might be a GitHub app instead of an OAuth app, which would explain the difference (I wasn’t familiar with the specifics).

> [@schlichtanders](#):
>
> Restricting access is really best done via the creation of a respective new user.

I don’t know if I’m alone in this, but creating a new user might be enough of a hurdle to discourage me from using Jolin in the first place… I love Pluto, and I have no doubt that Jolin is an awesome product, I’m just very lazy 🤣

> [@schlichtanders](#):
>
> I put it onto the internal development board as a feature request. Thank you @gdalle for bringing this up.

I appreciate you taking the time!

---

<div class="post-metadata">

**Author:** ![cpfiffer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cpfiffer/32/208747_2.png) [@cpfiffer](https://discourse.julialang.org/u/cpfiffer)\
**Post date:** [July 13, 2023, 6:13pm UTC](https://discourse.julialang.org/t/cloud-jolin-io-a-new-pluto-deployment-integrated-with-github/101566/10 "2023-07-13T18:13:30Z")

</div>

This is cool! Appreciate you putting out out there.

---

<div class="post-metadata">

**Author:** ![schlichtanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/schlichtanders/32/32145_2.png) [@schlichtanders](https://discourse.julialang.org/u/schlichtanders)\
**Post date:** [July 24, 2023, 8:52pm UTC](https://discourse.julialang.org/t/cloud-jolin-io-a-new-pluto-deployment-integrated-with-github/101566/11 "2023-07-24T20:52:21Z")

</div>

I am very glad to announce that JolinCloud now **runs as a Github App** (instead of OAuth app, which it was before). 🥳

This allows for much better permission control 🙂 👍
