Juno Connect is a client app for Jupyter, an interactive cloud-based computational environment, where you can combine code execution, rich text, mathematics, plots and rich media. Juno Connect lets you use the same notebook editor you would find in Juno, but instead of running code on device it will use a remote Jupyter server (or cloud-computing service, such as CoCalc) as a computational backend. Juno Connect supports Dark Mode, Dynamic Type and split screen multitasking, and works beautifully with Apple’s Magic Keyboard and trackpad.
For issues connecting to servers running JupyterLab, see here: Connecting to JupyterLab 4.0 and later
Juno Connect is a client, so you can use all kernels and packages available on the Jupyter server you are connecting to.
You can either access your Jupyter server directly over HTTP/HTTPS, or by establishing an SSH tunnel with port forwarding. See these guides on how to configure your server and connect to it from your iPad or iPhone:
Alternatively, if you don’t want to go through the hassle of configuring your own server, you could use one of cloud-computing services that are based on Jupyter, such as CoCalc or Binder.
Unfortunately, Google Colaboratory is not supported in Juno Connect (yet). Meanwhile, it wouldn’t hurt to ping them through customer support, so that they know there is interest in Juno Connect integration. 😉
Juno Connect doesn’t support any JupyterLab specific features yet; however, all JupyterLab servers also include “classic” Jupyter Notebook as a fallback option, which Juno Connect works with perfectly. JupyterLab servers should be detected automatically in Juno Connect, redirecting to this “classic” interface — if your server keeps loading JupyterLab, try appending /tree
to your JupyterLab server URL.
If you are experiencing issues connecting Juno Connect to servers running JupyterLab version 4.0 and later, you will need to install the nbclassic
package. This package ensures Juno Connect can interface with JupyterLab 4.0+ by providing the classic Jupyter Notebook interface, while leveraging the same backend components:
pip install nbclassic
{SERVER_ADDRESS}
to {SERVER_ADDRESS}/nbclassic/tree
.Meanwhile, we are looking into supporting JupyterLab 4.0+ in a more seamless manner.
It’s hard to be sure for each and every case, but many users successfully got it to work by establishing a tunnel from the jump/gateway/proxy server to final destination first, and then connecting via tunnel to that gateway server. Something like this:
ssh -C -f -N -g -L [gateway machine port]:[target server ip]:[target server jupyter port] [username]@[target server ip]
You should be able to edit and delete servers by swiping rows in the servers list — this will reveal a menu with Edit and Delete options, as well as a Disconnect option if server has an active SSH tunnel connected.
Not yet, although we are working on this. Meanwhile, there is a workaround, even if somewhat involved: you can configure a connection to your server in the Secure ShellFish app, and use it to install a file provider, so that your server’s file system contents appear in the Files app . You will then be able to edit those files with any third-party text editor app on your device.
Notebook editor in Juno and Juno Connect responds to default Jupyter shortcuts on your hardware keyboard, and also allows configuring an additional binding to Control
, Option
or a few other key options, which will duplicate Esc
key and will let you enter command mode, for instance.
Both Juno and Juno Connect fully support Dynamic Type, which means they will adjust their UI according to system Text Size setting (Settings > Display & Brightness > Text Size). We are working on an app-specific setting for text size too, which will override the system one — this will be released in one of app’s updates.