Lightweight reactive notebooks for Julia ⚡ - welcome to Pluto!

Explore models and share results in a notebook that is

  • reactive - when changing a function or variable, Pluto automatically updates all affected cells.
  • lightweight - Pluto is written in pure Julia and is an installable package.
  • modern - responsive, intuitive user experience; beautiful exported documents; custom themes.

Input

The central idea is that Pluto notebooks are reactive, just like Observable notebooks, but using Julia instead of JavaScript. Cells can be placed in any order - our intelligent AST parser figures out the dependencies between them and takes care of execution. When you change a variable, Pluto automatically re-runs the cells that refer to it.

Output

Cell output is simple: one cell outputs one variable, which is displayed using the richest available formatter. We believe that this limitation actually makes programming easier!

Plotting is supported out-of-the-box!

Your notebooks are saved as pure Julia files, which you can then import as if you had been programming in a regular editor all along.

Installation

(To developers: follow these instructions to start working on the package.)

To add the package:

julia> using Pkg; Pkg.add(PackageSpec(url="https://github.com/fonsp/Pluto.jl"))

To run the notebook server:

julia> using Pluto
julia> Pluto.serve_notebook(1234)

Then go to http://localhost:1234/ to start coding!

Note

This package is still in its early days - go to the issue tracker to see what's up!

Let us know what you think! 😊

Created by Fons van der Plas and Mikołaj Bochenski. Inspired by Observable.