Pluto.jl

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.
reactivity screencap

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.

Unlike Jupyter or Matlab, there is no mutable workspace, but rather a one-to-one corresponce between variables and code. In a Pluto notebook, the value of a variable always corresponds to the code that defines 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!

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. You can also export your notebook with output as attractive HTML and PDF documents. By reordering cells and hiding code, you have full control over how you tell your story.

formatting screenshot

Let's do it!

Ingredients

For one tasty notebook 🥞 you will need:

  • Julia v1.0 or above
  • Linux, macOS or Windows, Linux and macOS will work best
  • Mozilla Firefox or Google Chrome, be sure to get the latest version

Installation

Run Julia and add the package:

julia> ]
(v1.0) pkg> add Pluto

Adding the first package to Julia can take up to 30 minutes - hang in there!

To run the notebook server:

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

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

Work remotely: You can also run Pluto on a server, and use the browser on your own computer as user interface. For this, you need to set up an SSH tunnel. First, log in to your server using SSH and start a Pluto server. Then open a local terminal on your own computer and type:

ssh user@ipaddress -LN 1234:localhost:1234

with user and ipaddress filled in accordingly. You can then go to http://localhost:1234/ on your own computer to get started! For more info and instructions for Windows, see this guide.

To developers: Follow these instructions to start working on the package.

plotting screencap

Note

We are happy to say that Pluto.jl is in a stable state, and we look forward to hearing what you think! 😊

feedback screencap

Questions? Have a look at the FAQ.

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