Skip to content
πŸ“˜ The interactive computing suite for you! ✨
TypeScript Jupyter Notebook Python JavaScript CSS HTML Other
Branch: master
Clone or download
Latest commit ce9e1a0 Nov 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Update circleci/python Docker tag to v3.7.3 Mar 29, 2019
.github Create FUNDING.yml Nov 13, 2019
.vscode add plugin for styled-components Jan 20, 2019
applications Address review comments Nov 17, 2019
nteract-packages Add README to nteract-packages directory Sep 2, 2019
packages remove unused imports and code Nov 17, 2019
scripts Add initial support for ipywidget rendering Oct 23, 2019
styleguide-components Add back introduction in styleguide-components folder Oct 16, 2019
styleguide semi-automate deployment of style guide May 31, 2018
types [testing] Update NodeJS Global Types for test-shim.ts Oct 5, 2019
.eslintignore Depreacate @nteract/gatsby-transformer-ipynb package Jan 18, 2019
.gitattributes chore: normalize line endings Dec 11, 2016
.gitignore ignore notebooks in the desktop folder in dev Nov 17, 2019
.npmignore Use yarn Apr 30, 2017
.pre-commit-config.yaml add auto lint jupyter-extension Feb 1, 2019
.prettierignore Reorganize applications and packages (#2149) Dec 14, 2017
.prettierrc create a prettierrc Mar 29, 2018 noting jext support for Python < 3.6 Sep 10, 2018 Update Sep 4, 2018 Add docs on NodeJS LTS version Jan 18, 2019
LICENSE fix attribution clause Dec 16, 2017 Add Microsoft logo to README Nov 13, 2019 Update Apr 15, 2019 Fix #4547: Allow naming new notebooks from CLI Sep 13, 2019
azure-pipelines.yml disable testing on azure Jan 29, 2019
babel.config.js Fix test config for Vega tests Oct 24, 2019
codecov.yml Disable codecov being required to pass Oct 5, 2017
lerna.json lerna version in lerna.json is no longer necessary Sep 7, 2018
package.json Update dependency react-notification-system to ^0.3.0 Nov 15, 2019
renovate.json remove lockfile maintenance Aug 7, 2018
styleguide.config.js Add back introduction in styleguide-components folder Oct 16, 2019
tsconfig.base.json add plugin for styled-components Jan 20, 2019
tsconfig.jest.json clean up some of the old tests Jan 7, 2019
tsconfig.json Bring back chunks for jext's ts-loader Jan 30, 2019
tslint.json remove excessively protective tslint typedef rules Jan 31, 2019
typedoc.js Upgrade to now v2 for package docs Sep 2, 2019
yarn.lock Merge pull request #4710 from nteract/safia/upgrade-deprecated-pkg Nov 17, 2019

nteract nteract animated logo slack in lerna Azure Pipelines CI status Circle CI status

|| Basics β€’ Users || Contributors β€’ Development β€’ Maintainers || Sponsors β€’ Made possible by ||


nteract is first and foremost a dynamic ecosystem to give you flexibility when writing code, exploring data, and authoring text to share insights about the data.

Build your own interactive computing experiences with nteract's core SDK.

The nteract core SDK is an ecosystem of React components and JavaScript packages that give you the flexibility to build your own interactive computing experiences on top of the Jupyter ecosystem.

Edit code, write prose, and visualize with nteract's applications.

We support Jupyter kernels locally on your system and on remote JupyterHubs via Binder.

Using nteract's applications

Installing the nteract desktop application

If you're here to install the nteract desktop app, visit to download a binary and install or visit the releases page. The nteract desktop app ships with a NodeJS kernel by default. If you'd like to use other Jupyter kernels, you will need to install them.

Installing nteract web

Our current flavor of nteract web runs on top of the Jupyter server. Install it with pip:

pip install nteract_on_jupyter
jupyter serverextension enable nteract_on_jupyter

Now, run jupyter nteract and you're running nteract on the Jupyter web application!

Try the nteract playground

The nteract playground is a web-based application that allows you to write code and execute code in a web-based editor supported by Binder and Jupyter kernels. You can learn more about in the nteract play GitHub repo.

User Guide

To learn more about using the nteract desktop app, please check out the user guide


The contributors are listed in the contributors page on GitHub.

To learn how to contribute to nteract, head on over to our contributing guide.

This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to

Feel free to post issues on GitHub or chat with us in Slack (request an invite) if you need help or have questions. If you have trouble creating an account on Slack, please post an issue on GitHub.


Overview of nteract's monorepo

This repository is a monorepo, which basically means that the repository hosts more than one module or application. In our case, we have two main directories:

packages/ -- components used as an individual library
applications/ -- all the user facing applications (i.e. desktop)

The packages directory has the components needed to build new applications, and the applications has the desktop app and the Jupyter extension.

Why have a monorepo? The monorepo contains many components and packages that can be mixed and remixed to create new applications. The monorepo keeps these elements together so they are easy to discover and use. Another benefit is that the monorepo makes it easy to iterate on applications that share common components. For example, if we update a component, such as the Jupyter message handling, and happen to introduce an issue when making a change to the desktop app, we would notice the issue in tandem.

Getting Started

To get started developing, set up the nteract monorepo.

Set the monorepo up in dev mode

Requires Node.js and yarn.

  1. Fork this repo
  2. Clone your fork or this repo git clone
  3. cd to the directory where you cloned it
  4. yarn install

To keep up-to-date with changes to the root nteract/nteract branch:

  1. Set the root as a remote: git remote add upstream

When changes are made to the root nteract/nteract, they can then be pulled from the root and merged to your master branch:

  1. git pull upstream master
  2. yarn clean
  3. yarn install

Building a specific package

In some cases you'll want to modify an individual base package (i.e. commutable or transforms) and not rebuild all of the other packages. To target a build of a specific package, use this command, replacing packageName with the fully qualified name of the package you want to build:

tsc -b packageName

For example, to hack on the transforms package, use

tsc -b packages/transforms

Hacking on the web application

If you're looking to test out changes you make to the core SDK, the web application is the best integrated environment to test on. You can run the web application in development mode, by configuring the Jupyter extension to run in development mode.

Hacking on the desktop application

Quick and dirty (manual)

yarn app:desktop

As you make changes, you will have to close the entire app (CMD-q on macOS or CTRL-c at the terminal) and then run yarn app:desktop again to see the changes.

Progressive Webpack build (automatic)

In separate terminals run:

yarn build:desktop:watch


yarn spawn

This progressive webpack build will keep rebuilding as you modify the source code. When you open a new notebook, you'll get the fresh, up-to-date copy of the notebook app.


console.log statements in the main Electron process are piped to stdout. console.log statements in the Electron renderer process go to the regular Dev Tools console (accessible from the View menu). Set ELECTRON_ENABLE_LOGGING=1 to pipe renderer console.log to the launching terminal as well. This is useful for debugging crashes and notebook closing behaviors.


I upgraded my developer installation and things are broken!

  • Try yarn clean && yarn

I want to debug redux actions and state changes.

  • Enable redux-logger by spawning the application with yarn spawn:debug.

I keep getting a pop-up asking: Do you want the application "nteract" to accept incoming network connections? while developing or using a custom build of nteract on macOS.

  • This is how the the macOS firewall behaves for unsigned apps. On a signed app, the dialog won't show up again after approving it the first time. If you're using a custom build of nteract, run:

    sudo codesign --force --deep --sign - /Applications/

    You will have to do this again every time you rebuild the app.


Work on the nteract notebook is currently sponsored by


We're on a common mission to build a great interactive computing experience. You can help by:

  • QAing the desktop application and helping create meaningful bug reports
  • Providing support on GitHub issues or the Slack team
  • Donating money to nteract, which is a non-profit fiscally sponsored by NumFOCUS
  • Contributing your organization's engineering hours to the nteract project

Made possible by

The nteract project was made possible with the support of

Netflix OSS


If your employer allows you to work on nteract during the day and would like recognition, feel free to add them to this "Made possible by" list.

|| Basics β€’ Users || Contributors β€’ Development β€’ Maintainers || Sponsors β€’ Made possible by ||

You can’t perform that action at this time.