Story

Show HN: WASM-powered codespaces for Python notebooks on GitHub

mscolnick Tuesday, January 14, 2025

Hi HN!

Last year, we shared marimo [1], an open-source reactive notebook for Python with support for execution through WebAssembly [2].

We wanted to share something new: you can now run marimo and Jupyter notebooks directly from GitHub in a Wasm-powered, codespace-like environment. What makes this powerful is that we mount the GitHub repository's contents as a filesystem in the notebook, making it really easy to share notebooks with data.

All you need to do is prepend 'marimo.app' to any Python notebook on GitHub. Some examples:

- Jupyter Notebook: https://marimo.app/github.com/jakevdp/PythonDataScienceHandb...

- marimo notebook: https://marimo.app/github.com/marimo-team/marimo/blob/07e8d1...

Jupyter notebooks are automatically converted into marimo notebooks using basic static analysis and source code transformations. Our conversion logic assumes the notebook was meant to be run top-down, which is usually but not always true [3]. It can convert many notebooks, but there are still some edge cases.

We implemented the filesystem mount using our own FUSE-like adapter that links the GitHub repository’s contents to the Python filesystem, leveraging Emscripten’s filesystem API. The file tree is loaded on startup to avoid waterfall requests when reading many directories deep, but loading the file contents is lazy. For example, when you write Python that looks like

```python

with open("./data/cars.csv") as f: print(f.read())

# or

import pandas as pd pd.read_csv("./data/cars.csv")

```

behind the scenes, you make a request [4] to https://raw.githubusercontent.com/<org>/<repo>/main/data/car....

Docs: https://docs.marimo.io/guides/publishing/playground/#open-no...

[1] https://github.com/marimo-team/marimo

[2] https://news.ycombinator.com/item?id=39552882

[3] https://blog.jetbrains.com/datalore/2020/12/17/we-downloaded...

[4] We technically proxy it through the playground https://marimo.app to fix CORS issues and GitHub rate-limiting.

Summary
The article provides a guide on using Marimo's Playground feature to publish content. It covers the setup process, including creating a Marimo account and configuring the Playground, as well as the steps involved in publishing content through the Playground.
204 27
Summary
docs.marimo.io
Visit article Read on Hacker News Comments 27