I’ve embraced a fun way of working with Jupyter, Tensorboard, and other local webservers.

Task: Launch Jupyter Lab

Before: Terminal
17.6s
Find terminal app
Type command to change directory
Type command to launch Jupyter
Wait for launch
After: Services
9.5s
Click menu bar
Start Jupyter
Click Open
Wait for launch

How?

I built a lightweight user interface that uses the operating system’s built-in “services” feature.

Most operating systems have built-in service management:

  • macOS has “launchd”. (You can see the services by running launchctl list.)
  • Most Linux distributions have “systemd”, which was inspired by launchd. (Run systemctl.)
  • Windows has offered services longer than either of those. (Open Task Manager.)

Services are heavily used by the operating system and apps, but most people don’t use them directly. Meanwhile, many scientific computing tools make you open a terminal and run a command to launch an app backend. Services are a perfect match for this use case; all that’s missing is good UI.

You could vibe-code your own version of this experience, or use Outer Loop. It’s a pretty lightweight set of features, since the operating system does the service management heavy-lifting.

To me, this flow just feels obviously better. Some overlapping reasons:

  1. Requiring a terminal filters out a subset of people, and it breaks my creative flow. For many people who need use computers for data analysis, it takes a lot of cognitive overhead to find the terminal app, “cd” to the correct folder, and remember which command to run.
  2. In terms of information input, this workflow takes on the same shape as projects. You type the command once into Outer Loop (or your own service creation app), then proceed to reuse it for the next few months, rather than having to repeat the command again and again.
  3. With a terminal, I always seem to have Jupyter / Tensorboard / local webservers hiding in a sea of tabs. I’m finally done fishing through tabs.

Hope you like it! Download the Mac app here.


Footnotes

For Jupyter specifically, VS Code has done a good job with their file-viewer approach, where the backend and frontend are just one thing. But that’s pretty specific to local file browsing. One nice thing about preserving the separation of frontends and backends is that is scales up naturally to running apps like Jupyter on remote servers.