# Publish interactive Pluto notebooks with glassnotebook.io

**URL:** <https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801>\
**Category:** Community\
**Created:** [August 14, 2023, 6:54pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801 "2023-08-14T18:54:36Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Dale\_James\_Black](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dale_james_black/32/11595_2.png) [@Dale\_James\_Black](https://discourse.julialang.org/u/Dale_James_Black)\
**Post date:** [August 14, 2023, 6:54pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/1 "2023-08-14T18:54:36Z")

</div>

# Sign up for [Glass Notebook](https://glassnotebook.io/)

 ![image](https://global.discourse-cdn.com/julialang/original/3X/4/b/4b7ed99fe4471aa7c7616aa92a3afe6081e71951.jpeg)  
[https://glassnotebook.io/](https://glassnotebook.io/)

## Previous Post

A couple of months ago, we put out [this post](https://discourse.julialang.org/t/announcing-glass-notebook-publish-interactive-pluto-notebooks-from-github/99395) to gauge the interest in a service like Glass Notebook. Today, after dedicated efforts, particularly from @ctrekker, we’re thrilled to formally introduce Glass Notebook, enabling you to publish interactive Pluto notebooks with just a single click. We have enrolled our first few beta users, and we are eager to onboard more.

## See [Glass Notebook](https://glassnotebook.io/) in Action

 ![image](https://global.discourse-cdn.com/julialang/original/3X/f/a/fa9498399a06d1da86d5ea4d145c0b3e120df39d.jpeg)

- Check out the experimental [JuliaImages docs](https://glassnotebook.io/r/iQ2ZIs0GMr6V8z2RiXyIj/interactivity.jl) thanks to @Ashwani_Rathee
- Simple example notebook can be seen [here](https://glassnotebook.io/r/XrKocuzgR23umJ6lkqn4s/example.jl)

## Current Progress and Future

- We’re rolling out access incrementally, so make sure to sign up! We’re closely monitoring performance and bugs, and we’ll remove the waitlist as we gain confidence in our system’s stability.
- Our offerings include static notebook exports, pre-computed interactive notebook exports, and live interactive notebooks.
- Our roadmap prioritizes publishing capabilities and feature additions based on user needs.

## Pricing Plans

- Pricing options could change as we are just getting started. Below is a simple breakdown of what we are currently planning with regard to pricing:
  - Free
    - 10 static notebooks
    - 1 pre-computed interactive notebooks

  - Paid ($10-$200 per month)
    - 1,000-30,000 static notebooks
    - 15-200 pre-computed interactive notebooks
    - 4-80 live interactive notebooks

  - Enterprise (custom)
    - Unlimited

## We Want to Hear from You

- If you have specific interests or feature requests for this product, please share them in this thread and like posts that resonate with your desires. Your feedback will guide what we focus on.

## Engaging with the Community

We hope that Glass Notebook can reach a real need within the community. This is the main reason Connor and I built this. Below are a few posts where I expect Glass Notebook to meet a need for at least some users:

- [Fixing Package Fragmentation](https://discourse.julialang.org/t/fixing-package-fragmentation/98712/1)

- [Help Julia Gain Popularity](https://discourse.julialang.org/t/what-steps-should-the-julia-community-take-to-bring-julia-to-the-next-level-of-popularity/101389)

---

<div class="post-metadata">

**Author:** ![Dale\_James\_Black](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dale_james_black/32/11595_2.png) [@Dale\_James\_Black](https://discourse.julialang.org/u/Dale_James_Black)\
**Post date:** [August 17, 2023, 5:46pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/2 "2023-08-17T17:46:29Z")

</div>

I just announced my [first Julia package](https://discourse.julialang.org/t/ann-announcing-calciumscoring-jl-calculating-coronary-artery-calcium-scores-from-ct-images/102918), which uses Glass Notebooks for the docs 🎉

> [@\[ANN\] Announcing CalciumScoring.jl: Calculating Coronary Artery Calcium Scores from CT Images](https://discourse.julialang.org/t/ann-announcing-calciumscoring-jl-calculating-coronary-artery-calcium-scores-from-ct-images/102918/1):
>
> I am excited to introduce [CalciumScoring.jl](https://github.com/Dale-Black/CalciumScoring.jl), a Julia package designed to calculate coronary artery calcium scores from CT images using various quantification algorithms. You can easily calculate the calcium mass within a CT scan using the `score()` function. Detailed documentation is available to help you get started, which utilizes our new [Pluto publishing product](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801).
> 
> ![Glass Notebook](https://img.shields.io/badge/Docs-Glass%20Notebook-aquamarine.svg)

Perhaps I’m a bit biased, but I believe these results look quite impressive!

---

<div class="post-metadata">

**Author:** ![Dale\_James\_Black](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dale_james_black/32/11595_2.png) [@Dale\_James\_Black](https://discourse.julialang.org/u/Dale_James_Black)\
**Post date:** [March 15, 2024, 12:02am UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/3 "2024-03-15T00:02:31Z")

</div>

# Official Public Beta Launch of Glass Notebook

## Introduction

We (@ctrekker and I) are thrilled to announce the public beta launch of Glass Notebook - a powerful new platform that makes it incredibly easy to publish your Pluto.jl notebooks as beautiful interactive websites or static documentation.

Built with Pluto.jl and Julia, Glass Notebook provides an intuitive all-in-one interface to turn your Pluto notebooks into polished, interactive sites in just a few clicks. We aim to empower the Julia community to create and share engaging, interactive technical content with the world.

## Key Features

- Simplicity: Link your GitHub repository and publish with one click
- Interactivity: Notebooks can be fully interactive, allowing viewers to edit code and see results live in the browser
- Comprehensive Documentation: Automatically link multiple nested repositories into one unified documentation site
  - Automatic Sidebar: Glass Notebook generates a sidebar based on your Pluto notebook structure
  - Nested Project Layout: Customize the sidebar to include notebooks from multiple packages or projects
  - Hyper-Nested Layout (Coming Soon): Combine multiple nested projects with a top-level navigation bar

- Static and Interactive Notebook Export: Choose the right balance of interactivity and static notebooks for whatever you need
- Multiple Pricing Tiers: Generous free tier (unlimited static exports), paid tiers for interactivity needs

The nested documentation features in Glass Notebook make it simple to create comprehensive, well-organized documentation sites that combine content from multiple repositories. Whether you have a single package or a complex multi-package project, Glass Notebook’s automatic sidebar generation and customizable nested project layouts make it easy to present your notebooks in a user-friendly way.

 ![image](https://global.discourse-cdn.com/julialang/original/3X/f/f/ff7da93d9dd23837196a48af598aba6505a2fb88.jpeg)

We’re particularly excited about the upcoming Hyper-Nested Layout feature, which will allow you to combine multiple nested projects into a single, unified site with a top-level navigation bar. This will be a game-changer for large-scale documentation projects.

Glass Notebook also offers flexibility in choosing between static and interactive notebook exports, so you can find the right balance between interactivity and performance for your specific use case. Our generous free tier includes unlimited static exports, while paid tiers provide additional interactivity options to meet the needs of commercial users.

## Getting Started

1. Sign in with your GitHub account at [glassnotebook.io](http://glassnotebook.io)
2. Link the GitHub repository containing your Pluto notebooks
3. Toggle notebooks to be interactive or static
4. Share the generated Glass Notebook link!

 ![image](https://global.discourse-cdn.com/julialang/original/3X/8/c/8cc1557796d11d6c4bcb6611f810c96ff7fe11af.jpeg)

 ![image](https://global.discourse-cdn.com/julialang/original/3X/8/8/885f7072da5a64d5595445a23ecd1d2e4ac5a8f4.jpeg)

## User Documentation

We initially built this product for our own needs, so naturally, we are excited to dogfood our product. In fact, the comprehensive documentation site for Glass Notebook itself is built and published using Glass Notebook! Check out the live docs at:  
[https://glassnotebook.io/r/docs/](https://glassnotebook.io/r/docs/)

 ![image](https://global.discourse-cdn.com/julialang/original/3X/6/a/6aaf08ad32b2ceec0bda7b998bbe1864c4550ee7.jpeg)

The GlassDocs site showcases the power of Glass Notebook for creating rich, interactive documentation. It provides good tutorials to help users get started and showcases the beauty of nested documentation automatically handled via Glass Notebook. The [GitHub repository](https://github.com/Dale-Black/GlassDocs) itself is a valuable resource for those looking to dive deep into the power of Glass Notebook.

## Invitation for Commercial Users

During this public beta phase, we are offering a unique opportunity for a limited number of commercial users to partner with us. If you are interested in using Glass Notebook for your commercial projects and would like to take advantage of free interactivity and commercial tier features in exchange for your valuable feedback and close collaboration, please reach out to us.

You can contact Dale Black or Connor Burns on the [Julia Zulip](https://julialang.zulipchat.com/) or email us directly at [support@glassnotebook.io](mailto:support@glassnotebook.io). We look forward to working closely with a select group of commercial users to further enhance Glass Notebook and meet your specific needs.

## Feedback

Your experience and opinions are important to us. If you have any thoughts or suggestions about Glass Notebook, we’d love to hear from you. Share your feedback easily through the [`#glassnotebook` Zulip channel here](https://julialang.zulipchat.com/#narrow/stream/428178-glassnotebook). Whether it’s something you liked, something you think could be better, or ideas for new features, your input is valuable in shaping the future of Glass Notebook.

## Conclusion

We can’t wait to see the incredible notebooks and documentation sites the Julia community will create and share with Glass Notebook. Your feedback during this beta period is extremely valuable as we work to make Glass Notebook the go-to publishing solution for Pluto notebooks.

Head over to [https://glassnotebook.io](https://glassnotebook.io) to get started for free!

---

<div class="post-metadata">

**Author:** ![jdad](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jdad/32/4739_2.png) [@jdad](https://discourse.julialang.org/u/jdad)\
**Post date:** [March 15, 2024, 3:52pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/4 "2024-03-15T15:52:05Z")

</div>

On the site, there is reference to ` Interactive` and ` Live Interactive` notebooks. What is the difference exactly?

---

<div class="post-metadata">

**Author:** ![Dale\_James\_Black](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dale_james_black/32/11595_2.png) [@Dale\_James\_Black](https://discourse.julialang.org/u/Dale_James_Black)\
**Post date:** [March 15, 2024, 4:11pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/5 "2024-03-15T16:11:38Z")

</div>

Another term for this would be “pre-computed slider servers”, [see here](https://github.com/JuliaPluto/PlutoSliderServer.jl?tab=readme-ov-file#3-wip-precomputed-slider-server)

For every notebook that is self-contained, we automatically resort to pre-computed interactivity. But for notebooks that allow for user uploads, this is not possible, and the notebook is then just hosted as a live server.

Essentially, if a notebook contains something like

```julia
using PlutoUI: Slider, FilePicker
using CairoMakie: heatmap

@bind uploaded_file FilePicker()
arr = uploaded_file["data"]

@bind z_axes Slider(axes(arr, 3))
heatmap(arr[:, :, z_axes])

```

Then it can no longer be pre-computed and requires a full-time running server.

For a notebook like so:

```julia
using PlutoUI: Slider
using CairoMakie: heatmap

arr = rand(10, 10, 10)

@bind z_axes Slider(axes(arr, 3))
heatmap(arr[:, :, z_axes])

```

where the data is fully contained within the notebook, then it can be pre-computed.

@ctrekker is the one doing all of the heavy lifting on this!

---

<div class="post-metadata">

**Author:** ![jdad](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jdad/32/4739_2.png) [@jdad](https://discourse.julialang.org/u/jdad)\
**Post date:** [March 15, 2024, 4:24pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/6 "2024-03-15T16:24:26Z")

</div>

Thanks, very clear, and explains the difference of support. May be you could add that (or a pointer to this thread) to the documentation of the site ?

Thanks again and bravo!

---

<div class="post-metadata">

**Author:** ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)\
**Post date:** [March 15, 2024, 6:00pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/7 "2024-03-15T18:00:32Z")

</div>

Is it mandatory that the notebooks are Pluto notebooks or Jupyter notebooks will do as well?

---

<div class="post-metadata">

**Author:** ![Dale\_James\_Black](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dale_james_black/32/11595_2.png) [@Dale\_James\_Black](https://discourse.julialang.org/u/Dale_James_Black)\
**Post date:** [March 15, 2024, 6:53pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/8 "2024-03-15T18:53:36Z")

</div>

We are a small team so right now we only support Pluto notebooks. But if Jupyter support is a feature that many users want then we will happily consider it

---

<div class="post-metadata">

**Author:** ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)\
**Post date:** [March 15, 2024, 7:17pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/9 "2024-03-15T19:17:45Z")

</div>

OK, thanks. Just to know.

---

<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:** [March 15, 2024, 9:14pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/10 "2024-03-15T21:14:01Z")

</div>

This is sick! Well done, y’all.

---

<div class="post-metadata">

**Author:** ![Dale\_James\_Black](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dale_james_black/32/11595_2.png) [@Dale\_James\_Black](https://discourse.julialang.org/u/Dale_James_Black)\
**Post date:** [March 15, 2024, 9:31pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/11 "2024-03-15T21:31:35Z")

</div>

Thank you!

---

<div class="post-metadata">

**Author:** ![tpoisot](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tpoisot/32/19812_2.png) [@tpoisot](https://discourse.julialang.org/u/tpoisot)\
**Post date:** [March 16, 2024, 12:59pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/12 "2024-03-16T12:59:07Z")

</div>

This looks amazing. Will you develop academic pricing? My classes (3 of them) use about 15 notebooks each, so the paid tiers aren’t really affordable if we account for the fact that classes only last for a few months.

---

<div class="post-metadata">

**Author:** ![Dale\_James\_Black](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dale_james_black/32/11595_2.png) [@Dale\_James\_Black](https://discourse.julialang.org/u/Dale_James_Black)\
**Post date:** [March 16, 2024, 2:08pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/13 "2024-03-16T14:08:10Z")

</div>

That is one of our eventual goals. We need to figure out what exactly paying customers want first, in order to be sustainable, but our hope is to give back to the open source community and academia. With that, I hope people find the free tier, with unlimited static exports, very useful nonetheless if the paid tiers aren’t an option

---

<div class="post-metadata">

**Author:** ![tpoisot](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tpoisot/32/19812_2.png) [@tpoisot](https://discourse.julialang.org/u/tpoisot)\
**Post date:** [March 16, 2024, 3:24pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/14 "2024-03-16T15:24:04Z")

</div>

Static is nice but has far less value as a teaching tool. I think I’ll explore lightly how it works, but I won’t use it until it’s more affordable for academic use.

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/224680_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [March 17, 2024, 6:59am UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/15 "2024-03-17T06:59:01Z")

</div>

This looks great! Any noteworthy difference between the static export and what can be achieved with a GitHub action?

> **[GitHub - JuliaPluto/static-export-template: A template to automatically...](https://github.com/JuliaPluto/static-export-template)**
>
> A template to automatically convert Pluto notebooks to an HTML website with GitHub Pages. Demo page: - JuliaPluto/static-export-template

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [March 17, 2024, 1:54pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/16 "2024-03-17T13:54:02Z")

</div>

This looks great @Dale_James_Black ! Congratulations! 👏 Is it already possible to deploy private repositories, and hide code from end-users? We would love to be one of your first enterprise customers.

---

<div class="post-metadata">

**Author:** ![ctrekker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ctrekker/32/49676_2.png) [@ctrekker](https://discourse.julialang.org/u/ctrekker)\
**Post date:** [March 17, 2024, 5:46pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/17 "2024-03-17T17:46:31Z")

</div>

At its core, static exports via GH actions are similar. As it stands currently there are two differences:

1. Statically exported repositories can be private (but still hosted online for your own viewing) at no cost with Glass Notebook. As I understand it, GH actions are not free for private repositories, and GH pages doesn’t do authentication (for non-enterprise users)
2. Repository-level navigation features (like a sidebar for navigating between notebooks)

Regarding (2), this is in principle possible to do with GH actions but isn’t super well-supported and takes some extra work beyond what is supported by default in the static-export-template.

---

<div class="post-metadata">

**Author:** ![Dale\_James\_Black](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dale_james_black/32/11595_2.png) [@Dale\_James\_Black](https://discourse.julialang.org/u/Dale_James_Black)\
**Post date:** [March 17, 2024, 6:05pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/18 "2024-03-17T18:05:39Z")

</div>

Thank you! We are a fully integrated GitHub application so your private GitHub repositories can be linked to [glassnotebook.io](http://glassnotebook.io) and you can export the repositories on [glassnotebook.io](http://glassnotebook.io) to a private URL. So if we don’t already have exactly what you need, we should be very close!

Connor and I will message you on Zulip!

---

<div class="post-metadata">

**Author:** ![bikeman88](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bikeman88/32/209699_2.png) [@bikeman88](https://discourse.julialang.org/u/bikeman88)\
**Post date:** [June 4, 2024, 11:55am UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/19 "2024-06-04T11:55:30Z")

</div>

I was able to link my Github repositories (and also [GitHub - Dale-Black/ComputerVisionTutorials.jl](https://github.com/Dale-Black/ComputerVisionTutorials.jl)) and publish them in Glass notebook, but when I try to open one of the files, I get a message saying “Notebook not found”. Do you have any suggestions?

 ![Screenshot 2024-06-04 at 7.58.52 AM](https://global.discourse-cdn.com/julialang/original/3X/7/7/779d423673315130eb0244799bd557d38934c5dd.png)

---

<div class="post-metadata">

**Author:** ![Dale\_James\_Black](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dale_james_black/32/11595_2.png) [@Dale\_James\_Black](https://discourse.julialang.org/u/Dale_James_Black)\
**Post date:** [June 4, 2024, 4:29pm UTC](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801/20 "2024-06-04T16:29:29Z")

</div>

Hi! I am not quite sure what exactly is causing that “Notebook not found” error. When I go to the ComputerVisionTutorials.jl documentation I do not see that:

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

Can you try refreshing your browser and potentially clearing the browser cache if that doesn’t work? Feel free to message me directly on here or DM me on the JuliaLang Zulip too. I am happy to help

[Next page](https://discourse.julialang.org/t/publish-interactive-pluto-notebooks-with-glassnotebook-io/102801.md?page=2)
