diff --git a/nextGEMS_online.ipynb b/nextGEMS_online.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..8dc639d5b051009b444040ccaa91554281919ff8
--- /dev/null
+++ b/nextGEMS_online.ipynb
@@ -0,0 +1,143 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "id": "15009998-b0c6-4e21-a007-197eca142975",
+   "metadata": {},
+   "source": [
+    "### Getting started: nextGEMS online"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "id": "75824e6b-52c4-4acf-9b0b-60603eee1a2f",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import intake\n",
+    "from easygems import healpix as egh\n",
+    "import matplotlib.pyplot as plt"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "8c96543f-ce37-4fab-8c67-78f117bdbcad",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "cat = intake.open_catalog(\"https://data.nextgems-h2020.eu/online.yaml\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "66ef92b1-4b8e-485f-b45d-1d899ef00de3",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [
+    {
+     "data": {
+      "application/yaml": "online:\n  args:\n    path: https://data.nextgems-h2020.eu/online.yaml\n  description: ''\n  driver: intake.catalog.local.YAMLFileCatalog\n  metadata: {}\n",
+      "text/plain": [
+       "online:\n",
+       "  args:\n",
+       "    path: https://data.nextgems-h2020.eu/online.yaml\n",
+       "  description: ''\n",
+       "  driver: intake.catalog.local.YAMLFileCatalog\n",
+       "  metadata: {}\n"
+      ]
+     },
+     "metadata": {
+      "application/json": {
+       "root": "online"
+      }
+     },
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "cat"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "6a18cb64-3f0d-4551-a44a-05c4b3f9ab69",
+   "metadata": {
+    "tags": []
+   },
+   "outputs": [
+    {
+     "ename": "ValueError",
+     "evalue": "No plugins loaded for this entry: zarr\nA listing of installable plugins can be found at https://intake.readthedocs.io/en/latest/plugin-directory.html .",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
+      "Cell \u001b[0;32mIn[4], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m ds \u001b[38;5;241m=\u001b[39m \u001b[43mcat\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mICON\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mngc4008\u001b[49m(zoom\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m7\u001b[39m, time\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPT15M\u001b[39m\u001b[38;5;124m'\u001b[39m)\u001b[38;5;241m.\u001b[39mto_dask()\n",
+      "File \u001b[0;32m/jetfs/jupyterhub/alpha/envs/modelling/lib/python3.10/site-packages/intake/catalog/base.py:391\u001b[0m, in \u001b[0;36mCatalog.__getattr__\u001b[0;34m(self, item)\u001b[0m\n\u001b[1;32m    388\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m item\u001b[38;5;241m.\u001b[39mstartswith(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m_\u001b[39m\u001b[38;5;124m'\u001b[39m):\n\u001b[1;32m    389\u001b[0m     \u001b[38;5;66;03m# Fall back to __getitem__.\u001b[39;00m\n\u001b[1;32m    390\u001b[0m     \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 391\u001b[0m         \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43mitem\u001b[49m\u001b[43m]\u001b[49m  \u001b[38;5;66;03m# triggers reload_on_change\u001b[39;00m\n\u001b[1;32m    392\u001b[0m     \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m    393\u001b[0m         \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mAttributeError\u001b[39;00m(item) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01me\u001b[39;00m\n",
+      "File \u001b[0;32m/jetfs/jupyterhub/alpha/envs/modelling/lib/python3.10/site-packages/intake/catalog/base.py:436\u001b[0m, in \u001b[0;36mCatalog.__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m    427\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"Return a catalog entry by name.\u001b[39;00m\n\u001b[1;32m    428\u001b[0m \n\u001b[1;32m    429\u001b[0m \u001b[38;5;124;03mCan also use attribute syntax, like ``cat.entry_name``, or\u001b[39;00m\n\u001b[0;32m   (...)\u001b[0m\n\u001b[1;32m    432\u001b[0m \u001b[38;5;124;03mcat['name1', 'name2']\u001b[39;00m\n\u001b[1;32m    433\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m    434\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(key, \u001b[38;5;28mlist\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m key \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m:\n\u001b[1;32m    435\u001b[0m     \u001b[38;5;66;03m# triggers reload_on_change\u001b[39;00m\n\u001b[0;32m--> 436\u001b[0m     s \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_entry\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    437\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m s\u001b[38;5;241m.\u001b[39mcontainer \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mcatalog\u001b[39m\u001b[38;5;124m'\u001b[39m:\n\u001b[1;32m    438\u001b[0m         s\u001b[38;5;241m.\u001b[39mname \u001b[38;5;241m=\u001b[39m key\n",
+      "File \u001b[0;32m/jetfs/jupyterhub/alpha/envs/modelling/lib/python3.10/site-packages/intake/catalog/utils.py:45\u001b[0m, in \u001b[0;36mreload_on_change.<locals>.wrapper\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m     42\u001b[0m \u001b[38;5;129m@functools\u001b[39m\u001b[38;5;241m.\u001b[39mwraps(f)\n\u001b[1;32m     43\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mwrapper\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m     44\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreload()\n\u001b[0;32m---> 45\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mf\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
+      "File \u001b[0;32m/jetfs/jupyterhub/alpha/envs/modelling/lib/python3.10/site-packages/intake/catalog/base.py:323\u001b[0m, in \u001b[0;36mCatalog._get_entry\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m    321\u001b[0m ups \u001b[38;5;241m=\u001b[39m [up \u001b[38;5;28;01mfor\u001b[39;00m name, up \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39muser_parameters\u001b[38;5;241m.\u001b[39mitems() \u001b[38;5;28;01mif\u001b[39;00m name \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m up_names]\n\u001b[1;32m    322\u001b[0m entry\u001b[38;5;241m.\u001b[39m_user_parameters \u001b[38;5;241m=\u001b[39m ups \u001b[38;5;241m+\u001b[39m (entry\u001b[38;5;241m.\u001b[39m_user_parameters \u001b[38;5;129;01mor\u001b[39;00m [])\n\u001b[0;32m--> 323\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mentry\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n",
+      "File \u001b[0;32m/jetfs/jupyterhub/alpha/envs/modelling/lib/python3.10/site-packages/intake/catalog/entry.py:77\u001b[0m, in \u001b[0;36mCatalogEntry.__call__\u001b[0;34m(self, persist, **kwargs)\u001b[0m\n\u001b[1;32m     75\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mPersist value (\u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;124m) not understood\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;241m%\u001b[39m persist)\n\u001b[1;32m     76\u001b[0m persist \u001b[38;5;241m=\u001b[39m persist \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_pmode\n\u001b[0;32m---> 77\u001b[0m s \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m     78\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m persist \u001b[38;5;241m!=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mnever\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(s, PersistMixin) \u001b[38;5;129;01mand\u001b[39;00m s\u001b[38;5;241m.\u001b[39mhas_been_persisted:\n\u001b[1;32m     79\u001b[0m     \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcontainer\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpersist\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m store\n",
+      "File \u001b[0;32m/jetfs/jupyterhub/alpha/envs/modelling/lib/python3.10/site-packages/intake/catalog/local.py:289\u001b[0m, in \u001b[0;36mLocalCatalogEntry.get\u001b[0;34m(self, **user_parameters)\u001b[0m\n\u001b[1;32m    286\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m user_parameters \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_default_source \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m    287\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_default_source\n\u001b[0;32m--> 289\u001b[0m plugin, open_args \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_create_open_args\u001b[49m\u001b[43m(\u001b[49m\u001b[43muser_parameters\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m    290\u001b[0m data_source \u001b[38;5;241m=\u001b[39m plugin(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mopen_args)\n\u001b[1;32m    291\u001b[0m data_source\u001b[38;5;241m.\u001b[39mcatalog_object \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_catalog\n",
+      "File \u001b[0;32m/jetfs/jupyterhub/alpha/envs/modelling/lib/python3.10/site-packages/intake/catalog/local.py:263\u001b[0m, in \u001b[0;36mLocalCatalogEntry._create_open_args\u001b[0;34m(self, user_parameters)\u001b[0m\n\u001b[1;32m    258\u001b[0m open_args \u001b[38;5;241m=\u001b[39m merge_pars(params, user_parameters, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_user_parameters,\n\u001b[1;32m    259\u001b[0m                        getshell\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgetshell, getenv\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mgetenv,\n\u001b[1;32m    260\u001b[0m                        client\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[1;32m    262\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_plugin) \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m0\u001b[39m:\n\u001b[0;32m--> 263\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mNo plugins loaded for this entry: \u001b[39m\u001b[38;5;132;01m%s\u001b[39;00m\u001b[38;5;130;01m\\n\u001b[39;00m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m    264\u001b[0m                      \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mA listing of installable plugins can be found \u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m    265\u001b[0m                      \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mat https://intake.readthedocs.io/en/latest/plugin\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m    266\u001b[0m                      \u001b[38;5;124m'\u001b[39m\u001b[38;5;124m-directory.html .\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m    267\u001b[0m                      \u001b[38;5;241m%\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_driver)\n\u001b[1;32m    268\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_plugin, \u001b[38;5;28mlist\u001b[39m):\n\u001b[1;32m    269\u001b[0m     plugin \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_plugin[\u001b[38;5;241m0\u001b[39m]\n",
+      "\u001b[0;31mValueError\u001b[0m: No plugins loaded for this entry: zarr\nA listing of installable plugins can be found at https://intake.readthedocs.io/en/latest/plugin-directory.html ."
+     ]
+    }
+   ],
+   "source": [
+    "ds = cat.ICON.ngc4008(zoom=7, time='PT15M').to_dask()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "c5abc468-6a16-4917-a7d8-8ce8d43413d1",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "ds"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "id": "ce4c9b8e-16b7-495c-8f94-5d02c331a330",
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "timeslice = ds.tas.sel(time='2024-11-11T11:11:00', method='nearest')\n",
+    "\n",
+    "egh.healpix_show(timeslice, cmap='inferno')\n",
+    "plt.title(f\"tas at {str(timeslice.time.values)[:16]}\")"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Modelling",
+   "language": "python",
+   "name": "modelling"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.10.6"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}