Vellum and Jupyter.
Both mix prose, code and outputs. Jupyter runs code in kernels on a computer or server; Vellum runs it in your browser, inside your pages.
At a glance
| Vellum | Jupyter (Notebook, JupyterLab) | |
|---|---|---|
| Where code runs | In the browser, on your device (WebAssembly), sandboxed | In a kernel process on your computer or a server |
| Setup | None: open a web page | Install Python and Jupyter, or use a hosted service |
| Languages | 25 built in, each downloaded on first use | Any language with a kernel you install |
| Packages | Python’s scientific stack built in; pure-Python packages from PyPI with your permission | Anything pip or conda can install, including native code and GPU libraries |
| Performance | Good for analysis and teaching; limited by the browser’s memory and no GPU access | Native speed, large memory, GPUs |
| File format | Markdown pages with fenced code; opens and exports .ipynb | .ipynb (JSON) |
| Around the code | A full workspace around the code: pages, links, tags, files, search, an on-device assistant | Notebooks and a file browser; extensions add more |
| Collaboration | Single user; encrypted sync between your devices; share runnable .html files | Multi-user with JupyterHub or hosted services |
| Cost | Free, no account | Free and open source; hosted services vary |
When to choose which
Choose Jupyter for heavy computation, GPUs, native packages, large datasets, or shared servers for a team. JupyterLite also runs some kernels in the browser, without the pages around them.
Choose Vellum when code is part of your pages: analyses next to the reading and writing they belong to, 25 languages with no setup, work that must stay on the device, or notebooks you want to send as one file anyone can run.
They work together: import .ipynb files into Vellum with their outputs, and export any page back to .ipynb.