Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Kyso – an easy way to share Jupyter notebooks
117 points by eoinmurray92 on June 20, 2017 | hide | past | favorite | 40 comments
Hi HN,

We're the founders of


We want to make it really easy to share data-science within teams, and we've started with Jupyter notebooks.

We render the notebooks really nicely, so you can embed interactive visualisations like Bokeh, and Plotly plots.

Another nice thing is we allow you to hide the code for non-technical readers, so you basically get a beautiful data blog.

Look at https://kyso.io/laura/ for some examples.

We really want to hear your feedback, let us know what you think!

We use AirBnB's Knowledge Repo project[1][2] for things like this at my company. I love the idea of making it easier to deploy things like this though.

1. https://medium.com/airbnb-engineering/scaling-knowledge-at-a...

2. https://github.com/airbnb/knowledge-repo

We actually used the Knowledge-repo at our previous startup, and we thought we could improve the user experience, and hence https://kyso.io - but we haven't strayed to far from the original idea of the knowlege-repo

Could you elaborate a bit on what you offer that out-of-the-box Jupyter does not?

From my admittedly limited experience with Jupyter, it is already an interactive coding and visualization tool which can be exported to HTML.

Can you not include Plotly plots in vanilla Jupyter?

The kyso homepage says that you beautifully render the notebooks? Given that they're already html, does that mean custom style sheets? Something more?

Or is the main value add just a wrapper over git to make versioning and sharing easier?


We host Jupyter notebooks online! We don't in anyway replace Jupyter.

So normally when you publish a notebook online - you'd use Github or http://nbviewer.jupyter.org/

Github doesn't allow the interactive graphs, and nbviewer wont actually host the notebooks for you (you need to link from somewhere else).

Let you just type `kyso create "new-study"` and `kyso push "new version"` and your notebook is live online

edit for spelling

So this would be a simpler alternative to, say, running my own jupyter server on a digitalocean box?

We currently host static renderings of the notebooks, for reading and sharing, where you can pull them down to your local installation of Jupyter to extend them.

On our roadmap is for Kyso to work like the Google drive integration, where you can use a jupyter kernel (https://github.com/jupyter/jupyter-drive) hosted anyway but server the notebooks from Kyso.

And we are also planning fully runnable notebooks too, we do aim to be the easiest way to run your own jupyter server.

You are more than free to make a PR to make publishing to Kyso from nteract one-click. We have publishing for github built-in and would love to have more.

Any example code of how to do this?

So what do you actually do? I work with Jupyter notebooks daily. I'm not really sure what you are actually doing with them even after visiting both of your links. Are you hosting deployments on the web? Changing how common plotting tools are displayed?

Having the expandable/collapsible code is nifty for sure, but that's the main feature I noticed.

If I can offer some perhaps unsolicited feedback, I'd like for you guys to make it more clear (explitcly clear) what exactly you are offering. Your main web page just looks like a sales pitch for jupyter notebooks in general.

Thanks for your feedback, currently we host static renderings of the notebooks, so you can share them easily for other to read. And others can pull them down locally and extend them.

We are planning the fully runnable Jupyter environment in the future.

My favourite thing about Jupyter notebooks is that you can render them locally to avoid the Jupyter hassle if you don't have it installed for some reason (or if you don't want to run it).

Upon reading this, I decided to implement a renderer of Github-hosted files (as their renderer is painfully slow and doesn't work on phones) to further simplify notebook distribution. I haven't looked into Bokeh and other javascripty extensions, but it might be solvable as well. So thanks for the inspiration!


This (nbviewer.js)[1] is really amazingly quick and useful as a notebook viewer.

1. https://github.com/kokes/nbviewer.js

I've always wanted a way to do collaborative editing ala google docs in a Jupyter notebook. Does anyone know if there are existing tools that do similar things?

Jupyter/IPython dev here. 1) We are always supper happy to see commercial offers that integrate Jupyter – I see the HQ of Kyso is in SF, feel free to come see the Berkeley team. We're also be happy to come by SF to discuss ! 2) RT collaboration is on its way on main Jupyter (via JupyterLab) the beta should be announced in a couple of weeks maybe before end of month. It will be using Google Drive (by default, but plug-able). Not only on notebooks, but all text documents – you can get it now if you install master. 3) I would also look at CoCalc (ex SageMathCloud) that already have real-time collaboration with full history.

As mentioned, we have had collaborative editing with full history for Jupyter notebooks since 2014 in https://cocalc.com, which is open source by the way. We've written and rewritten this functionality 3 times now, culminating most recently with a complete front and backend rewrite of Jupyter from scratch for CoCalc. See http://blog.sagemath.com/jupyter/2017/05/05/jupyter-rewrite-... for more details. We also still support collaborative editing using Classical Jupyter.

Nice! How much of this made it back into Jupyter proper? I'm always interested in the "rubber meets the road" aspects of commercialized open source development.

Your project looks perfect for helping people learn how to code.

I'm in close communication with many Jupyter developers, got a lot of help and feedback from them, and I hope I influence their direction in some cases. We view CoCalc Jupyter as another Jupyter client in the Jupyter ecosystem (much like nteract, Google Collaboratory, etc.); the implementation framework of CoCalc Jupyter is React.js, so the main code sharing is with Nteract, rather than classical Jupyter. Regarding commercialized open source, Nteract is another Jupyter client who development is funded by a company (currently mainly Netflix).

We are planning this as a next feature for Kyso - email me at "eoin [at] kyso.io" if you need this soon.

You can currently use https://github.com/jupyter/colaboratory But its not under heavy development anymore, only internally at Google.

I would pay a LOT if I can upload a notebook (jupyter or Zeppelin) and have it available as a true multi-user dashboard (like a form with input and output)

If I understand that what your looking for is easily deployable jupyter-dashboards (https://github.com/jupyter/dashboards) where you can make kind of micro data science apps. That is exactly what we have in mind as our next step.

Hi sandGorgon,

Thanks for your reply - this is on our roadmap, do you need the dashboards (we're the code runs, but is no editable) or full development notebooks?

We are planning both in the future - email me at "eoin [at] kyso.io" if you need this sooner rather than later.

edit: spelling

We're actually building something really similar at https://nstack.com. You can deploy your Python model into an API in one command, and then turn it into an HTTP endpoint, or build plug-and-play workflows with your data warehouse, 3rd-party APIs, etc.

I'll reach out on email!

Why would you pay a lot for it? What problem does it solve for you?

I'll reply to both you and OP here. I have an open bug on this as well. The closest thing I have found is http://blog.ibmjstart.net/2016/01/28/jupyter-notebooks-as-re...

Jupiter is brilliant to prototype stuff - anything from metric dashboards to ML models. The problem is how do you take this live ?

So you have production engineers transforming this code into a microservice and then writing an exact duplicate dashboard in reactjs or something. Why ? Because jupyter spawns kernel which is directly related to state of execution of the program...So if I'm logged into the dashBoard, nobody else can.

Instead, if you could nbconvert the notebook into flask code, I could have a running dashboard in a piece of flask code that I can immediately put on my server.

I will pay for this - both because it is very useful, and also as a way for me to fund something cool.

As a business model, it is damn cool - this is true heroku for data scientists.

EDIT: incidentally I have been told by many people to switch to Zeppelin. Apparently, it works nicer at building dashboard..And More importantly, it is seamless integrated with the spark ecosystem (including cluster support) that makes scaling very easy. GCP Dataproc comes with recipes to launch Zeppelin on the server.

We are working on this, 1 click deploys of data-science apps - do you have a way for me to contact you when we launch this (I'm eoin at kyso.io)

Email captcha link in my profile.

It allows data-scientists to easily deploy in-house data-apps. And by using the Juypter notebook, you get the GUI for free as well and automatic support for many many ML and numerical libraries (assuming Python)

So for example if a sales team gather data, and there is a data-transform thats done all the time by hand, or feeding new data to an ML model, an internal app would save time, and Jupyter dashboards have the potential to make this really easy.

You guys should consider nteract's commutable as a frontend: https://github.com/nteract/commutable

Probably want the packages in here -- https://github.com/nteract/nteract/tree/master/packages

Roughly speaking, this is just like the notebook-preview component with different styling and some additional UI enhancements (cell hide toggling).

You can also toggle code cells of Jupyter notebooks in Plotly: https://plot.ly/~empet/14371

Collapsible input/outputs was just merged into JupyterLab today!

Is there a way to toggle them all at once?

I just got this error: Error! { "line": 7, "column": 2607, "sourceURL": "https://kyso.io/_next/cfa0fec92f8264fb4f4d21558810e9ef/app.j... }

This looks really good though! Good work!

Thanks for reporting that - looking into it.

Technically speaking the prefix is Show HN. So it appears in the "show" section. Launch HN is not a supported prefix.

Shameless plug: I built a free version of this (for R) a few months ago:


Adoption hasn't been great, so it's probably going to stay free for a while. Enjoy!

Eoin the co-founder of Kyso here! Happy to answer any questions...

my email is eoin [at] kyso.io

Is this just a UI in front of Jupyter Hub? https://github.com/jupyterhub/jupyterhub

Currently we allow you to share notebooks statically, i.e. they don't run.

We will be supporting runnable dashboards and notebooks soon.

Just got some feedback there that the command line app is only working for node.js v8.0 and above!

Will be releasing a node v6.0 compatible version in the next 2 days, and an node independent version very soon!!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact