Changelog
We've updated the grader service (server-side application and JupyterLab extension) from 0.8 to
the latest version 0.12.
There are no breaking changes, and no data is lost.
Since we want to keep the grader service up-to-date, there will be more frequent updates, especially to fix
bugs.
If you are providing a custom Docker image, you can enable the package installation option on the profile
creation and edit pages.
The grader service packages are automatically installed before starting JupyterLab.
This way, you don't have to maintain the grader service package.
However, starting the profile will take a few seconds longer.
Due to the start of the cost-sharing model on April 1st,
only users of participating universities are
allowed to access and use bwJupyter.
Although users of non-participating universities might be able to use bwIDM to log in, they can no longer
access their data or run profiles. An error page is shown instead.
A frequently updated list of participating universities can be found at
https://www.bwjupyter.de/185.php.
Due to an update regarding the state-wide MATLAB license, only universities that are participaitng from now
on in the state-wide MATLAB license are allowed to run the profile bwJupyter - MATLAB.
This also affects custom MATLAB Docker images that are currently using KIT's license server because we have
to block any network connections towards the license server for non-participating universities.
Lecturers can now provide a Git repository that will be automatically cloned when the profile starts.
We are using
nbgitpuller
to always pull the latest changes:
If new files are pushed to the repository, they will be pulled. If the same file has been changed locally
and in the Git repository, nbgitpuller resolves the conflict by copying the student's file to avoid data
loss.
The repository is located in the directory
__repository.
Please note that, since the directory is bound to a profile,
the directory will be deleted for every user
after the profile is deleted.
Starting from now on, we will deprovision users who lost access to bwIDM or have been inactive for over a
year.
All the files in their personal home directory will be deleted.
Please take a look at our website at https://www.bwjupyter.de/197.php to find more
information.
We've added a new profile option for profiles using the Grader service or RTC with groups. The new option
automatically installs the Python packages required by the features to work.
Before, the lecturer was responsible for including the packages by using a custom Docker image. If the new
option is enabled, the necessary packages will be automatically installed.
The automatic package installation works for all JupyterLab base profiles and
should also work for
custom Docker images running JupyterLab.
If you experience any issues with the new option, please let us know (
support@bwjupyter.de).
Due to the latest KI-Toolbox update, the profile
bwJupyter - Jupyter AI received an update
regarding the following model:
Following requests from several lecturers, we are finally able to present the
student impersonation
feature!
Using the button "Impersonate student" in the navigation bar, lecturers can not only simulate but
impersonate a student.
After re-logging, a JupyterHub student account, namely
stud-<lecturer account>, is
assigned to the lecturer.
This way, lecturers can
really see how students experience bwJupyter.
Please refer to bwJupyter's
documentation for more
information.
Starting from now on, we will deprovision expired profiles.
According to the end dates of profiles, all the related profile information, including shared files and
groups, will be permanently deleted.
Please take a look at our website at https://www.bwjupyter.de/197.php to find more
information.
Due to upcoming deprovisioning mechanisms for profiles in the next couple of weeks, we standardize the end
date of custom profiles:
Instead of selecting an end date up to one year ahead, the end date will be automatically computed to match
the next semester end one year ahead. For example:
- Creating a profile at
10. February 2026 will result in an end date of
31. March 2027.
- Creating a profile at
27. August 2026 will result in an end date of
30. September 2027.
- Creating a profile at
13. December 2026 will result in an end date of
31. March 2028.
The end dates of existing profiles will be adjusted to align with semester's end of the currently set end
date.
The profile's end date can be displayed by hovering over the info icon on the page "Profile Selection".
Over the last couple of days, we partially observed failing spawns of profiles that were using the Grader
service.
The Grader service could not handle the login request we sent on each profile start due to a database lock
of the internal SQLite database.
To prevent future database locks, we migrated the database from SQLite to PostgreSQL.
With the latest update, we have enhanced the user management for lecturers:
During the profile creation, lecturers can now configure
restricted access to the profile.
With this option enabled, only users from the same university as the profile owner will be able to access
the profile via the shared link.
In addition, lecturers can
list all collaborators and users who accessed the profile in a table,
showing the name, email address, JupyterHub username, and profile role.
To view the list, lecturers have to click on the
View link on the respective profile card.
The KI-Toolbox is an AI service provided by the Karlsruhe Institute of Technology (KIT) that gives employees
access to LLMs.
With the release of the KI-Toolbox, we replace the GWDG LLMs with models provided by KI-Toolbox.
Thus, we can guarantee that prompts are only processed on KIT servers.
Similar to GWDG, KI-Toolbox runs self-hosted LLMs that can be selected:
Due to funding reasons, non-KIT members can only use the KI-Toolbox models only for testing and
demonstration
purposes, with limited resources, similar to the previous GWDG models.
If your university also provides access to LLMs but you don't know how to configure them in bwJupyter,
please email us at
support@bwjupyter.de.
If you are running LLMs for your university, please send us an email to check if it's possible to integrate
them natively into bwJupyter, similar to the KI-Toolbox for KIT members.
We will remove the GWDG integration on December 22.
If you still want to use GWDG models, you have to register for GWDG's AI services to obtain an API key.
The necessary steps are explained in the
GWDG documentation.
We fixed two bugs regarding the auto-grading of submissions:
- The auto-grader has now read-only access to the profile's shared directory. Thus, the shared
directory can be used in solutions and tests.
- If the profile requires an image pull secret, it will now be properly passed to the auto-grader.
We developed a new feature for custom profiles that allows
groups of students to work together on the
same notebooks in real time.
Lecturers can enable this feature during profile creation and editing.
A short breakdown of the new feature:
- Students must be part of a group before starting the profile.
- Students can be added to another student's group or can create their own group.
- The personal directories are not accessible. Students are using a shared file system instead.
- Profile owners and collaborators can start the profile "as a user" to share files, give feedback on
submissions, and use the Grader service as usual.
You can find more detailed documentation, including screenshots, in our
documentation.
By default, every custom profile has a shared directory called __shared. The profile owner and
collaborators have write access to it, while the students can only view the files.
With this update, lecturers can enable dedicated shared directories for collaborators.
The directory __collaborators is only visible to the profile owner and the collaborators.
Since the collaborators are a group of trusted users, they have write access to the directory.
Lecturers can already provide custom but publicly available Docker images.
With this improvement, lecturers can also provide private Docker images.
To use them, we need the
image pull secret, which consists of the registry name, username, password, and
email.
Please visit our
documentation to find more
information.
Thanks to a support request, we extended the pre-installed packages of the profile
bwJupyter - Julia.
Next to the already existing packages, we provide packages that cover:
- Machine learning (
Lux, MLJ)
- Visulizations (
Plots, Images)
- Transformations (
FFTW, Waveletes)
- Statistics (
StatsBase, Distributions)
- ...and more!
You can find a complete list of installed packages in our
documentation. In addition,
installed packages are no longer precompiled during first use, reducing execution time.
Migration: If you already have an existing profile based on bwJupyter - Julia, you can migrate to the
new version by editing your profile and switching from
Provide a custom Docker image to
Select Docker image from an existng profile to effectively re-select the Julia profile.
Since the CPUs in our cluster are not fully utilized yet, as shown in our utilization monitor, we are
increasing the granted CPU resources per user.
Thus, Jupyter notebooks that use CPU power to complete computations (e.g., solving a linear problem) will
execute faster!
We keep monitoring the CPU utilization and adjust the CPU resources accordingly.
However, it's most likely that we will grant even more CPU power instead of reducing it again.
Thanks to the AI services provided by GWDG, the profile
bwJupyter - Jupyter AI received an update
regarding the following models:
- Added Qwen 3
Coder 30B A3B Instruct
- Removed Codestral
- Added a new model alias
default-coding, which points to the latest recommended model
for coding
In cooperation with ZOERR, the central repository for OER of higher education in Baden-Wรผrttemberg, we
provide the new page
Open Educational Resources.
The page shows a collection of OERs that contain Jupyter Notebooks.
You can try and test the material - and if you are interested in using it, copy it directly into your
personal storage!
Due to a bug in our auto-grading setup, the grader service did not show any submitted files in the
submission view.
The files are not lost.
After manually triggering the auto-grading of a submission, the button "Pull submission" becomes active.
Clicking on it will download the submitted files.
With the new profile
bwJupyter - MATLAB, you can run MATLAB on the bwJupyter infrastructure.
Besides the MATLAB user interface, you can use MATLAB inside a Jupyter Notebook with the separate MATLAB
kernel.
Due to the state-wide MATLAB license, every bwJupyter user can access MATLAB without the need for a MATLAB
account or additional logins until
March 31, 2026.
In case of missing features or functionalities, please give us a feedback via
support@bwjupyter.de.
Thanks to the AI services provided by GWDG, the profile
bwJupyter - Jupyter AI received an update
regarding the following models:
We introduce a new profile category called Introduction Profiles. Compared to the other profiles, the
profiles does not include special packages but Jupyter notebooks instead. The overall goal is to provide
support material to ease the entry into the Jupyter ecosystem.
Therefore, the new profile Introduction to Jupyter Notebooks for Lecturers provides examples on how
to design, structure, and implement Jupyter notebooks for educational purposes.
Warning: The storage of introduction profiles is only
temporary and not persistent.
If you want to keep your changes, please copy the files into your personal directory
./personal.
Besides the already existing submission feature based on directories, we are now testing a dedicated
grader
service.
The grader service is
open-source and
actively developed by TU Wien.
Similar to nbgrader, Jupyter notebooks can be used to create gradable assignments.
Each submission is automatically graded, and the results (i.e., scored points) can be downloaded as a
CSV.
If you are interested in and want to test it out, create a new profile, and name the profile in a short
email to
support@bwjupyter.de.
We will enable the grader service for the profile and provide further instructions on how to use it.
The new profile
bwJupyter - RTC enables collaboration with multiple JupyterHub users in real-time.
Cell edits, text selection, and code execution are synchronized and visible to all members.
You can add members to the profile by clicking on the icon
, next to the
profile in the profile selection or on the page
Profile
Management.
If this feature is frequently used, we can extend real-time collaboration to other profiles as well as
profiles by lecturers.
To keep updated with the latest changes documented on the
News and
Changelog pages, an orange circle is
displayed next to the changed page.
Once you enter the page, the circle disappears.
Note that this information is only stored locally.
Thus, a new device will show the notification again.
Due to a bug, profiles created between May 26, 2025, and June 5, 2025, have a shared directory (i.e.,
__shared/) capacity of 2 GB instead of 10 GB.
This also affects the new directories __submission/ and __correction/ if the
submission feature is enabled.
With the applied bug fix, the wrongly applied quota of 2 GB is set to 10 GB.
Thanks to the
AI services by
GWDG, we provide a new profile called
bwJupyter - Jupyter AI.
The profile includes common data science packages for Python, Julia, and R, as well as a chatbot interface
called
Jupyter AI.
Get started by selecting the chat messages icon in the left sidebar, choose your model, and start chatting
with
Jupyternaut.
You can either use your own API key or use the pre-configured
bwJupyter :: [Model] models,
which are
listed at the bottom.
We enable submissions and corrections via shared directories.
Similar to the directory __shared, two additional directories can be used to submit notebooks
as a student and give feedback as a lecturer - without leaving bwJupyter.
Lecturers can enable submissions during the profile creation or by editing an already existing profile.
Please note that this temporary solution does not cover more complex use cases (e.g., deadlines).
In order to communicate changes regarding bwJupyter, we maintain two new pages, namely
News and
Changelog.
Both pages are part of JupyterHub and will be continuously updated.
So keep an eye on the pages to be informed about changes and new features!
Due to a support request, we provide a new profile called
bwJupyter - RStudio.
RStudio is a development environment for the programming language R.
Similar to the profile bwJupyter - R, common and frequently used R packages are already part of the new
profile.
Feel free to test the new profile and give us feedback at
support@bwjupyter.de.
We are providing a new profile called
bwJupyter - Octave (experimental). This profile includes
Octave, an open-source
alternative to Matlab. Some packages are already pre-installed (see our
documentation). Feel free to test the
new profile and give us feedback at
support@bwjupyter.de.
At the request of lecturers, we developed a feature that allows you to add multiple collaborators to a
profile. The collaborators can have write access to the shared folder just like the profile creator.
However, the properties of the profile cannot be changed.
After creating a profile, you can manage collaborators (i.e., lecturers and students). In the profile
overview, you will find the new item
Collaborators in each created profile. You can add and remove
collaborators using the
Manage... link.
We introduced a new monitoring overview so that every user can see the current utilization of the
infrastructure. In particular, you can see the current usage of the GPUs there.
You can find the overview on the page
Utilization Monitor.
Some users encountered an error when logging in. After successfully logging in with their university
account, these users were shown an error page with the error code 500. We have now fixed this error. If you
still encounter this issue, please write us an email at
support@bwjupyter.de.
A banner is displayed on every page of the JupyterHub in the event of malfunctions, maintenance, and other
announcements. The banner will be removed once maintenance has been completed or the problem has been
resolved.
The banner is only visible in the JupyterHub, not in the development environment used to run Jupyter
Notebooks.
We fixed the bug that prevented notebooks from being exported as PDFs. After all profiles have been
adjusted, notebooks can now be exported as PDFs via Select a notebook >> File >> Save and Export Notebook As >> PDF
.
The various profiles are no longer displayed as a long list. Instead, a card layout has been introduced to
make navigation and use much easier.
Profiles created by lecturers now have a standard duration of 6 months. This period can be increased to a
maximum of one year. We reserve the right to delete profiles and the shared folder's contents after the time
period has expired.
After a successful pilot phase at selected universities, bwJupyter is now officially available to every
lecturer and student in Baden-Wรผrttemberg. Manual activation is no longer necessary.