Skip to content
An experimental tool that stores and visualizes local versioning in JupyterLab
Jupyter Notebook TypeScript Python CSS
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
design Merge pull request #33 from mkery/modelUpdate Mar 11, 2019
src updating to JupyterLab 1.1.3 Oct 10, 2019
style working on ghost book refining May 5, 2019
tests working on notebook server extension for parser Jan 16, 2019
.DS_Store working on refactoring history run flow Nov 6, 2018
.gitignore updating gitignore to ignore tests Jul 17, 2018 Create Aug 4, 2018
LICENSE Update May 7, 2019
package-lock.json updating to JupyterLab 1.1.3 Oct 10, 2019
package.json updating to JupyterLab 1.1.3 Oct 10, 2019
tsconfig.json working on matching model Jul 5, 2018


code style: prettier

🌱🌿🌱 Verdant is a JupyterLab extension that automatically records history of all experiments you run in a Jupyter notebook, and stores them in a tidy .ipyhistory JSON file designed to be work alongside and compliment any other version control you use, like SVN or Git. Verdant also visualizes history of individual cells, code snippets, markdown, and outputs for you, for quick checks and references as you work.

[Demo preview video] Verdant demo Figure description:

The history tab opens the sidebar for Verdant containing three tabs: Activity (A), Artifacts (B), and Search (C). The Activity tab, shown open here, displays a list of events. A date (D) can be opened or collapsed to see what happened that day. Each row shows a version of the notebook (e.g. version #53) with a text description and visual minimap. Thee minimap shows cells added in green (see G) and deleted in red (F). In (E), a cell was edited and run (in blue), and the following cells were run but remained the same (in grey). The user can open any version (e.g., #53, H) in a ghost notebook tab for quick reference.

For design discussion and the research behind this check out our paper:

Mary Beth Kery, Bonnie E. John, Patrick O’Flaherty, Amber Horvath, and Brad A. Myers. 2019. Towards Effective Foraging by Data Scientists to Find Past Analysis Choices. In Proceedings of ACM SIGCHI, Glasgow, UK, May 2019 (CHI’19), 11 pages. DOI: 10.475/123 4


  • JupyterLab

Development Install

For a development install, do the following in the repository directory:

pip install lilgit-parser
jupyter serverextension enable --py lilgit_parser
jupyter serverextension list

This should ensure that the server-extension parser part of Verdant is installed. Next:

npm install
npm run build
jupyter labextension link .

The last line builds JupyterLab and may take a minute. Now, run JupyterLab app to check if Verdant is working:

jupyter lab .

If you make modifications to the Verdant source code, you'll need to rebuild the package and the JupyterLab app:

npm run build
jupyter lab build

If you plan on making lots of edits to Verdant, extension building is easier if you use:

jupyter lab --watch

and then each time you make a change, you'll only have to re-run:

npm run build


This research has been funded by Bloomberg L.P. and has been conducted at the Bloomberg L.P. and at the Natural Programming Group at the Human-Computer Interaction Institute at Carnegie Mellon University. Thank you to the JupyterLab project and also to all our awesome study participants for volunteering early design feedback!

You can’t perform that action at this time.