Nathaniel Brown's

Trick To Keep Jupyter Always Running In The Background On MacOS

Written July 08, 2017

TL;DR: Run curl -L -A "Install Jupyter" http://bit.ly/2sBxOGT | bash for jupyter lab or curl -L -A "Install Jupyter" http://bit.ly/2tY56U3 | bash for jupyter notebook.

Motivation

If you use the jupyter notebook or jupyter lab daily there is no reason you should have to start the server every time you want to use jupyter. You can use a launchagent to automatically start a background jupyter process when you login. Add a bookmark and jupyter lab is always just one click away in your web browser.

Method

Launch agents are controlled with .plist files in a couple different locations. .plist files for a user's launch agents are stored in ~/Library/LaunchAgents/. There are other locations for system agents and things. I found the easiest way to learn about launch agents and launch daemons is to download LaunchControl and mess around. You can cross reference the more readable GUI representations in LaunchControl with the .plist files. Launch agents are similar to launch daemons except the run at login rather than on boot.

Installation

You can either use the jupyter notebook or jupyter lab, just make sure you have whichever you want to use installed (i.e pip install -U jupyterlab).

Open up Terminal and run curl -L -A "Install Jupyter" http://bit.ly/2sBxOGT | bash. If you don't want to run a random script (and you really shouldn't) go ahead and read it first at http://bit.ly/2sBxOGT or below. If you want jupyter and not jupyter lab, run this curl -L -A "Install Jupyter" http://bit.ly/2tY56U3 | bash.

When you run this script you will have to enter a password that you will use to access jupyter lab. This is hashed before it is stored.

The script should open a web browser to jupyter, but you can also get there by going here for jupyter lab or here for jupyter notebook. I'd go ahead and bookmark that before you forget what port I chose.

The script (jupyter lab version)

Modifications

You may want to tweak your configuration, and this is easy enough. Just edit the .plist file with open ~/Library/LaunchAgents/com.$(whoami).jupyterlab.plist. This should open it in either TextEdit or LaunchControl if LaunchControl is installed. You can reload the LaunchAgent with launchctl unload ~/Library/LaunchAgents/com.$(whoami).jupyterlab.plist and then launchctl load ~/Library/LaunchAgents/com.$(whoami).jupyterlab.plist. If you are using notebook rather than lab, sub "notebook" for "lab."

Things you might want to change:

Run jupyter instead of jupyter lab

Remove the line <string>lab</string>. I've created a script that does this, as described above.

Change the starting directory

I set the root jupyter directory to my root directory so that I can browse anywhere (jupyter does not let you browse higher than where it is started). You might want to change this. Edit the line <string>--notebook-dir=/</string>, replacing / with your preferred path.

Change the port

Maybe you are already using port 8002 for something else. You can change the port by editing this line <string>8002</string>.

Conclusion

That's it! Hope you find this useful, if you had any issues with the script, please comment and I'll update it.